如何成功获得淘天暑期实习机会:一位985/华五学子的两个月求职经历与面试分享

一、基本信息概述

教育背景: 本科来自985高校 + 硕士就读于华东五校 + 获得国家奖学金。

实习经历: 本科阶段没有实习,硕士期间参与导师项目组的实习。

面试成果: 取得了淘天集团的offer,快手的offer,然而在京东的HR面试中被拒绝,在字节跳动的第三轮也未能通过,阿里云和阿里控股的面试分别在三面和二面中被拒。

求职时间线: 从3月1日开始投递简历,前期面试了四到五家公司,包括淘天,但一直没能成功。紧急情况下又投递了七八家公司。在4月20日之前,仍未获得任何offer,感到十分焦虑。最终在最近一周里有所进展,成功拿到了快手和淘天的offer,其他公司的面试则直接选择放弃。

准备过程: 从去年10月便开始进行相关学习,浏览黑马课程,使用Leetcode练习编程题,参考JavaGuide并请人帮助修改简历,直到3月开始正式申请暑期实习。

二、各公司面试经历

2.1 淘天集团

1. 技术一面 (1小时)

  1. 自我介绍
  2. 项目介绍
  3. 深入探讨项目,问题包括:
  4. 使用多线程的原因及其好处(降低用户响应时间,以前用过单线程)
  5. 前端如何获取签章状态,是通过轮询还是其他方法
  6. 选择RabbitMQ进行异步任务的原因,是否有微服务的拆分,未拆分的原因
  7. 使用消息队列的必要性及其作用,考虑使用其他组件的原因
  8. 除了消息队列,如何实现同步调用
  9. 是否了解RPC,为什么不使用RPC,是否知晓一些现成的RPC
  10. 如何通过Remote JVM Debug进行远程调试,绕过堡垒机的方式
  11. 多数据源切换的必要性,是否可以将数据放在同一数据库
  12. 垂直分表的好处
  13. 面对几千万的全国订单数据,如何存储在一张表中?
  14. 分库后如何避免在分页查询时跨库
  15. 使用过哪些数据库
  16. 理解索引的概念及其数据结构
  17. redis与mysql的区别
  18. 哪些场景使用mysql存储,哪些场景使用redis
  19. 理解OOP及设计模式,分享应用过的设计模式
  20. 设计模式的原则
  21. 使用策略模式的优点
  22. JVM的类加载机制
  23. 如何打破双亲委派机制
  24. SpringBoot使用的优势
  25. Java的异常处理
  26. 遇到过JVM错误时的排查方式及工具
  27. 用户请求响应缓慢时的排查方法
  28. 哪些工具可以帮助分析链路执行情况
  29. 职业规划?
  30. 提问环节

2. 技术二面

主要讨论项目,询问项目调优、数据库调优、JVM调优的经验,介绍自己的项目占据了大部分时间。

3. HR面

  1. 考研或保研,成绩如何?
  2. 用三个词形容自己
  3. 目前投递了哪些公司,进展如何?
  4. 假设所有offer拿到,你会选择哪家,原因是什么?
  5. 将来希望在哪些地方工作?
  6. 高考后为何选择本科学校?
  7. 本科阶段实习经历较少,原因是什么?
  8. 大学期间最有成就感的事情是什么?
  9. 在团队中的贡献程度?
  10. 你身边的榜样是谁?
  11. 他身上最值得学习的地方是什么?
  12. 父母对你成长的影响?

4. 主管面

通过闲聊进行了25分钟讨论,反问环节5分钟。

项目经历的讨论时间为7分钟,而本科竞赛经历则聊了十几分钟。

5. OC面

2.2 字节跳动

1. 技术一面

  1. 详细的八股文加项目经历
  2. 手撕面试题3道:
    • 第一题:写一个线程池,两个线程依次打印1~100的数字,不能交替
    • 第二题:解决n皇后问题,10分钟秒完
    • 第三题:岛屿问题,5分钟秒完
  3. 提问环节

2. 技术二面

  1. 自我介绍
  2. 本科期间修过哪些课程?
  3. 手写SQL题(按班级分组,给出每个班的男生语文均分)
  4. mysql设计题,针对电商场景,如何存储每天千万订单供商家和用户查询
  5. mysql主从同步原理(binlog机制)
  6. 如何解决主从库的一致性问题
  7. redis缓存击穿与缓存雪崩的处理
  8. redis分布式锁在秒杀场景中的应用,要考虑哪些因素
  9. RabbitMQ生产者和消费者如何交互
  10. Java线程池基本知识
  11. 是否了解Go语言?
  12. 代码主要提交到哪里?编程经历如何?
  13. 手撕DFS在二维数组中查找单词,秒完

3. 技术主管面

因获得淘天的offer,未继续参与三面。

2.3 其他面试

快手的面试问题相对深入,京东则较为简单,阿里云和阿里控股偏向结合项目进行提问。

三、总结与反思

1. 实习经历 > 算法能力 > 学历背景 > Java面试技巧。 项目经验是面试中受到最多关注的方面,而算法的掌握也非常重要。笔试成绩差可能会影响面试机会,很多大公司会更看重学历。尽管八股文技巧可以通过时间积累,但如果前面三项不够优秀,机会会大幅减少。

2. 投递时机的选择。 实习投递不必过早,一个可靠的内推人非常关键。早期投递可能会遇到较高难度的笔试,而有内推人可以帮助查询进度、催促HR,避免焦虑。

3. 暑期实习的竞争。 实习流程逐渐变长,公司们倾向于排序候选人。参与多场面试更为明智,保持良好的心态。

4. 面试机会的把握。 争取多面试,将一家offer作为其他公司的筹码,能有效加速进度。