春招面经:如何成功获得美团、华为和字节跳动的offer

美团

第一面试

  1. 深入讨论项目,问题繁多,主要围绕某功能的实现细节和如何添加新功能进行探讨。
  2. 了解进程与线程的区别。
  3. 讨论死锁及其产生条件。
  4. 知道中断与轮询的区别吗?
  5. 数据库索引,探讨B+树的存储能力。
  6. 了解数据库存储引擎及其区别。
  7. 数据库锁的相关知识。
  8. 算法题:求从起始点到终点的最短路径。

图片

第二面试

  1. 项目讨论。
  2. 理解序列化与反序列化。
  3. 了解负载均衡的不同类型。
  4. 讨论OOM(Out Of Memory)的情况,如何处理和排查。
  5. Spring 启动流程。
  6. Spring中的设计模式。
  7. 对于模版模式的理解与应用场景,以及在项目中的使用。
  8. HTTP请求的整个过程。
  9. TCP与UDP的区别。
  10. 熟悉哪些Linux命令。
  11. 设置索引时需注意的事项。
  12. 最近阅读的书籍及其收获。
  13. 算法题:合并有序数组,要求O(N)时间复杂度和O(1)空间复杂度。
  14. 数据库设计:只能以半小时为单位预定会议室。

图片

数据库设计题

图片

华为

第一面试

  1. 项目及论文介绍。
  2. String类是否可以被继承。
  3. Java内存泄漏及其排查。
  4. Hash方法及哈希冲突的解决策略。
  5. 静态代理与动态代理的区别。
  6. 线程通信的方式。
  7. volatile关键字的使用。
  8. Java高效拷贝数组的方法。
  9. 算法题:跳跃游戏(LeetCode 55)。

第二面试

  1. 项目及论文的简要介绍。
  2. 项目是自学习的还是实际落地的项目。
  3. 大学期间保研绩点较高,但研究生期间为何未能保持。
  4. 对华为的了解程度,进行了深入讨论,因我本身是华为用户。
  5. 实习经历的讨论。
  6. 反问部门、技术栈以及是否能选择项目。

字节

第一面试

  1. 项目讨论,探讨实现过程及从中学习的内容。
  2. 手写单例模式,并比较与Spring单例的区别。
  3. 算法题:给定一个整数数组nums,返回该数组的所有可能子集。
  4. SQL题:根据题目要求编写相应的SQL,由于时间久远未练习,未能解答。
  5. 智力题:在1到N的批次中,找出重量不合格的批次,要求最少的称重次数。

第二面试

  1. 项目讨论。
  2. volatile关键字的应用。
  3. JVM新生代的划分与大对象的分配。
  4. 新生代的垃圾回收器。
  5. ParNew的原理。
  6. InnoDB的默认隔离级别,RR能否防止幻读,RR是否默认使用间隙锁。
  7. 如何理解最终一致性,有哪些实现方法。
  8. 分布式事务的相关知识。
  9. 算法题:数组中每个数右边第一个比它大的数。

第三面试

  1. 项目讨论。
  2. RAFT协议下的脑裂和一致性。
  3. 负载均衡相关知识。
  4. 各种排序算法,分析其复杂度和稳定性。
  5. 其他问题未记起,大部分围绕项目展开。
  6. 算法题:旋转图像(90度旋转矩阵)。