太牛了,史上最全大厂java面试题:基础语法+集合+并发编程+JVM

前言

大家都知道现在一线企业面试的时候面试的都特别狠,面试官都是不停的问,可以说是刨根问底栏目组的了;

那么,大家应该怎么来应对面试官的刁钻提问呢?

小编整理了大厂面试经常问到的java面试题,总共有139道,道道都是经典,都是一线大厂面试官经常会问到的问题。

Java语法基础面试专题及答案

1.面向对象和面向过程的区别

2. Java 语言有哪些特点

3. 关于 JVM JDK 和 JRE 最详细通俗的解答

4. Oracle JDK 和 OpenJDK 的对比

5. Java 和 C++的区别

6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同

7. Java 应用程序与小程序之间有哪些差别

8. 字符型常量和字符串常量的区别

9. 构造器 Constructor 是否可被 override

10. 重载和重写的区别

11. Java 面向对象编程三大特性: 封装 继承 多态

12. String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的?

13. 自动装箱与拆箱

14. 在一个静态方法内调用一个非静态成员为什么是非法的

15. 在 Java 中定义一个不做事且没有参数的构造方法的作用

16. import java 和 javax 有什么区别

17. 接口和抽象类的区别是什么

18. 成员变量与局部变量的区别有哪些

19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?

20. 什么是方法的返回值?返回值在类的方法里的作用是什么?

21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 ?为什么?

22. 构造方法有哪些特性?

23. 静态方法和实例方法有何不同

24. 对象的相等与指向他们的引用相等,两者有什么不同?

25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

26. == 与 equals(重要)

27. hashCode 与 equals(重要)

28. 为什么 Java 中只有值传递

29. 简述线程,程序、进程的基本概念。以及他们之、间关系是什么?

30. 线程有哪些基本状态?

31 关于 final 关键字的一些总结

32 Java 中的异常处理

33 Java 序列化中如果有些字段不想进行序列化 怎么办

34 获取用键盘输入常用的的两种方法

Java集合面试专题及答案

1. ArrayList 和 Vector 的区别。

2. 说说 ArrayList,Vector, LinkedList 的存储性能和特性。

3. 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?

4. hashmap 的数据结构。

5. HashMap 的工作原理是什么?

6. Hashmap 什么时候进行扩容呢?

7. List、Map、Set 三个接口,存取元素时,各有什么特点?

8. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是equals()? 它们有何区别?

9. 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?

10. heap 和 stack 有什么区别。

11. Java 集合类框架的基本接口有哪些?

12. HashSet 和 TreeSet 有什么区别?

13. HashSet 的底层实现是什么?

14. LinkedHashMap 的实现原理?

15. 为什么集合类没有实现 Cloneable 和 Serializable 接口?

16. 什么是迭代器 (Iterator)?

17. Iterator 和 ListIterator 的区别是什么?

18. 数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是ArrayList?

19. Java 集合类框架的最佳实践有哪些?

20. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是equals()?它们有何区别?

21. Comparable 和 Comparator 接口是干什么的?列出它们的区别。

22. Collection 和 Collections 的区别。

image

并发编程_面试专题及答案(上)

Synchronized 相 关 问 题

问 题 一 : Synchronized 用 过 吗 , 其 原 理 是 什 么 ?

问 题 二 : 你 刚 才 提 到 获 取 对 象 的 锁 , 这 个 “ 锁 ” 到 底 是 什 么 ? 如 何 确 定对 象 的 锁 ?

问 题 三 : 什 么 是 可 重 入 性 , 为 什 么 说 Synchronized 是 可 重 入 锁 ?

问 题 四 : JVM 对 Java 的 原 生 锁 做 了 哪 些 优 化 ?

问 题 五 : 为 什 么 说 Synchronized 是 非 公 平 锁 ?

问 题 六 : 什 么 是 锁 消 除 和 锁 粗 化 ?

问 题 七 : 为 什 么 说 Synchronized 是 一 个 悲 观 锁 ? 乐 观 锁 的 实 现 原 理又 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?

问 题 八 : 乐 观 锁 一 定 就 是 好 的 吗 ?

可 重 入 锁 ReentrantLock 及 其 他 显 式 锁 相 关 问 题

问 题 一 : 跟 Synchronized 相 比 , 可 重 入 锁 ReentrantLock 其 实 现原 理 有 什 么 不 同 ?

问 题 二 : 那 么 请 谈 谈 AQS 框 架 是 怎 么 回 事 儿 ?

问 题 三 : 请 尽 可 能 详 尽 地 对 比 下 Synchronized 和 ReentrantLock的 异 同 。

问 题 四 : ReentrantLock 是 如 何 实 现 可 重 入 性 的 ?

问 题 五 : 除 了 ReetrantLock, 你 还 接 触 过 JUC 中 的 哪 些 并 发 工 具 ?

问 题 六 : 请 谈 谈 ReadWriteLock 和 StampedLock。

问 题 七 : 如 何 让 Java 的 线 程 彼 此 同 步 ? 你 了 解 过 哪 些 同 步 器 ? 请 分 别介 绍 下 。

