发面经攒人品,也给大家一个参考,自己也从牛客上看了很多面经,希望后面能拿到目标 offer

百度(业务面通过)

百度投递的是个人云部门,但是没有 Java 岗转到了安卓开发

一面(0730+电话面)

具体问题记不清楚了,凭回忆

  1. Synchronized 和 ReentrantLock 区别

  2. 创建线程的方式,使用过的有那些,为什么没使用过 Callable 和 Future

  3. 讲下 JVM。这块主要我自己在说,一口气说下来说了有二十多分钟吧,面试官一直没说话,我就一直说,从运行时数据区,讲到一个类具体是如何存储的,再讲到垃圾回收机制和垃圾收集算法,再讲到各个版本的 JDK 的垃圾收集器,再讲到 YoungGC 和 FullGC,再讲 YoungGC 的具体过程,对象是如何分配的,出现 OOM 时如何排查,已经自己在项目的一个 GC 调优做的具体工作

  4. SQL 索引,存储引擎对比,B+、B-、红黑树对比,Hash 索引和联合索引

  5. SQL 题目,题目挺长的,我没写出来

  6. 并发题目,数字 0-9,线程 A 先打印,打印到 5 之后,线程 B 接着打印。我说了用等待通知机制的思路(synchronized、ReentrantLock ),面试官说不能在外部加代码,只能在 run 里面写代码,我说用 AtomicInteger,说了下思路,要我写出代码,我口述了下代码,他还是不满意,说还是引入了外部变量,然后我说没有其他思路了,就没再问

  7. Spring 问题,IOC、AOP、模式,JDK 和 CGLIB 区别,模式底层实现,对 IOC 的理解

  8. 工厂模式的三种,以及个人的理解

  9. 问我会不会 Mybatis,我说用过,但是没细看,就没继续问,问 Springboot 和 Spring 区别

  10. 直接说约二面时间,一共面了一个来小时吧

二面(0801+视频面)

  1. 简历项目,扣的很细,(由于面闲鱼时项目面被按地上摩擦了一个半小时,自己后面基本把所有的细节都扣出来了)答的还可以,面试官说一些情况处理的思路挺不错的
  2. 手写代码:大数相加
  3. 模式,JDK 和 CGLIB,问我有没有用过,我没用过,不过看过 Dubbo 的源码,扯了下模式和单例模式在 Dubbo 中的应用,不过面试官应该不会 Dubbo,就没细问
  4. 数据库:索引、Join、Left Join、Right Join、Union 区别、数据库三范式,设计表时是如何考虑的
  5. 后面就是说了下他们那边的情况,然后给我讲半天 Kotlin 与 Java 的区别,已经 Kotlin 的优势,还给我推荐了一些资料,然后说会有三面,一共四十多分钟

三面(0802+电话面)

三面没问太多技术的知识

  1. 如何学习一门新技术,最近有没有学习新技术,扯了下 Zookeeper
  2. 说下自己对 Zookeeper 的理解已经在项目中是如何应用的,自己扯 ZAB,已经 ZK 在 Dubbo 做注册中心,在 Kafka 中做集群管理,还有分布式锁实现,集群选举 Raft 和 Paxos 区别已经具体的流程
  3. 项目中的难点,如何解决的,(GitHub 上找别人的代码、博客上找答案)
  4. 项目中与团队的冲突(根本没啥团队,自己瞎扯半天,扯了一个 GC 调优的例子,说什么队友觉得不是 BUG 之类的,自己苦心钻研,通过学习的 GC 调优知识解决了,其实根本没这回事,GC 调优也是自己找博客看的,直接套项目上的)
  5. 自己的优势(看书,瞎扯半天,顺便把二面说的 Kotlin 和 Java 的对比说了下,说自己学习时思考的,其实都是瞎扯,现学现卖)
  6. 自己找工作看重什么,就是舔百度呗,舔狗谁不会,舔就完了
  7. 然后说后续会有 HR 联系,后面内推人说业务面通过了
  8. 一共四五十分钟吧

