发面经攒人品,也给大家一个参考,自己也从牛客上看了很多面经,希望后面能拿到目标 offer
百度(业务面通过)
百度投递的是个人云部门,但是没有 Java 岗转到了安卓开发
一面(0730+电话面)
具体问题记不清楚了,凭回忆
Synchronized 和 ReentrantLock 区别
创建线程的方式,使用过的有那些,为什么没使用过 Callable 和 Future
讲下 JVM。这块主要我自己在说,一口气说下来说了有二十多分钟吧,面试官一直没说话,我就一直说,从运行时数据区,讲到一个类具体是如何存储的,再讲到垃圾回收机制和垃圾收集算法,再讲到各个版本的 JDK 的垃圾收集器,再讲到 YoungGC 和 FullGC,再讲 YoungGC 的具体过程,对象是如何分配的,出现 OOM 时如何排查,已经自己在项目的一个 GC 调优做的具体工作
SQL 索引,存储引擎对比,B+、B-、红黑树对比,Hash 索引和联合索引
SQL 题目,题目挺长的,我没写出来
并发题目,数字 0-9,线程 A 先打印,打印到 5 之后,线程 B 接着打印。我说了用等待通知机制的思路(synchronized、ReentrantLock ),面试官说不能在外部加代码,只能在
run
里面写代码,我说用 AtomicInteger,说了下思路,要我写出代码,我口述了下代码,他还是不满意,说还是引入了外部变量,然后我说没有其他思路了,就没再问Spring 问题,IOC、AOP、模式,JDK 和 CGLIB 区别,模式底层实现,对 IOC 的理解
工厂模式的三种,以及个人的理解
问我会不会 Mybatis,我说用过,但是没细看,就没继续问,问 Springboot 和 Spring 区别
直接说约二面时间,一共面了一个来小时吧
二面(0801+视频面)
- 简历项目,扣的很细,(由于面闲鱼时项目面被按地上摩擦了一个半小时,自己后面基本把所有的细节都扣出来了)答的还可以,面试官说一些情况处理的思路挺不错的
- 手写代码:大数相加
- 模式,JDK 和 CGLIB,问我有没有用过,我没用过,不过看过 Dubbo 的源码,扯了下模式和单例模式在 Dubbo 中的应用,不过面试官应该不会 Dubbo,就没细问
- 数据库:索引、Join、Left Join、Right Join、Union 区别、数据库三范式,设计表时是如何考虑的
- 后面就是说了下他们那边的情况,然后给我讲半天 Kotlin 与 Java 的区别,已经 Kotlin 的优势,还给我推荐了一些资料,然后说会有三面,一共四十多分钟
三面(0802+电话面)
三面没问太多技术的知识
- 如何学习一门新技术,最近有没有学习新技术,扯了下 Zookeeper
- 说下自己对 Zookeeper 的理解已经在项目中是如何应用的,自己扯 ZAB,已经 ZK 在 Dubbo 做注册中心,在 Kafka 中做集群管理,还有分布式锁实现,集群选举 Raft 和 Paxos 区别已经具体的流程
- 项目中的难点,如何解决的,(GitHub 上找别人的代码、博客上找答案)
- 项目中与团队的冲突(根本没啥团队,自己瞎扯半天,扯了一个 GC 调优的例子,说什么队友觉得不是 BUG 之类的,自己苦心钻研,通过学习的 GC 调优知识解决了,其实根本没这回事,GC 调优也是自己找博客看的,直接套项目上的)
- 自己的优势(看书,瞎扯半天,顺便把二面说的 Kotlin 和 Java 的对比说了下,说自己学习时思考的,其实都是瞎扯,现学现卖)
- 自己找工作看重什么,就是舔百度呗,舔狗谁不会,舔就完了
- 然后说后续会有 HR 联系,后面内推人说业务面通过了
- 一共四五十分钟吧
HR(0816)
还没到 HR 面,不过 HR 加了我微信说了下情况
作业帮(意向书)
作业帮比较早,直接找 HR 内推的,第一次面试官迟到,我放弃了,后面又联系我约时间,第二次和其他面试冲突,我放弃了,又联系我约时间,约了第三次面试
一面(0729+视频面)
- 简历项目扣的很细
- 海量数据 TOPK 问题,并优化
- Redis 数据结构,底层实现、ZSET 底层实现
- 一致性 Hash(我从余数 Hash 讲到 一致性 Hash 再到一致性 Hash 实现再到一致性 Hash 缺点再引出 Redis 原生集群实现去中心化的哈希槽实现)讲了十分钟吧,讲完面试官都笑了,然后问我 Redis 看过哪些书,自己说了两本 + 掘金小册一个
- Redis 持久化实现方式,优缺点
- 数据库:索引、存储引擎对比、查询优化
- CAS 实现以及优缺点,用 CAS 实现阻塞队列(我也没听明白,自己说了下思路,面试官就说也行吧)
- 乐观锁,悲观锁
- 线程池原理、类型以及关键参数
- Redis 分布式锁实现,Redis 集群选举
- Kafka 架构原理,消费异常处理,重复消费处理,Kafak 可靠性,Kafak 副本机制,还一个什么高位低位,我不会
- 会不会 Python、Shell,简单说了下项目部署那块的 Shell 处理,然后说写过 LUA,实现的一个小功能
- JVM 运行时数据区,Synchronized 和 ReentrantLock 区别
- 一道 SQL 题目,我忘了具体是啥,反正我没写上来
- 然后面试官说他那边做数据平台的,问我想不想做,我肯定就是舔啊,然后说了下自己对 Spark、Hadoop 的简单了解,又问我会不会 Scala,我说不会,只是知道是基于 JVM 的,他说没事跟 Java 差不多
- 没写代码(可能之前面实习的时候有记录,实习写了两道),一共 70 多分钟
二面(0802+电话面)
面试官说他那边网有问题,改成电话面了
- 简历项目扣的很细,说了很多异常的场景要你给出解决方案
- CAP 和 BASE 理论,以及个人的理解
- MySQL 和 Redis 对比,我把能知道的都说了,还是没答到点上
- 2PC 和 3PC
- 不使用缓存设计一个秒杀系统如何优化(说了下主从架构、读写分离 + MQ)
- 三十分钟,感觉面的一般,很多场景题目都没答好
HR(0802+电话)
- 为什么去北京
- 没实习吗,为什么没实习
- 转到数据平台开发愿意吗
- 对作业帮的看法
- 选择 offer 考虑什么
- 手上有什么 offer
华为 CloudBU
华为今年的操作不知道咋搞的,线下联系的 HR 去公司面试的,面完等后续通知,后面 HR 说评级不错,等后续通知
一面(现场)
- 简历项目扣的很细
- JVM 运行时数据区
- MySQL 索引,存储引擎,查询优化
- CAP 和 BASE
- 2PC 和 3PC、一致性 Hash
- GC 调优
- 项目中用过到的算法和数据结构,讲了下 Redis ZSET 和 蚁群算法
- 发表的论文中的算法(非计算机)他也听不懂,尬说了一波
- 分库分表,数据库事务,分布式事务
- Reids 集群选举,心跳检测
- 讲了下华为那边的业务
- 40 来分钟,感觉还是很有深度,不比我面的其他公司简单,华为再也不是聊天就能进的了
二面(视频)
- 项目难点,扣了几个细节
- 一致性 Hash
- 数据库索引
- 聊人生
- 不到半小时