问 题 八 : CyclicBarrier 和 CountDownLatch 看 起 来 很 相 似 , 请 对 比下 呢 ?

Java 线 程 池 相 关 问 题

问 题 一 : Java 中 的 线 程 池 是 如 何 实 现 的 ?

问 题 二 : 创 建 线 程 池 的 几 个 核 心 构 造 参 数 ?

问 题 三 : 线 程 池 中 的 线 程 是 怎 么 创 建 的 ? 是 一 开 始 就 随 着 线 程 池 的 启 动创 建 好 的 吗 ?

问 题 四 : 既 然 提 到 可 以 通 过 配 置 不 同 参 数 创 建 出 不 同 的 线 程 池 , 那 么Java 中 默 认 实 现 好 的 线 程 池 又 有 哪 些 呢 ? 请 比 较 它 们 的 异 同 。

问 题 五 : 如 何 在 Java 线 程 池 中 提 交 线 程 ?

Java 内 存 模 型 相 关 问 题

问 题 一 : 什 么 是 Java 的 内 存 模 型 , Java 中 各 个 线 程 是 怎 么 彼 此 看 到对 方 的 变 量 的 ?

问 题 二 : 请 谈 谈 volatile 有 什 么 特 点 , 为 什 么 它 能 保 证 变 量 对 所 有 线程 的 可 见 性 ?

问 题 三 : 既 然 volatile 能 够 保 证 线 程 间 的 变 量 可 见 性 , 是 不 是 就 意 味着 基 于 volatile 变 量 的 运 算 就 是 并 发 安 全 的 ?

问 题 四 : 请 对 比 下 volatile 对 比 Synchronized 的 异 同 。

问 题 五 : 请 谈 谈 ThreadLocal 是 怎 么 解 决 并 发 安 全 的 ?

问 题 六 : 很 多 人 都 说 要 慎 用 ThreadLocal, 谈 谈 你 的 理 解 , 使 用ThreadLocal 需 要 注 意 些 什 么 ?

并发编程_面试专题及答案(下)

1)现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?

2)在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?

3)在 java 中 wait 和 sleep 方法的不同?

4)用 Java 实现阻塞队列。

5)用 Java 写代码来解决生产者——消费者问题。

6)用 Java 编程一个会导致死锁的程序,你将怎么解决?

  1. 什么是原子操作,Java 中的原子操作是什么?

  2. Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?

  3. 什么是竞争条件?你怎样发现和解决竞争?

  4. 你将如何使用 threaddump?你将如何分析 Thread dump?

  5. 为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?

  6. Java 中你怎样唤醒一个阻塞的线程?

13)在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?

  1. 什么是不可变对象,它对写并发应用有什么帮助?

  2. 你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?

image

JVM面试专题及答案(上)

1. 内存模型以及分区,需要详细到每个区放什么。

2. 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。

3. 对象创建方法,对象的内存分配,对象的访问定位。

4. GC 的两种判定方法:

5. SafePoint 是什么

6. GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?

7. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。

8. Minor GC 与 Full GC 分别在什么时候发生?

9. 几种常用的内存调试工具:jmap、jstack、jconsole、jhat

10. 类加载的几个过程:

11.JVM 内存分哪几个区,每个区的作用是什么?

12.如和判断一个对象是否存活?(或者 GC 对象的判定方法)

13.简述 java 垃圾回收机制?

14.java 中垃圾收集的方法有哪些?

15.java 内存模型

16.java 类加载过程?

17. 简述 java 类加载机制?

18. 类加载器双亲委派模型机制?

19.什么是类加载器,类加载器有哪些?

20.简述 java 内存分配与回收策略以及 Minor GC 和Major GC

image

JVM面试专题及答案(下)

一.Java 类加载过程?

二.描述一下 JVM 加载 Class 文件的原理机制?

三 Java 内存分配。

四.GC 是什么? 为什么要有 GC?

五. 简述 Java 垃圾回收机制。

六. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)

七. 垃圾回收的优点和原理。并考虑 2 种回收机制。

八. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

九. Java 中会存在内存泄漏吗,请简单描述。

十. 深拷贝和浅拷贝。

十一. System.gc() 和 Runtime.gc() 会做什么事情?

十二. finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?

十三. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?

十四. 什么是分布式垃圾回收(DGC)?它是如何工作的?

十五. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

十六. 在 Java 中,对象什么时候可以被垃圾回收?

十七. 简述 Java 内存分配与回收策率以及 Minor GC 和 MajorGC。

十八. JVM 的永久代中会发生垃圾回收么?

十九. Java 中垃圾收集的方法有哪些?

二十. 什么是类加载器,类加载器有哪些?

二十一. 类加载器双亲委派模型机制?

以上总结出来的是最全的java面试题目,以下是最新的java面试题目和答案,希望大家能够喜欢!

2020最新的一线大厂高级面试题和答案

image

需要获取的小伙伴,可以点赞关注小编,点这里来得到获取方式~

面试造火箭,入职拧螺丝,希望能够帮助到你。

多多转发,让更多人受益!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值