HR(0816)

还没到 HR 面,不过 HR 加了我微信说了下情况

作业帮(意向书)

作业帮比较早,直接找 HR 内推的,第一次面试官迟到,我放弃了,后面又联系我约时间,第二次和其他面试冲突,我放弃了,又联系我约时间,约了第三次面试

一面(0729+视频面)

  1. 简历项目扣的很细
  2. 海量数据 TOPK 问题,并优化
  3. Redis 数据结构,底层实现、ZSET 底层实现
  4. 一致性 Hash(我从余数 Hash 讲到 一致性 Hash 再到一致性 Hash 实现再到一致性 Hash 缺点再引出 Redis 原生集群实现去中心化的哈希槽实现)讲了十分钟吧,讲完面试官都笑了,然后问我 Redis 看过哪些书,自己说了两本 + 掘金小册一个
  5. Redis 持久化实现方式,优缺点
  6. 数据库:索引、存储引擎对比、查询优化
  7. CAS 实现以及优缺点,用 CAS 实现阻塞队列(我也没听明白,自己说了下思路,面试官就说也行吧)
  8. 乐观锁,悲观锁
  9. 线程池原理、类型以及关键参数
  10. Redis 分布式锁实现,Redis 集群选举
  11. Kafka 架构原理,消费异常处理,重复消费处理,Kafak 可靠性,Kafak 副本机制,还一个什么高位低位,我不会
  12. 会不会 Python、Shell,简单说了下项目部署那块的 Shell 处理,然后说写过 LUA,实现的一个小功能
  13. JVM 运行时数据区,Synchronized 和 ReentrantLock 区别
  14. 一道 SQL 题目,我忘了具体是啥,反正我没写上来
  15. 然后面试官说他那边做数据平台的,问我想不想做,我肯定就是舔啊,然后说了下自己对 Spark、Hadoop 的简单了解,又问我会不会 Scala,我说不会,只是知道是基于 JVM 的,他说没事跟 Java 差不多
  16. 没写代码(可能之前面实习的时候有记录,实习写了两道),一共 70 多分钟

二面(0802+电话面)

面试官说他那边网有问题,改成电话面了

  1. 简历项目扣的很细,说了很多异常的场景要你给出解决方案
  2. CAP 和 BASE 理论,以及个人的理解
  3. MySQL 和 Redis 对比,我把能知道的都说了,还是没答到点上
  4. 2PC 和 3PC
  5. 不使用缓存设计一个秒杀系统如何优化(说了下主从架构、读写分离 + MQ)
  6. 三十分钟,感觉面的一般,很多场景题目都没答好

HR(0802+电话)

  1. 为什么去北京
  2. 没实习吗,为什么没实习
  3. 转到数据平台开发愿意吗
  4. 对作业帮的看法
  5. 选择 offer 考虑什么
  6. 手上有什么 offer

华为 CloudBU

华为今年的操作不知道咋搞的,线下联系的 HR 去公司面试的,面完等后续通知,后面 HR 说评级不错,等后续通知

一面(现场)

  1. 简历项目扣的很细
  2. JVM 运行时数据区
  3. MySQL 索引,存储引擎,查询优化
  4. CAP 和 BASE
  5. 2PC 和 3PC、一致性 Hash
  6. GC 调优
  7. 项目中用过到的算法和数据结构,讲了下 Redis ZSET 和 蚁群算法
  8. 发表的论文中的算法(非计算机)他也听不懂,尬说了一波
  9. 分库分表,数据库事务,分布式事务
  10. Reids 集群选举,心跳检测
  11. 讲了下华为那边的业务
  12. 40 来分钟,感觉还是很有深度,不比我面的其他公司简单,华为再也不是聊天就能进的了

二面(视频)

  1. 项目难点,扣了几个细节
  2. 一致性 Hash
  3. 数据库索引
  4. 聊人生
  5. 不到半小时