1.Java的特性?面向对象的特点?
Java的特性:简单性,面向对象,可移植性,高性能,分布式,动态性,多线程,安全性,健壮性。
面向对象的特点:继承、多态、封装。
继承是类之间的关系,封装是隐藏数据,多态是一个接口多实现。
2.Java的数据类型有哪些?
基本数据类型:整数类型:byte、int、short、long
浮点类型:float、double
字符类型:char
Boolean类型
引用数据类型:类、接口、数组
3.解释Java中的四个访问修饰符及优先级
public(最高):对所有类可见
protected:对同一包内的类可见,对子类可见,对其他包的类不可见
缺省(default):对同一包内的类可见,对其他包的类不可见
private(最低):只对同一类内可见
4.Java的this和super关键字有什么区别?
this引用当前对象,super调用父类对象
5.什么是异常?Java中如何处理异常?
异常处理是处理程序运行时错误的方法,使用try-catch-finally或try-with-resources语句
6.Java中的集合框架包含哪些主要接口和实现类?
List, Set, Map, 实现这些接口的类如ArrayList,HashSet,HashMap等
7.解释一下HashMap
是一种基于哈希表的Map接口的实现,用于存储键值对,并允许快速的插入、删除和查找操作
8.Java中的同步和异步有什么区别?
同步是顺序执行,异步是并行执行
9.Java中的线程生命周期?
新建,就绪,运行,堵塞,死亡
10.Java中Callable和Runnable是什么?有什么区别?
是Java的核心函数式接口。
Callable:包含抽象方法call (),返回泛型类型的结果,可以抛出受检异常
Runnable:包含抽象方法run(),无返回值,不会抛出受检异常
11.Java中线程池的七个参数是什么?
corePoolSize:线程池中的常驻核心线程数。
maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于1。
keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁直到只剩下corePoolSize个线程为止。
unit:keepAliveTime的单位。
workQueue:任务队列,被提交但尚未被执行的任务。
threadFactory:表示生成线程池中工作线程的线程工厂,用户创建新线程,一般用默认即可。
handler:拒绝策略,表示当线程队列满了并且工作线程大于等于线程池的最大显示数(maxnumPoolSize)时如何来拒绝请求执行的runnable的策略。
12.什么是死锁?如何避免?
死锁指的是两个或两个以上的线程在执行时由于竞争资源造成的一种阻塞现象,可以通过死锁预防的方法避免产生死锁
13.Java中的接口和抽象类有什么区别?
接口中只有抽象方法,抽象类里有抽象方法和具体方法
14.解释Lambda表达式
Lambda表达式是JDK8引入的新特性,本质上是一种匿名函数,用于简化代码,提高代码的可读性和可维护性
15.Java中的流是什么?
JDK8引入的用于处理集合数据的抽象概念
16.面向对象和面向过程有什么区别?
面向过程是以事件流程为出发点,关注解决问题的步骤,模块化流程化,适用于简单直接的问题,更多用于处理底层业务;
面向对象是以参与事件的角色为出发点,关注实体及其交互,有封装、继承、多态的特点,适用于复杂大型的系统,更多用于实现业务逻辑复杂的大型系统。
17.标识符的命名规则?
标识符可以包含英文字母,0-9的数字,$以及_ ,不能以数字开头
类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)
变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)
方法名规范:同变量名
18.简述线程、进程和程序的关系
程序是静态的指令集合,进程是程序在执行过程中的动态实体,线程是进程中的执行单位
一个程序可以对应多个进程,一个进程可以包含多个线程
19.Java中List、Set、Map的区别是什么?
List有序,可重复,Set无序,不可重复,Map是键值对的形式
20.ArrayList和LinkedList的区别?
ArrayList是基于数组实现的动态数组,LinkedList是基于双向链表实现的
21.重载和重写的区别?
重载是指在同一个类中,多个方法具有相同的名字,但参数列表不同。
重写是指在子类中重新定义父类中的方法,子类方法与父类方法有相同的名称、返回类型和参数列表。
22.final关键字的作用?
当一个变量被声明为final时,这个变量是一个常量
当一个方法参数被声明为final
时,这意味着这个参数在方法体内部不能被修改
当一个引用被声明为final
时,这个引用不能被重新赋值
当一个接口被声明为final
时,这个接口不能被继承