贝壳后端开发一面(48 min)
JAVA
- HashMap底层的数据结构是怎么样的
- ConcurrentHashMap是怎么实现线程安全和并发的
- ConcurrentHashMap支持并发写, ConcurrentHashMap实现大小获取的size()函数是怎么实现的
- 线程池ThreadPoolExecutor的核心参数以及在它的生命周期中这些核心参数的作用是什么, 能描述下吗
- 假如一个场景存在并发问题, 但并不是所有的数据结构都支持并发, 假如需要我人为的控制并发问题, 就需要用到锁, 说一下JVM层面的synchronized和JDK包层面的ReentrantLock的区别
- synchronized底层原理了解过吗
- JAVA里的类加载机制了解吗
- 类加载时, 类加载器的双亲委派机制了解吗
计算机网络
- 说一下TCP的三次握手和四次挥手
- 第3次挥手后, 主动关闭的一方会有一个TIME-WAIT的状态对吧, 了解吗
- 被动关闭连接的一方无法正常关闭会有什么问题吗
- TCP这块有拥塞控制和流量控制, 这一块你了解吗
- 如果接收方接收能力不够, 导致TCP首部里标识的滑动窗口大小不断减小, 如果窗口减小到了0, 那怎么重新开始呢
OS
- 简单说下进程和线程的区别
- 进程间有哪些通信机制
手撕题
贝壳后端开发二面(32 min)
项目
- 你在做这个项目的过程中有遇到哪些难题, 都是怎么解决的
- 你是怎么获得那些医院的接口的
- 这里面SpringBoot这一块你用了哪些注解
- 事务注解有用过吗
- 有没有用过微服务相关的内容, 说一下
- Spring里的循环依赖是怎么解决的
- 项目里的事务问题你是怎么解决的
JAVA
- JAVA里边, 创建多线程的方式有哪些
- 控制线程执行的时候, 有一个sleep()和wait(), 有什么区别
- 线程池的那几个参数, 以及它们都有什么含义
- AQS了解吗
代码考核题
- 三个线程, 一个打印A, 一个打印B, 一个打印C, 输出5次
- 面试官建议可以使用Semaphore来实现, 逻辑会清晰些
MySQL
- 你一般通过什么来判断一个字段需不需要建索引
- 索引失效的场景有哪些
- 一张表三个字段, 联合索引(A,B,C), 以下哪些会走索引, 怎么走的, 哪些不会走索引
select * from table where A='' and B='' and C=''
select * from table where B='' and A='' and C=''
select * from table where A='' or B='' and C=''
select * from table where B='' or A='' and C=''
select * from table where A='' and B='' or C=''
闲聊
- 你对自己有什么职业规划嘛
反问
PS: 虽然自己很菜, 然后凉了, 但是两面面试官人都很好, 体验很棒
#贝壳##贝壳找房##面经#