Java常见面试题,2021年及答案汇总

其实,博主还整理了,更多大厂面试题,直接下载吧

下载链接:高清172份,累计 7701 页大厂面试题 PDF

1、什么是ThreadPoolExecutor?

ThreadPoolExecutor就是线程池

ThreadPoolExecutor其实也是JAVA的一个类,我们一般通过Executors工厂类的方法,通过传入不同的参数,就可以构造出适用于不同应用场景下的ThreadPoolExecutor(线程池)

构造参数图:

构造参数参数介绍:

corePoolSize 核心线程数量
maximumPoolSize 最大线程数量
keepAliveTime 线程保持时间,N个时间单位
unit 时间单位(比如秒,分)
workQueue 阻塞队列
threadFactory 线程工厂
handler 线程池拒绝策略

2、invokedynamic 指令是干什么的?

Java 7 开始,新引入的字节码指令,可以实现一些动态类型语言的功能。Java 8 的 Lambda 表达式就是通过 invokedynamic 指令实现,使用方法句柄实现。

3、synchronized、volatile、CAS 比较

1、 synchronized 是悲观锁,属于抢占式,会引起其他线程阻塞。

2、 volatile 提供多线程共享变量可见性和禁止指令重排序优化。

3、 CAS 是基于冲突检测的乐观锁(非阻塞)

4、Iterator 怎么使用?有什么特点?

Iterator 使用代码如下:

List<String> list = new ArrayList<>();
Iterator<String> it = list、iterator();
while(it、hasNext()){String obj = it、next();System、out、println(obj);
}

Iterator 的特点是只能单向遍历,但是更加安全,因为它可以确保,在当前遍历的集合元素被更改的时候,就会抛出 ConcurrentModificationException 异常。

5、被引用的对象就一定能存活吗?

不一定,看 Reference 类型,弱引用在 GC 时会被回收,软引用在内存不足的时候,即 OOM 前会被回收,但如果没有在 Reference Chain 中的对象就一定会被回收。

6、列出一些你常见的运行时异常?

1、 ArithmeticException(算术异常)

2、 ClassCastException (类转换异常)

3、 IllegalArgumentException (非法参数异常)

4、 IndexOutOfBoundsException (下标越界异常)

5、 NullPointerException (空指针异常)

6、 SecurityException (安全异常)

7、Servlet生命周期内调用的方法过程?

1、 Init()

2、 Service()

3、 doGet或者doPost

4、 destroy

8、阐述静态变量和实例变量的区别。

静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。

补充:在Java开发中,上下文类和工具类中通常会有大量的静态成员。

9、类加载器双亲委派模型机制?

基本定义:

双亲委派模型的工作流程是:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把请求委托给父加载器去完成,依次向上,因此,所有的类加载请求最终都应该被传递到顶层的启动类加载器中,只有当父加载器没有找到所需的类时,子加载器才会尝试去加载该类。

双亲委派机制:

1、 当 AppClassLoader 加载一个 class 时,它首先不会自己去尝试加载这个类,而是把类加载请求委派给父类加载器 ExtClassLoader 去完成。

2、 当 ExtClassLoader 加载一个 class 时,它首先也不会自己去尝试加载这个类,而是把类加载请求委派给 BootStrapClassLoader 去完成。

3、 如果 BootStrapClassLoader 加载失败,会使用 ExtClassLoader 来尝试加载;

4、 若 ExtClassLoader 也加载失败,则会使用 AppClassLoader 来加载,如果 AppClassLoader 也加载失败,则会报出异常 ClassNotFoundException。

如下图所示:

双亲委派作用:

1、 通过带有优先级的层级关可以避免类的重复加载;

2、 保证 Java 程序安全稳定运行,Java 核心 API 定义类型不会被随意替换。

10、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?

都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。

11、老年代

12、如何停止一个正在运行的线程?

13、常用JVM基本配置参数

14、线程池都有哪些状态?

15、怎么确保一个集合不能被修改?

16、怎么检测一个线程是否拥有锁?

17、启动一个线程是调用run()还是start()方法?

18、React组件通信如何实现?

19、Java 中 WeakReference 与 SoftReference的区别?

20、常用并发列队的介绍:

21、什么是数据结构?

22、遇到过堆外内存溢出吗?

23、会话跟踪技术有那些?

24、抽象类和接口的区别?

25、Java中用到的线程调度算法是什么?

