提前 5 分钟进面试间,发现面试官已经在了,而且还是两个人,另一个面试官在旁听。
先问专业技能,再问项目
- 简单介绍一下熟练掌握的 Java 集合类
- HashMap 的实现原理
- 注解的实现原理
- 反射的原理
- 详细说一下用到的异常处理,如何使用的
- 数据库的最左匹配原则
- MySQL 中事务的隔离级别有哪些?开发过程中常用的是哪一种?
- 什么场景下会用到分布式锁?
- 为什么用 Redis?它为什么快?
- 如何实现分布式锁?
- 实现分布式锁时,有考虑过锁失效的情况吗?如何解决?
- MQ 是在哪个地方用的?为什么会用到 MQ 呢?
- 你觉得使用消息中间件对整个系统有什么帮助吗?
- Docker 是怎么使用的?
- 在哪里用到了 Shell 脚本执行自动化任务?有用到 Lua 脚本吗?
- 杀掉一个进程的命令是什么?
- 开始问项目,简单介绍一下项目,用到了哪些技术,这些技术起到了什么作用?
- 使用 Redis 缓存高频访问的数据是怎么实现的?
- 首次加载时,使用缓存预热加快访问速度是怎么实现的?
- 有没有想过缓存穿透的问题?如何解决?
- 第二个项目用到了哪些技术,实现了哪些功能?
- 介绍一下你的比赛获奖,这个成绩是怎么取得的?
一面完之后,另一个面试官说等一会,然后就开始了二面
问了一些底层原理方面,挑一个最有把握的技术,来聊一聊它的源码
我挑了 Java 集合类中的 ConcurrentHashMap,然后开始拷打
- 底层如何实现的?
- 扩容机制?
- 分段锁是怎么加锁的?
- 分段锁是可重入的吗?
- 已经用了 synchronized,为什么还要用 CAS 呢?
- ConcurrentHashMap 用了悲观锁还是乐观锁?
二面面试官问的更有深度,整个过程体验很好,感觉二面更像是和面试官讨论交流
最后也给到我一些学习方面的建议,受益匪浅
后续结果等 HR 通知
#高顿教育##软件开发投递记录##软件开发笔面经#
#秋招##高顿教育求职进展汇总#