去面试过互联网大厂的小伙伴肯定遇到过很多不知道怎么回答的问题,所以我来给你们支招了,准备充足之后再去面试吧,机会留给有准备的人的,这里总结的BAT面试常问的81题,包含JVM,集合框架,多线程/高并发,数据库,Redis的等5个部分的内容,总共81道题,一起来测试一下你的命中率吧~
01 JVM 部分
1. Java 类加载过程?
2. 描述一下 JVM 加载 Class 文件的原理机制?
3. Java 内存分配。
4. GC 是什么? 为什么要有 GC?
5. 简述 Java 垃圾回收机制。
6. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
7. 垃圾回收的优点和原理。并考虑 2 种回收机制。
8. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?
9. 有什么办法主动通知虚拟机进行垃圾回收?
10. Java 中会存在内存泄漏吗,请简单描述。
11. 深拷贝和浅拷贝。
12. System.gc() 和 Runtime.gc() 会做什么事情?
13. finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
14. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
15. 什么是分布式垃圾回收(DGC)?它是如何工作的?
16. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
17. 在 Java 中,对象什么时候可以被垃圾回收?
18. 简述 Java 内存分配与回收策率以及 Minor GC 和 Major GC。
19. JVM 的永久代中会发生垃圾回收么?
20. Java 中垃圾收集的方法有哪些?
21. 什么是类加载器,类加载器有哪些?
22. 类加载器双亲委派模型机制?
02 多线程 / 高并发 部分
23. stop() 和 suspend() 方法为何不推荐使用?
24. sleep() 和 wait() 有什么区别?
25. 同步和异步有何异同,在什么情况下分别使用他们?
26. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?
27. 简述 synchronized 和
java.util.concurrent.locks.Lock 的异同?28. 概括的解释下线程的几种可用状态。
29. 什么是 ThreadLocal?
30. run() 和 start() 区别。
31. 什么是线程饿死,什么是活锁?
32. 请说出你所知道的线程同步的方法。
33. 线程调度和线程控制。
34. 多线程中的忙循环是什么?
35. volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?
36. volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
03 集合框架 部分
37. ArrayList 和 Vector 的区别
38. 说说 ArrayList,Vector, LinkedList 的存储性能和特性。
39. 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?
40. hashmap 的数据结构。
41. HashMap 的工作原理是什么?
42. Hashmap 什么时候进行扩容呢?
43. List、Map、Set 三个接口,存取元素时,各有什么特点?
44. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是equals()? 它们有何区别?
45. 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
46. heap 和 stack 有什么区别
47. Java 集合类框架的基本接口有哪些?
48. HashSet 和 TreeSet 有什么区别?
49. HashSet 的底层实现是什么?
50. LinkedHashMap 的实现原理?
51. 为什么集合类没有实现 Cloneable 和 Serializable 接口?
52. 什么是迭代器 (Iterator)?
53. Iterator 和 ListIterator 的区别是什么?
54. 数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是ArrayList?
55. Java 集合类框架的最佳实践有哪些?
56. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是equals()?它们有何区别?
57. Comparable 和 Comparator 接口是干什么的?列出它们的区别。
58. Collection 和 Collections 的区别。
04 数据库部分
59. 请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
60. 在 MySQL 中 ENUM 的用法是什么?
61. CHAR 和 VARCHAR 的区别?
62. 列的字符串类型可以是什么?
63. MySQL 中使用什么存储引擎?
64. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?
65. 主键和候选键有什么区别?
66. MySQL 数据库服务器性能分析的方法命令有哪些?
67. LIKE 和 REGEXP 操作有什么区别?
68. BLOB 和 TEXT 有什么区别?
69. 数据库的三范式?
70. 什么是通用 SQL 函数?
71. MySQL 表中允许有多少个 TRIGGERS?
05 Redis部分
72. 为什么要用 redis /为什么要用缓存(高性能、高并发)
73. 为什么要用 redis 而不用 map/guava 做缓存?
74. redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
75. redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
76. redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
77. Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
78. 分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
79. Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
80. 如何解决 Redis 的并发竞争 Key 问题
81. 如何保证缓存与数据库双写时的数据一致性?
06 最后答案揭晓
由于篇幅有限,下面只是以图片的方式给大家展示一部分,就不一一给大家列举了,想要了解的,【BAT】滴我可取~
(1)JVM 部分的解析如下
JVM 部分的解析
(2)多线程/高并发 部分的解析如下
多线程/高并发 部分的解析
(3)集合框架部分的解析如下
集合框架部分的解析
(4)数据库 部分的解析如下
数据库 部分的答案解析
(5)Redis 部分的解析如下
Redis 部分的解析
互联网大厂面试题:
希望分享的知识都可以帮助到大家,希望大家都找到满意的工作!