阿里等大厂Java面试准备经验分享
有什么面经、简历相关的问题都可以直接联系我,愿意提供更加细化的帮助
邮箱联系:332452274@qq.com微信联系:tjw332452274(可联系进群讨论)
专业知识准备
首先最好对已有知识的储备形成一个系统化认知,在面试准备的过程中不断查缺补漏,参考其他人的面试问题,自己思考一下答案对自己的准备进行验证。
以下为专业知识方面的准备清单,并总结了一些常见问题。
Java
基础
1. String,StringBuilder,StringBuffer对比
2. new 字符串,String Pool的介绍
3. 重写重载对比
4. Object的equals和hashCode对比
5. 抽象类和接口对比
6. 匿名内部类和lambda表达式实现方式对比
容器
1. ArrayList与Vector对比,初始化、扩容、线程安全
2. LinkedList与ArrayLIst对比
3. HashMap的存储结构、扩容、rehash、并发时存在的问题,与HashTable对比
4. ConcurrentHashMap的存储结构,size()操作实现细节;与HashMap、HashTable对比
5. LinkedHashMap特性,实现方式
6. ConcurrentSkipListMap存储结构,搜索效率
7. CopyOnWriteArrayList实现方式,应用场景,不足
并发
1. 多线程实现方式、线程状态
2. 用户线程、守护线程对比
3. 线程间通信、同步方式
4. Java内存模型、操作、特性
5. Java四种锁的实现细节,升级顺序
6. ReentrantLock 对比 synchronized
7. volatile对比synchronized
8. 并发工具类的应用场景(CountDownLatch、CyclicBarrier、Semaphore)
9. CAS的实现原理、可能出现的问题、锁或者并发工具类什么地方用了CAS
10. 线程池的实现原理、重要参数解释
虚拟机
1. 运行时数据区域、各个区域内容以及对比
2. 运行时常量池、字符串常量池对比
3. 对象的创建过程、内存布局、访问方式
4. 垃圾收集时可回收的判断、收集算法、垃圾收集器的应用场景及不足
5. 内存分配策略、Minor GC与Full GC的时机
6. 栈上分配和TLAB对比
7. 类加载机制、双亲委派模型的好处与不足
8. 如何在Java程序运行时不停机动态加载一个函数进来
9. 静态/动态分派、单/多分派的对比
数据库
1. 数据库事务特性、并发操作的问题举例以及对应的解决方式
2. 隔离特性与并发问题的对应方式
3. MVCC的实现细节、快照读当前读对比
4. 如何使用 MVCC + Next-Key Locks 可以解决幻读问题
5. 聚集索引和非聚集索引对比
6. MySQL存储的数据结构,使用这样数据结构的原因,和其他数据结构的对比
7. MySQL语句的从客户端到服务端的执行流程
8. MySQL索引分类、索引的常见优化方式、
9. MySQL的存储引擎对比、主从复制和读写分离的实现方式
10. Redis的数据类型以及各自的底层数据结构,介绍其使用场景
11. Redis与其他NoSQL的对比
12. Redis的过期策略和淘汰机制
13. Redis持久化方式对比及实现流程,如何选择
14. Redis事件处理模型
15. Redis主从复制、读写分离如何实现
16. 如何保证缓存和数据库一致性
17. Redis集群模式下的寻址方式、介绍下一致性hash
计算机网络
1. OSI七层和TCP/IP五层协议
2. 传输层UDP和TCP对比
3. TCP三次握手原因
4. TCP四次挥手原因(TIME_WAIT状态存在的原因)
5. TCP(UDP)如何保证可靠传输
6. TCP拥塞控制的流程
7. TCP滑动窗口和流量控制的关系
8. 传输层和链路层的差错检测不一样的地方
9. ARP解析地址流程
10. HTTP请求页面的交互流程
11. HTTP的若干请求方式介绍对比
12. Cookie和session对比
13. HTTPS的加密解密流程
14. IO模型 阻塞/非阻塞/IO复用/信号驱动IO/异步IO
15. select/poll/epoll对比
16. epoll底层实现方式(https://www.cnblogs.com/Joy-Hu/p/10762239.html)
操作系统
1. 进程线程对比
2. 进程通信方式
3. 死锁条件及解决方法
4. 虚拟内存 分页/分段比较
算法
几个刷题的题解或算法解析链接
1. https://labuladong.gitbook.io/algo/
3. https://kabitonn.gitee.io/leetcode-note
设计模式
1. 常见设计模式:工厂、单例、装饰、代理、模板
2. 常见设计原则
常见框架Springboot
1. IOC的工作过程
2. 循环依赖如何解决
3. Bean的生命周期
4. AOP的实现方式对比
5. 动态代理的CGLIB和JDK代理对比
6. Spring中的设计模式的体现
7. SpringMVC的工作流程
中间件(可选)
1. 消息队列的可靠性实现
2. 消息队列kafka、rocketMQ及其他中间件对比
3. Dubbo、zookeeper介绍
4. 分布式缓存中的问题、缓存穿透、缓存雪崩、缓存击穿
参考资料
书籍清单
1. 深入理解 Java 虚拟机
2. Java并发编程艺术
3. Java并发实战
4. Redis设计与实现
5. 写给大忙人看的JAVA核心技术
6. 高性能MySQL
链接清单
1. https://github.com/doocs/advanced-java
2. https://snailclimb.gitee.io/javaguide/#/
4. https://kabitonn.gitee.io/cs-note/#/