• java面试题


    1、线程、进程、多线程、线程池

    • 线程:线程是指进程中的一个单独的执行路径,不能单独存在,必须包含在进程中,是进程中的实际运作单位,是操作系统能够进行运算调度的基本单元。
    • 进程:是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配(处理机个数,内存等资源)的基本单元。一个进程可以包含多个线程,每个线程都可以并行执行不同的任务。
    • 多线程:是指在同一时间内运行多个线程来完成多个任务。多线程提高程序的性能和响应速度。但是增加了代码的复杂性,同时需要考虑线程安全和死锁等问题。
    • 线程池:是一组预先创建的线程,它们可以被重复使用来执行多个任务。使用线程池可以避免在创建和销毁线程时产生额外的开销,从而提高程序的性能。Java中提供了 Executor 框架来实现线程池。

    2、Java集合中List,Map和Set三者的特点以及区别

    List,Map和Set三者的特点

    • List , Set, Map都是接口,List和Set继承至Collection接口,Map为独立接口
    • List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;

    1.List
    特点:List中存储的数据是有顺序的,并且值允许重复;

    2.Map
    特点:
    1.Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的。
    2.Map和Collection没有继承关系。

    3.Set
    特点:Set中存储的数据是无顺序的,并且不允许重复。

    3、讲一下Java内存回收机制

    Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收垃圾(无任何对象引用的对象)

    4、虚拟机和docker什么区别

    1、docker(开源的应用容器引擎)启动快速属于秒级别,而虚拟机通常需要几分钟去启动;
    2、性能损耗不同,docker需要的资源更少;
    3、隔离性不同,docker属于进程之间的隔离,隔离性较弱,而虚拟机可以实现系统级别的隔离。

    5、Java里integer和int区别是什么?

    1.Integer是int的包装类,int是基本类型。
    2.Integer变量必须实例化后才能使用,而int不需要。
    3.Integer是对象的引用,而int是直接存储数值。
    4.Integer默认值是null,而int默认值是0

    6、integer和int是否可以相互赋值?

    能,这是java本身实现的,自动拆箱,装箱的过程也就是自动转换

    7、Java里面有一些访问修饰符吗?然后你说一下有哪几个?然后分别有什么作用?它们的区别是什么?

    • public:public是最为宽松的访问修饰符,用于修饰的成员可以被同一包中的所有类、其他包中的所有类和所有子类所访问。
    • protected:protected修饰符用于修饰类的成员,只有在同一包中的类或其他包中的子类可以访问它,其他类不能访问。
    • private:private是最为严格的访问修饰符,只有在同一类中才能访问该成员,其他类都无法访问。
    • default(也称为包访问权限):当一个类、变量、方法或构造函数没有任何修饰符时,即使用default修饰符。默认访问级别仅适用于同一包中的所有类。

    8、Java中的限制访问范围的关键字有?

    • final关键字:final表示不可更改的、终态的,一旦final修饰的变量被初始化赋值,就无法再更改它的值,final也可以修饰类、方法和参数,表示它们不能被继承、覆盖和改变。
    • abstract关键字:abstract表示抽象的、未实现的,一般用于修饰类和方法。抽象类是不能被实例化的,只能用来继承和派生子类,其中的抽象方法必须在子类中被重写实现。
    • static关键字:static表示静态的、不变的,可以修饰成员变量、方法和代码块。静态变量属于类而非对象,只有一个副本,而且在类加载时就已经初始化,静态方法不需要实例化对象就可以调用,静态代码块在类加载时执行。
    • synchronized关键字:synchronized表示同步的、线程安全的,可以修饰方法和代码块。它可以保证在同一时间只有一个线程可以访问被synchronized修饰的代码,防止出现多线程竞争导致的数据不一致问题。

    9、Java异常有哪些?

    NullPointerException(空指针异常)
    ArithmeticException(算术异常)
    ArrayIndexOutOfBoundsException(数组越界异常)
    RuntimeException(运行时异常)和IOException(输入或输出异常)

    10、RuntimeException和Exception有什么区别?

    Exception:定义方法时必须声明所有可能会抛出的exception;
    Runtime Exception:在定义方法时不需要声明会抛出runtime exception

  • 相关阅读:
    ElasticSearch中的中文分词详解
    关于加密---BCrypt和MD5
    《数据库应用系统实践》------ 小区停车管理系统
    CCF CSP认证 历年题目自练Day26
    正则表达式匹配html中的图片地址
    【Metal学习笔记】--02.调用Metal-cpp从零编写C++程序
    Java基础题(巩固语法)
    厉害了!阿里内部都用的Spring+MyBatis源码手册,实战理论两不误
    AIGC , 超级热点 or 程序员创富新起点?
    iOS打包 rebuild from bitcode对ipa大小的影响
  • 原文地址:https://blog.csdn.net/m0_61689418/article/details/134097818