26、如何使session失效

27、存储过程与函数的区别

28、Spring支持的事务管理类型有哪些?你在项目中使用哪种方式?

29、用Java写一个折半查找。

30、对象都是优先分配在年轻代上的吗?

31、本地方法区(线程私有)

32、单例模式了解吗?给我解释一下双重检验锁方式实现单例模式!”

33、JVM 有哪些运行时内存区域?

34、为什么Thread类的sleep()和yield ()方法是静态的?

35、如何用Java代码列出一个目录下所有的文件?

36、Java中notify 和 notifyAll有什么区别?

37、为什么使用Executor框架?

38、如何判断两个类是否相等?

39、虚拟DOM实现原理?

40、a = a + b 与 a += b 的区别

全部答案,整理好了,直接下载吧

下载链接:全部答案,整理好了

Java常见面试题,2021年及答案汇总相关推荐

  1. 2021年- 精心整理的 SpringBoot 常见面试题-【附详细答案】

    目录 1. Spring Boot 自动配置原理是什么? 2. SpringBoot配置-profile 3. SpringBoot中有哪些常用注解 4. Spring Boot.Spring MVC ...

  2. 总结Java常见面试题和答案

    转载自  总结Java常见面试题和答案 int和Integer有什么区别?   答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装 ...

  3. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  4. Java常见面试题 + 答案

    Java常见面试题 + 答案 一.Java 基础 二.容器 三.多线程 四.反射 五.对象拷贝 六.Java Web 七.异常 八.网络 九.设计模式 十.Spring / Spring MVC 十一 ...

  5. java常见面试题及答案 1-10

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  6. java常见面试题及答案 11-20(JVM)

    11.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法 ...

  7. Java常见面试题及答案汇总

    面临金三银四黄金跳槽季,不光是很多在职人员跃跃欲试,也有很多大学生积极地加入到应聘行列.作为技术出身的我们,找工作的一大前提就是技术是否能过关.而对于Java程序员来说,至少是两关的面试,这首个关卡就 ...

  8. JAVA常见面试题及解答

    JAVA常见面试题及解答(精华)   1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class ...

  9. Java常见面试题 Java面试必看 (一)

    本篇博客是本人收集网上Java相关的资料整理所得,仅供参考. 一.Java基础 1.JDK 和 JRE区别 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java ...

最新文章

  1. GNU C和ANSI C的区别
  2. k8s系统架构图(二)
  3. Docker基础操作,原来这才是正确打开Docker的新方式!
  4. 电商美工必备,品质超高的万能套用促销PSD分层模板,宝藏!
  5. 两台笔记本的操作系统都为xp的共享上网教程
  6. 执行Oracle中的sqlldr xxx.ctl命令导入数据时,当错误无法导入时,注意查看「xxx.log信息」
  7. quatus ii 常见错误及其改正方法
  8. MySQL5.7安装手册
  9. Python原理 -- 深浅拷贝
  10. Selenium3 Java自动化测试完整教程
  11. matlab求解多元函数的偏导数diff
  12. 晶品特装在科创板上市:总市值约为48亿元,前三季度收入下滑12%
  13. python制作一个计时器_用Python制作一个猫咪小秒表
  14. Spring Boot Admin监控中心详细讲解
  15. 全球及中国千兆路由器行业市场规模调研及投资风险预测报告2022-2028年
  16. FastFlow: Unsupervised Anomaly Detection and Localization via 2D Normalizing Flows
  17. android调用wcf服务的xml,Android调用WCF
  18. RPA机器人的10大基础功能与2大类型
  19. (C语言)求幂级数展开的部分和
  20. 不忘初心,TCL冰箱洗衣机20周年从心出发

热门文章

  1. Eclipse基金会发布Eclipse Photon IDE
  2. IdentityServer4关于多客户端和API的最佳实践【含多类型客户端和API资源,以及客户端分组实践】【中】...
  3. SpringBoot的修改操作
  4. DOCKER OVERLAY NETWORK consul 注册
  5. es6箭头函数(=)与展开特性运算符(...)的使用
  6. 异步请求之XMLHttpRequest篇
  7. jquery插件-表单验证插件-提示信息中文化与定制提示信息
  8. (续)我对09毕业生说两句
  9. dma工作时cpu工不工作_CPU如何工作?
  10. Wireshark小技巧:将IP显示为域名