前言:本人大概是6月份初投递的字节跳动,之前字节教育相关的部门约过面试,但是最开始自己没有准备太好,在第二面的时候凉了,本来已经觉得与字节无缘了今年,没想到当前后端财经方向的部门把我捞起来了,万分感谢!
这是一些记录我简单回忆然后写下来,希望对大家有所帮助:
1面:一面流程
(简单自我介绍)2-3分钟;
(简单项目经历介绍)4-5分钟;
(重点考察Java基础知识)这是面试重点,面试老师一问一答的形式,考察知识点如下
1):集合(linkList 和arrayList的区别,hashmap的数据结构,concurrentHashMap分段锁结构,segment,1.7和1.8的不同:1.8取消了分段锁机制,而是用synchronized+cas具体去锁每个桶实现更细粒度的线程安全,链表和红黑树解决hash冲突,红黑树的特点,红黑树为什么比搜索树快)希望朋友们自己要去深究一下这个!
2):java并发相关:synchronize,reentainlock,volatile这三个是重点考察对象,如何实现线程安全的,synchronize指令monitor.enter和monitor.exit,volatile解决指令重排和内存可见性的原理;sync与reentainlock的区别,二者的重入是什么原理,如何实现;
3):多线程实现方式runable和callable区别,线程池的参数有哪些,常用线程池有哪几种,一般会问你你们项目里用的什么线程池。
4):数据库相关,mysql事务4大特性,事务隔离级别,每个级别解决,脏读、幻读、不可重复读什么问题,mysql索引的结构,普通索引和聚簇索引的区别,为什么用b+树做索引,b+树的特点,索引覆盖和回表的实际过程。什么情况向索引失效等等。
(算法-另一个考察重点):算法每次考试都不一样,所以我只能说我遇到的,推荐大家准备面试之前先去复习一遍数据结构的常用数据结构数组、链表、二叉树、队列、栈等、然后再去吧leetcode的简单经典题刷一遍,再去仔细研究研究,回溯,动态规划等等差不多就可以了,没有必要去刷困难题,因为面试官不会等很长时间等你写出来困难题。所以他也不会出困难题,基本难度都是在简单题里面,我记得最难的就是那个在一个矩阵里找到岛屿有多少个,我遇见的。
2面:二面流程
(简单自我介绍)2-3分钟;
(项目介绍-重点讲自己特别拿手又能拿的出手的地方,比如有难度而你自己又能解决的模块);二面面试官会重点问你项目相关的知识,比如我的搜索系统用到了ES那么面试官就重点问了ES索引结构,分片和副本机制,项目中针对ES做搜索有哪些优化等等,另外还用到了kafka,那么问了kafka如何解决消息发送丢失和消息重复消费的方案,kafka的架构,Topic分区机制,消费者组的机制等等,另外还有zookeeper选举机制,节点间通讯用的协议;
(另外推荐大家简单复习一下网络相关的知识):计算机网络的5级分层,应用层-传输层-网络层-数据链路层-硬件层;分别主要用什么协议,另外去看看tcp ip udp协议有什么区别,还有http和https的区别;
(算法考察)找到一棵完全二叉树的最后一层的最右节点,我自己最开始用的广度优先遍历,最后一个遍历的节点就是这个节点,时间复杂度是O(n),另外还有更优化的方式,具体去网上搜一些有很多,如果能写出时间复杂度很棒的算法,面试加分会很高。
3面:三面流程
不得不说一句,字节跳动的面试流程真的很流畅,很看重时间,也很尊重双方的时间,我2面刚结束,第二天就通知了结果和下次面试的时间,非常nice!
三面同样式自我介绍+项目简单介绍。
三面面试官是一个很棒的老师,问的更多是软实力,对技术问的很少,但是可能只是我这个情况,大家还是要积极准备的,问学历背景,问工作背景,问哪里人,问未来规划,问为什么跳槽,另外针对我的未来规划给出了一些业内大牛式的建议,感谢!!!
基本问完之后差不多20来分钟就说没啥问题,然后问我有想问的吗,ummm特别尴尬自己问的事情太low了,老师说这些都是细枝末节的问题,包括技术,自己现在想学想问的,5年之后早被淘汰了。umm就不献丑了,直接说没啥想问的,特别感谢老师的面试。
总结:字节从面试流程上来看就能看得出来是一个很珍惜时间的公司,可能这就是加班多活多的原因吧,整个流程特别丝滑流畅,不管结果如何都会及时反馈。整体总结就是还是要自己准备扎实,不管面试任何一个公司都不慌。目前已经收到hr消息三面通过明天最后hr面,期待能有好的结果,自己再来牛客还愿!感谢牛客,也感谢各位老哥的分享,老哥们的面经对我帮助很大,让我系统的理了理自己的知识结构和准备方向,感谢!
全部评论
(8) 回帖