2021 金三银四面试经历:腾讯三面落马 + 拒网易、CVTE 后,字节四面成功拿下 offer
我 21 年的三月份之前一直在一家中型互联网企业做后端,接近三月中旬工作交接完成后正式离职,我为什么离职?很简单,就是想去更大的企业,让自己有更大的发展空间和学习空间,就毅然裸辞了(注:大家不要学我裸辞,请慎重考虑)。
之后就一直在准备接下来的面试,如标题所示,我的目标就是这几家企业(网易、腾讯、CVTE、字节),其中就想去的还是字节。接下来就是和大家分享一下我的面试经历和面试所问到的问题。
文章后半段会分享一些我个人总结的大厂最新“面试真题笔记含答案”,需要完整版的朋友可以见下图添加上小助手即可免费获取到了
一、CVTE 一面:
稳定性设计
项目难点
数据库连接超时问题
数据库优化
索引计算,为什么会失效
数据库索引结构
聚簇索引,非聚簇索引的区别,回表问题
数据库的数据隔离级别,分别会出什么问题
生成订单,还没提交,发送一条 mp 消息去发货,但可能出现查询不到的订单状态情况
幂等性的保证
分布式锁的设计
面试后续:面试的结果过三天就出了,因为时间的问题,二面就推迟到挺后的,但是因为要走其他公司的面试流程,我综合考虑了一下,还是放弃了二面的机会,但还是非常感谢 CVTE 提供的面试机会!
二、腾讯三面(这几家企业唯一挂掉的)
腾讯的面试难度还是比较高的,面试官也是非常的严肃和专业,当你踏入房间时的那一刻,就可以感受到严肃的氛围。
一面:
服务部署的形式?如果某个机房宕机了呢?是依赖组件还是业务自己做的?了解这块是怎么做的?
流量突增平台会怎么处理?
kafka 在业务中的使用场景
针对项目中的一个小问题,了解整个调用链路
线程交叉打印 12A34B56C,多种实现方式(一个打印数字,一个打印字母)
Synchronized 和 lock 的区别
synchronized 的锁优化是怎么样的
String str=new String (a+b)会创建几个对象?字符串常量池在 Jvm 哪个位置
spring 的设计模式?工厂模式是怎么实现的?
kafka 的精准一次是怎么设计的?平时为了防止重复消费是怎么做的?
哨兵模式是为了解决什么?整个流程大概是怎么样的
Java 进程不见了,怎么定位?
mysql 的事务特性?原子性是怎么实现的(通过 undo log 日志实现)
mysql 的默认隔离级别?什么是不可重复读
select poll epoll 的区别?epoll 的数据结构
TCP 三次连接,这个 listen backLog 有什么作用
TCP 四次挥手,Time WAIT 发生在哪里?两个超时重传时间的作用?大量 timeout 怎么处理?
https 的加密过程?证书认证的过程
进程间的通信方式?有哪些信号通信是不可靠的?为什么是不可靠的?
线程死锁的情况,怎么解决?
1 2 35 5 35 2 56 统计 2 35 出现的次数,按序排序
请求出现超时,但应用查不到这个请求日志,怎么排查
僵尸进程怎么解决?协程有了解过嘛
二面:
算法题:一个字符串,一个子字符串,判断子字符串在字符串中出现的次数,不要求连续,但有先后顺序 s=rabbbit t=rabbit,出现的次数为 3
项目的挑战
Kafka 和 rocketMq 的区别
本地缓存和 redis 缓存的区别
本地缓存的场景
redis 的数据更新策略之类
redis 的部署方式,集群部署的丢失数据,主备切换过程
Flink 使用了什么功能
三面:
项目介绍
在项目中用了 spring boot 是怎么使用的?
线程池项目中怎么使用,遇到过什么问题
Hashmap 的了解
threadLocal 项目中怎么使用
乐观锁和悲观锁的区别,项目中的使用
题目:生产者和消费者的实现,wait 和 notify
Synchronized 和 ReentrantLock 区别
CPU 的内存模型
Java 的内存模型
tcp 的可靠性保证
为什么索引能查询速度
redis 的数据结构,排行榜的实现
分布式事务的实现
spring 事务
spring bean 的储存
Java 数据源怎么使用
后续:最终还是挂在了三面,其实总体下来面试还算可以,就是自己还是面试之前没有做好充分的准备,导致在第三面有些发挥不好。
三、网易二面:
一面:
guava 和 caffeine 的区别
HashMap 作为本地缓存和 caffeine 的区别,本地缓存一般占用多少内存
jvm 的堆内存配置大概是怎么的,如果设置了堆内存的初始值为 2g,启动的时候分配给这个进程的内存是多少
容器内存为 3g,堆内存为 2.8g,会有什么问题
创建很多线程池,导致 oom,这种跟因为本地缓存太多导致的 oom 有什么区别
堆内存和栈内存的区别
redis 缓存的数据一致性问题,分布式锁是怎么样的
redis 集群的架构是怎么样的
HashMap 是线程安全的吗?ConcurrentHashMap 是怎么实现的
Synchronized 锁的实现
锁优化是怎么样的,偏向锁是怎么样的
采用的是什么垃圾收集器?CMS 跟其他老年代垃圾收集器的区别?CMS 跟 G1 的区别
动态代理的区别
Spring Aop 的实现
zookeeper 的 ZAB 协议
项目中主要负责的是什么?方案设计大概是怎么样的,比较难的问题以及是怎么解决的
future.get()是怎么实现的,futureTask 的了解
服务怎么做高可用,进程是怎么监控的
在浏览器上输入一个网址,大概执行过程,链路层,网络层路由器选择
操作系统的内存管理
二面:
细聊了一下项目
数据库的索引,存储引擎的一些问题,平常怎么优化
缓存的一些基本问题,一致性怎么保证,大概架构
服务高可用的实现
Kafka 的大概介绍,可靠性保证,重复消费问题
项目难点
一致性算法介绍
后续:网易的前两面是过了,但是因为刚好遇上了过年,第三面就约在了年后,时间跨度太长了,因为年后我还要去字节面试,相较于网易我更想去字节(不是因为网易不好,只是个人比较向往字节),就拒绝了。
但是还是得吐槽一下网易的面试结果一般是 7 到 10 个工作日才知道,太持久了......。
四、字节四面(终获心仪 offer)
一面:
负责模块的介绍,了解
服务怎么做高可用
本地缓存时效性
mysql 和 redis 数据的一致性,怎么保证
redis 集群部署介绍,get key 从发起请求到获取值的过程
redis 的内部一致性是怎么实现的,RDB 快照的过程,为什么 fork 进程能够读到快照数据?全量和增量复制的区别
redis 数据结构介绍,hash 结构介绍,zset 底层实现跳跃表的实现,跳跃表时间复杂度
询问项目中的一些细节问题
分布式锁原理介绍,释放锁如果不用 lua 脚本会出现什么问题
.Mysql 主键一般怎么使用?如果使用自增 id 的话,返回的记录给前端展示,很容易看出项目的大概记录数,有没办法解决?
自增 id 可以怎么生成?雪花算法介绍?容器部署,怎么保证雪花算法里面的 work id?分布式 id 生成器介绍?
雪花算法里的时钟回拨问题
.高性能 id 生成算法,有什么好的解决方案
Mysql 联合索引介绍
Mysql 索引数据结构?聚簇索引和非聚簇索引的区别?
Mysql 事务隔离级别的介绍?幻读是什么?幻读的解决方案?普通 select 和加锁 select 的区别?乐观锁怎么做?
JVM 的了解,介绍一下从 new 对象到垃圾回收的整个过程
JVM 调优,一般怎么做?具体描述一下内存泄露分析的过程,怎么发现,怎么解决
算法题:二叉树的左视图
二面:
算法题:给出不同服务之间的调用时间,找出链路的最长调用时间(ms)
(A,B,100) (B,C,200),(A,D,200)
最长调用时间为 300m3, A 到 B 到 C
项目了解
分布式事务,缓存,mysql 基本知识,jvm 调优
三面:
细聊了一下项目
算法股票利润最大化(只交易一次,还有可交易多次 leetcode 原题)
继续聊项目,主要讲自己负责的项目模块,难点之类
缓存一致性问题保证
Kafka 消息可靠性保证,出现重复消费,幂等性怎么保证
线程模型,处理网络连接、客户端请求的线程的区别
https 密钥交换过程,公钥怎么保证是正确可靠的
网络的 7 层模型,每层大概作用是什么?tcp 连接后,路由器突然断开了,需要重新连接嘛
进程间的通信方式,共享内存的通信方式,给了几个场景问题
平常的学习方式,怎么提升技术
四面:
感觉前面面试的怎么样,之前面试的算法有没其他最优解
项目整个系统设计是怎么样的?由哪些模块组成?不同模块之间是怎么串联的?模块的边界问题?怎么权衡?可能存在什么问题,可以怎么优化?
针对项目的部分模块进行提问,数据一致性保证?传输的数据有没加密,没加密会出现什么问题?怎么解决
工作期间的最大挑战
系统稳定性问题,怎么处理
平常做业务的模式大概是怎么样的?
同事是怎么评价你的?
HR 面:
跳槽原因、平常学习方法、爱好、期望薪资等。
后续:多亏了面试字节前做的准备还算是很足的,所以总体的面试过程还是蛮顺利的,字节的面试还是得夸夸的,面试官很和蔼,所以面试的氛围蛮轻松的。不久后,我便收到了 offer。
五、面试真题笔记(含答案)分享:
面试前和面试阶段,我个人整理总结了不少的“面试真题笔记”,现在分享给即将在金三银四面试的朋友们,希望对你们有所帮助。
Java 架构面试手册:
Java 面试问题集:(Java 基础部分+算法与编程+html&JavaScript&ajax 部分+Java web 部分+数据库部分+XML 部分+流行的框架与新技术+软件工程与设计模式+j2ee 部分+EJB 部分+webservice 部分+其它)
非常全面
JVM 面试专题以及答案:(涵盖 JVM 所有常见面试题)
MySQL 面试专题以及答案:
Redis 面试专题及答案:
Spring boot 面试专题及答案:
Spring cloud 面试专题及答案:
还有很多就不全做展示的,需要完整版的朋友,可以见下图添加上小助手即可免费获取!已经为大家打包好了。
总的来说,这几个月的奔波,虽然很辛苦,但是自己也收获到了不少。其实当你走进大厂的那一刻,不仅仅可以领略到大厂的面试风格和难度,他们的管理,工作效率都是值得学习的。所以当我拿到这份 offer 的时候,我觉得这几个月的奔波和辛勤学习都是非常值得的。
评论