社招面经:三年工作经验,Java后端[字节跳动、探探]
说实话,社招面试的时候介绍项目占了面试的时间超过一半,但这部分每个人都不一样,所以只能一笔带过,但是社招的朋友要重视项目这一块。这也是我觉得社招和校招最大区别。
因为我这边是做后端的,所以在聊项目的时候主要围绕这些点这说:分布式事务、分布式锁、缓存、分库分表、容器、微服务架构等等。
字节跳动
一面
1. 自我介绍;
2. 介绍项目;
3. 算法:返回一个数字数组的排序值,比如数据[6,2,5,0]的返回是[4,2,3,1];
4. 介绍下redis有哪些数据结构、底层的如何实现?
二面
1. 自我介绍;
2. 介绍项目;
3. 系统设计:一个系统需要加载100G的数据,在这期间还要能正常处理外部请求;
3. 介绍下虚拟内存;
4. 介绍下什么是内核态;
5. 算法:一个正数数组,长度为N,且数组元素<N,统计每个正数出现的次数,要求时间复杂度O(n),空间复杂度O(1);
三面
1. 自我介绍;
2. 介绍项目;
3. 算法题:返回一个树的左视图;
4. 系统设计:微信朋友圈该如何设计;如果换做是微博呢?
探探
笔试题
1. 手撕算法:N个有序列表的合并排序;
2. 系统设计:主播排行榜的设计,要求快速查看主播排行和前后主播;
一面
1. 自我介绍
2. 笔试题的讨论;
3. 介绍项目;
二面
1. 自我介绍;
2. 介绍项目(分布式锁的设计,分布式事务如何实现);
3. 手撕算法1:判断一个树是否是平衡二叉树
4. 手撕算法2:输出一个集合的所有子集
三面
1. 自我介绍;
2. 同步和异步、并行和串行;
3. 知道哪些设计模式;单例有什么缺点;
4. 为什么要做系统拆分;
5. AOP和OOP的区别;
面试结果:两家都收到了offer。