这一块因为每个人都不一样,所以不细写了,但是很重要。社招项目问得是比较细的,事前好好准备一下吧,不要像我一样说到自己做的项目,因为时间比较久了,有些细节都忘了。面试前将自己做过的项目再熟悉熟悉。
3 基础知识
基础知识这块是跟你简历上提到的技术栈相关的,每个人不一定相同,但 Redis 和 Kafka 都是没有被错过的。这一块就是考察你掌握是深度了,不一定全都要了解到底层,每家要求不一样。
3.1 Java
1)基础
int float short double long char 占字节数?
int 范围?float 范围?
hashcode 和 equals 的关系
深拷贝、浅拷贝区别
java 异常体系?RuntimeException Exception Error 的区别,举常见的例子
lambda 表达式中使用外部变量,为什么要 final?
2)集合
集合这块关注一下 1.8 的实现吧,和 1.7 相比变化了很多
Collection 有什么子接口、有哪些具体的实现
简单介绍下 ArrayList 怎么实现,加操作、取值操作,什么时候扩容?
讲一下 hashMap 原理。hashMap 可以并发读么?并发写会有什么问题?
讲一下 concurrentHashMap 原理。头插法还是尾插法?扩容怎么做?
堆是怎么存储的,插入是在哪里?
集合在迭代的过程中,插入或删除数据会怎样?
3)并发
线程 进程和线程的区别?并行和并发的区别?了解协程么? 进程间如何通信:进程 A 想读取进程 B 的主存怎么办?线程间通信? 线程的生命周期有哪些状态?怎么转换? wait 和 sleep 有什么区别?什么情况下会用到 sleep? 怎么停止线程? 怎么控制多个线程按序执行?
线程池 会用到线程池么?怎么使用的?用什么实现的? 常用的线程池有哪些?用的哪个线程池?什么情况下怎么选择? ThreadPoolExecutor 有什么参数