说到字节跳动的经历还是比较搞笑的。一开始我特别想去那个游戏部门,当然data部门也是特别想去的,但是提前批只能投一个,于是投了游戏,结果第二天就给我挂了。。。中间北京的教育捞我,但是不想去北京所以拒绝了,上海的测试捞我,我也不太懂测试所以还是拒绝了。正式批的时候我投了俩,游戏部门和data,结果游戏第二天又给我挂了。。。哈卖批。。。过了几天data也给我挂了!我想真的是跟字节命里犯冲。。。这时候阿里学长看我阿里面试最后一轮表现不太好,想给我托字节内部捞一下去教育,结果这时候data主动把我捞了!!!真是神奇的操作啊。。。以致于我一直觉得字节这是在嫖我啊,这摆明了拿我刷kpi啊!这我能答应吗?。。。我答应了。。。事实证明,是我小人之心度君子之腹,我错了!orz!在文末分享了我为金九银十准备的备战资源库,包含了源码笔记类,大厂面试真题,跳槽解析,简历解析,项目实战源码+笔记+工具:
正式批(别看了都是正式批,提前批就没让我面!)一面。面试时间 08-18,19:53 - 21:08,全程1个小时15分钟。涉及内容:项目、网络、数据库、算法题
- 1. 自我介绍
- 2. 项目中的有挑战的点(问了大概有五六个问题)
- 3. 问了下本科啥专业的,学过哪些课程(主要是为了下面面试问题的内容,我说了操作系统和计算机网络学的时间久了,结果就挑着问hhh,佛了)
- 4. 你知道 DNS 协议嘛?描述一下从输入域名到显示的过程(从 DNS 解析到 HTTP 链接建立到内容返回浏览器渲染)
- 5. 你刚提到了递归查询和迭代查询,具体说一说什么样子的?(上面说到 DNS 获取域名对应的 ip 过程分为两个过程,即递归和迭代)
- 6. 本地域名服务器向根服务器查询的是什么?(这边没答好,我说的是下一级的域名服务器的 IP 地址,经过引导理解了,是要从输入的域名检验跟服务器中对应的域名服务器的 IP 地址)
- 7. TCP 的三次握手,详细描述一下,最好包括他的一些状态(说到了 SYN、ACK 以及确认序号和起始序号,但是面试官说第二次握手的时候不需要 SYN 的标志,但是书上是这么说的,让我再看看,我也不太好反驳。。。)
- 8. DNS 用的 TCP 还是 UDP?为什么用 UDP?(就是 UDP 的好处,从握手效率、报文的长度来说)
- 9. TCP 和 UDP 的各自的应用,举例子
- 10. TCP 的四次挥手(仍然要说标志位和序号)
- 11. 2 个 MSL 指的是什么?为什么要 2 个?(确保服务端收到,以及防止端口重用时网络中仍然有残余报文段导致错乱)MSL 指的是什么?(包生存时间)
- 12. 学过数据库吗?ACID 是指什么?(事物的四大属性)隔离级别?解决的问题?(脏读、不可重复度、幻读)这三个现象解释一下?
- 13. Mysql 默认的隔离级别是什么?在 Innodb 的可重复读的情况下可以解决幻读的情况吗?(我回答不能,其实应该是不能完全解决,可以一定程度的避免,可以从 next-key lock 的原理想)
- 14. 知道聚簇索引和非聚簇索引吗?(底层,B+ 树的叶子节点区别)非聚簇索引查询的话会做几次查询?(一次)非聚簇索引存的是什么东西?(叶子节点存的是键值和数据所在物理地址)
一面总结:比较基础,面试相当友好,没有问奇奇怪怪的问题,太幸运了
二面
正式批二面。面试时间 08-20, 14:00 - 14:45,全程45分钟。涉及内容:java 基础、锁、内存分配、算法
- 1. 自我介绍
- 2. Java 的继承介绍一下?多态指什么?(由于面试官没用过 java,所以只问了点基础的)
- 3. 重载和重写?方法签名?
- 4. 类的加载机制(加载、验证、准备、解析、初始化,每部分做了什么)
- 5. Java 里面 Map 的类型(提了 HashMap、ConcurrentHashMap、LinkedHashMap、TreeMap)有什么区别?(提了最常说的两个 map 的区别)
- 6. CAS 是什么呢?(前面 ConcurrentHashMap 提了)
- 7. 什么是乐观锁什么是悲观锁?(CAS 里提了)
- 8. 还有什么说么?(从乐观、悲观锁到读写锁到互斥锁共享锁到CLH锁MSC锁自旋锁偏向锁公平锁和非公平锁可重入锁,脑壳疼,这锁太多了一下子记不起来全部,数据库里面还有老多了)
- 9. 线程间的同步方式?(共享变量、wait/notify、condition 的 await/signal、父子线程可以通过 InhritableThreadLocal、消息队列)
- 10. 什么是死锁?怎么避免?(条件和破坏条件)
- 11. 线程和进程有什么区别?
- 12. Java 里面怎么分配内存?(讲了一下从栈到堆中的内存分配)
- 13. 堆满是什么概念?(总算扯到垃圾回收了,从 minor gc -> full gc 到新生代和老年代的占比)
- 14. 虚拟内存和物理内存有什么区别?空间置换?
- 15. 写道题吧。接雨水
- 16. 反问
二面总结:本来以为是会问项目,没想到还是基础方面的。不过由于面试官不用 Java,所以一些问题他会深入问而不是看你明白就停了,所以得很了解才行。总的来说没出大问题,
三面
正式批三面。面试时间 08-20,15:00 - 15:30,全程30分钟。涉及内容:项目、网络、基础、个人规划
- 1. 自我介绍
- 2. 问了问项目
- 3. 一致性哈希的均衡性?(前面项目里用到了一致性hash)虚拟节点是指什么?
- 4. Mysql 的高可用方案?(讲了一下我们自己用的,以及一些市面上的方案)
- 5. ELK 用来干什么?数据量大了怎么优化?
- 6. http 协议各个版本的区别?演进的逻辑?
- 7. TCP 的一些拥塞控制算法了解多少?
- 8. 怎么确定数据包丢了?(冗余 ack)ACK 会不会丢掉呢?
- 9. Java 的内存调优?
- 10. 内存 gc?(到了最熟的部分,松了一口气)
- 11. 对未来的一些工作有没有一些规划?从哪块入手?
- 12. 反问
三面总结:项目问了一些,基础也问了,总的感觉字节还是偏基础一点。
hr面
其实也不算 hr 面了,主要就是了解一下情况然后就发了意向书,中间审批过程比较长,等了很久生怕跪了。。。问题的话没什么好说的,基本就是意向地点,投了哪些公司和部门,现在手头上有什么 offer,有什么计划,毕业时间,哪里人等等。电话还没打完就发意向书过来了,感觉有点兴奋,但是强忍住不表现出来。。。
总的总结
楼主投的是杭州的 data 不过,面试流程还是很快的,从 16 号笔试结束到 23 号四面结束,一共一个礼拜,然后加上 offer 审批一个礼拜多一点,半个月走完全部流程收到了意向书。面试经历可以看出字节其实对项目不是很看重,更多的是对基础的掌握和深入,所以建议大家认真复习,知识点不要看过算过(中间好多点不是很熟悉,靠引导才回忆起来,所以感觉评价会差很多orz)。总的来说感觉 data 还是比较缺人的,并没有为难我,问题也都很基础。
最后希望大家都能收获自己满意的 offer!!!
菜就要查漏补缺,不知道自己菜的人才最可怕,这次金九银十我已经跃跃欲试了在家也没少准备,下面分享下我的金九银十备战资源库,有需要的可以直接转发本文后:
有需要完整版源码+笔记的朋友:
——————转发+评论+点赞文章,扫码即可。