第一面:

第一面主要考察基础,先简单自我介绍,以及介绍一下项目,然后开始考察基础。

TCP相关基础知识

问题1:请详细描述三次握手和四次挥手的过程

要求熟悉三次握手和四次挥手的机制,要求画出状态图。

缓存和数据库的基础知识

问题1:描述一下redis有哪些数据结构。

基础的数据结构有5种,String/List/Hash/Set/Zset,还答了高级数据结构HyperLogLog/BitMap/BloomFilter/GeoHash。面试官还问了BloomFilter的原理以及Zset的实现原理,主要讲解跳跃表;延时队列如何实现,分布式锁原理。

问题2:MySQL场景题目

面试官提供场景,要求写出查询SQL,考察联合语句,如何分页以及复杂语句的优化。

第二面:

第二面是电话面试,主要考察项目,通过项目提出基础问题。时间30分钟。

之前有微服务经验,面试官就详细问到微服务的架构、框架的实现、服务治理、分布式一致性等问题。

之前有玩过日志监控系统,首先还是考察架构,ELK的相关知识,重点描述Elasticsearch的一些架构原理,比如倒排索引的原理。

问消息队列的相关知识,接触过Kafka,问了Kafka中消息可以被多个消费者消费吗?;以及选举机制和HW机制。

开放性问题,讲一个之前遇到的问题,并如何解决的。这个描述生产过程中运行的问题,并描述排查问题。

裸写算法

二叉树多个节点的最近公共祖先

第三面、第四面

第三面和第四面是组长和总监面试,聊解题思路和项目,这二面的特点是根据项目经验问相关的问题,要求广度,尤其考察架构广度,会将目前的项目量级扩大几十倍,重新设计架构,同时涉及到一些压力面试。

感觉如果不紧张,熟悉项目的话,问题不大。

会有很多开放性题目,包括平时遇到问题的解题思路、同事之间的协作等。

被问到的知识点有负载均衡算法,ngnix如何做限流,四层LVS和七层Ngnix的区别,以及微服务架构的设计思路。

面试时间均在20-30分钟。

总结

三面技术面之后,就是HR,这个就不多说了。整体字节跳动的面试感受,面试官很专业,要求基础知识很熟悉,面试之前一定要准备后再去面试。LeetCode题目也要刷。手写算法留的时间不多,3-10分钟,如果3分钟还没写,就要求讲出解题思路。

切记面试前一定要刷题和准备,简历上的项目不熟悉的千万不要写上去,写上去的项目备好2-3个技术方案。

分享

觉得有帮助的记得帮忙转发一下这篇文章,让更多有需要的朋友看到,感谢您的支持

在这里将我面试之前刷的一些面试资料题库分享出来,感兴趣的朋友一键三连+评论,然后添加我的VX(tkzl6666)即可免费领取。