一、基本信息概述
教育背景: 本科来自985高校 + 硕士就读于华东五校 + 获得国家奖学金。
实习经历: 本科阶段没有实习,硕士期间参与导师项目组的实习。
面试成果: 取得了淘天集团的offer,快手的offer,然而在京东的HR面试中被拒绝,在字节跳动的第三轮也未能通过,阿里云和阿里控股的面试分别在三面和二面中被拒。
求职时间线: 从3月1日开始投递简历,前期面试了四到五家公司,包括淘天,但一直没能成功。紧急情况下又投递了七八家公司。在4月20日之前,仍未获得任何offer,感到十分焦虑。最终在最近一周里有所进展,成功拿到了快手和淘天的offer,其他公司的面试则直接选择放弃。
准备过程: 从去年10月便开始进行相关学习,浏览黑马课程,使用Leetcode练习编程题,参考JavaGuide并请人帮助修改简历,直到3月开始正式申请暑期实习。
二、各公司面试经历
2.1 淘天集团
1. 技术一面 (1小时)
- 自我介绍
- 项目介绍
- 深入探讨项目,问题包括:
- 使用多线程的原因及其好处(降低用户响应时间,以前用过单线程)
- 前端如何获取签章状态,是通过轮询还是其他方法
- 选择RabbitMQ进行异步任务的原因,是否有微服务的拆分,未拆分的原因
- 使用消息队列的必要性及其作用,考虑使用其他组件的原因
- 除了消息队列,如何实现同步调用
- 是否了解RPC,为什么不使用RPC,是否知晓一些现成的RPC
- 如何通过Remote JVM Debug进行远程调试,绕过堡垒机的方式
- 多数据源切换的必要性,是否可以将数据放在同一数据库
- 垂直分表的好处
- 面对几千万的全国订单数据,如何存储在一张表中?
- 分库后如何避免在分页查询时跨库
- 使用过哪些数据库
- 理解索引的概念及其数据结构
- redis与mysql的区别
- 哪些场景使用mysql存储,哪些场景使用redis
- 理解OOP及设计模式,分享应用过的设计模式
- 设计模式的原则
- 使用策略模式的优点
- JVM的类加载机制
- 如何打破双亲委派机制
- SpringBoot使用的优势
- Java的异常处理
- 遇到过JVM错误时的排查方式及工具
- 用户请求响应缓慢时的排查方法
- 哪些工具可以帮助分析链路执行情况
- 职业规划?
- 提问环节
2. 技术二面
主要讨论项目,询问项目调优、数据库调优、JVM调优的经验,介绍自己的项目占据了大部分时间。
3. HR面
- 考研或保研,成绩如何?
- 用三个词形容自己
- 目前投递了哪些公司,进展如何?
- 假设所有offer拿到,你会选择哪家,原因是什么?
- 将来希望在哪些地方工作?
- 高考后为何选择本科学校?
- 本科阶段实习经历较少,原因是什么?
- 大学期间最有成就感的事情是什么?
- 在团队中的贡献程度?
- 你身边的榜样是谁?
- 他身上最值得学习的地方是什么?
- 父母对你成长的影响?
4. 主管面
通过闲聊进行了25分钟讨论,反问环节5分钟。
项目经历的讨论时间为7分钟,而本科竞赛经历则聊了十几分钟。
5. OC面
2.2 字节跳动
1. 技术一面
- 详细的八股文加项目经历
- 手撕面试题3道:
- 第一题:写一个线程池,两个线程依次打印1~100的数字,不能交替
- 第二题:解决n皇后问题,10分钟秒完
- 第三题:岛屿问题,5分钟秒完
- 提问环节
2. 技术二面
- 自我介绍
- 本科期间修过哪些课程?
- 手写SQL题(按班级分组,给出每个班的男生语文均分)
- mysql设计题,针对电商场景,如何存储每天千万订单供商家和用户查询
- mysql主从同步原理(binlog机制)
- 如何解决主从库的一致性问题
- redis缓存击穿与缓存雪崩的处理
- redis分布式锁在秒杀场景中的应用,要考虑哪些因素
- RabbitMQ生产者和消费者如何交互
- Java线程池基本知识
- 是否了解Go语言?
- 代码主要提交到哪里?编程经历如何?
- 手撕DFS在二维数组中查找单词,秒完
3. 技术主管面
因获得淘天的offer,未继续参与三面。
2.3 其他面试
快手的面试问题相对深入,京东则较为简单,阿里云和阿里控股偏向结合项目进行提问。
三、总结与反思
1. 实习经历 > 算法能力 > 学历背景 > Java面试技巧。 项目经验是面试中受到最多关注的方面,而算法的掌握也非常重要。笔试成绩差可能会影响面试机会,很多大公司会更看重学历。尽管八股文技巧可以通过时间积累,但如果前面三项不够优秀,机会会大幅减少。
2. 投递时机的选择。 实习投递不必过早,一个可靠的内推人非常关键。早期投递可能会遇到较高难度的笔试,而有内推人可以帮助查询进度、催促HR,避免焦虑。
3. 暑期实习的竞争。 实习流程逐渐变长,公司们倾向于排序候选人。参与多场面试更为明智,保持良好的心态。
4. 面试机会的把握。 争取多面试,将一家offer作为其他公司的筹码,能有效加速进度。