7

字节跳动面经总结,都是套路!(新鲜出炉)

 2 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzAxODcyNjEzNQ%3D%3D&mid=2247554697&idx=4&sn=b4d06ae910bf05688ac39a0055aa4160&chksm=9bd3bb11aca43207bda696679efb4f4ec033c9e8c02a412430098d105ec72d60288662318217&scene=27
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

字节跳动面经总结,都是套路!(新鲜出炉)

程序猿DD 2022-01-28 03:10
收录于话题
#字节跳动 2 个
#面经 1 个
640?wx_fmt=jpeg

hello,大家好!

之前给小伙伴们分享过简历模板

大家都下载了吗?

今天来看一份比较详细的大厂面经,

帮助大家快速熟悉面试流程

后面给大家准备了更多优质的字节跳动面经

下方公众号回复【字节

即可免费领取640?wx_fmt=png

0?wx_fmt=png
SpringForAll社区
分享关于Spring的一切
284篇原创内容
Official Account

背 景

本人2本毕业,目前工作四年,一直是Java。

做的都是些二线公司,没做过一线。四年跳了三家公司。在家休息了几个月,

五月中旬开始面试。

由于跳槽过多而且已经是淡季的原因。内推的我的字节哥们儿,推了不知道多少个部门,从字节海外电商推到教育线简历都由于频繁跳槽都挂了。最后才被广告营销捞了起来(而且居然是个Java部门)。

这里还是奉劝大家跳槽不要像我这么频繁,唉。而且想进大厂,建议找人内推。这是我第一次面字节,也是今年第一场面试,各种意义都算是初体验了233。

一 面

一面是个小哥,估计比较腼腆,骗我说显示坏了他没开摄像。我笑着说没事。

技术面试20分钟,算法我做了10分多种orz。总计半个多小时。

1. 简单说下项目

我项目比较挫,就介绍了下,然后项目就跳过了

2. redis的zset是如何实现的?为什么使用跳表不使用别的数据结构?

redis的zset基于ziplist和dict以及skiplist实现。这里我简单说了下这三个有什么字段,以及优化的细节。至于为什么使用跳表,我直接回答了官方原文。话说回来感觉zset每个大厂都会考啊。

3. redis的持久化方式

rdb和aof,这里本来我想扩展说一下。面试官直接说时间有限,不用了,希望能在短时间多问点东西。这场面试整体节奏很快,很多都是简单说下就问下一个问题了。

4. redis的集群方式,各有什么特点

哨兵配主从,可以保证可靠。redis cluster可以增加可扩展性。

5. redis cluster的通信机制,说一下蜂巢

基于goosip,具体的不了解,这一段就跳过了。

6. mysql innodb 以及mongodb的索引结构

b+树,简单讲了下。这一题就结束了。

7. rr级别如何防止幻读

这一题我听错了,听成了rr级别为什么要防止幻读。所以回答偏了。就说因为rc级别不会有 LostUpdate问题,但是rr级别由于mvcc版本会出现,rr作为更高等级级别必须要处理该问题,所以使用锁来处理,但是快照本身不能解决write skew,所以并没有解决幻写,某种角度来说也没有完全解决幻读。后面发现好像回答方向错了,所以还是简单提了下快照读,当前读,间隙锁,行锁之类的东西。这一题讲的有点久了,失误失误。

8. synchronized原理,讲一下底层实现

一开始我也就标准的说了下锁升级的过程,也说了mutex lock。最后面试官问到比较深,问我moniter里面啥内容,我就记得waitsets,entrylist,owner,count这几个,然后说了下,Java基础就这么结束了。

9. 除了zk你还用过其他注册中心吗?之间有什么区别

nacos,eureka,consol。有的是cp,有的是ap。注册中心一般走ap就够了。简单说了下原因

10. 算法 

开始出的是,最小编辑代价。一看是较难,我担心做不出,要求换了一题。换成了二叉树之字形遍历,由于紧张,结果写了10分钟。尴尬的一笔。

小结

整体而言就是节奏很快,是今年节奏最快的一场面试,建议大家准备的时候也琢磨下怎么用最少的字回答最多的内容。难度的话符合我对字节面试常规难度的印象。最后出算法的时候,出了一道较难的题,把我心态整崩了。因为据我了解,字节一般前面回答的不错的话,算法不太会刁难你。当时做题的时候我满脑子都想着为啥出这么难,我前面回答的还行啊。其实也可能是面试官不懂这个规矩,就随便出了一道,不要太敏感2333。

二 面

最难的一面来了。

面完我整个人都裂开了。面试官我感觉应该也是所有面试官中技术最强的,没有之一。另外面试官那边噪音很大,有时候听不清他说什么。不过这回面试官终于露脸了。

技术25分钟,算法25分钟。

1. 说下项目

这回面试官比较关注服务器的数量,qps之类的东西。这些我都记得,不过项目整体比较挫。面试官也就不深问了,直接进入八股文环节。

2. 会什么语言?说下jvm吧。

我只会java,哈哈哈。所以面试官就问java了。jvm问的还挺深,什么tlb,逃逸分析,栈帧里面有什么,还好去年看过全都防出去了。

3. 说下metaspace和permGen。

本来信号就不好,还说英文,我听了几遍才知道问的是元空间和永久代。简单说了下。

4. 元空间中创建对象会不会开辟物理地址内存

这tm问的是什么?我题目都不太懂orz

5. system.gc()一定会触发gc吗?和full gc有什么关系?

不一定。该题回答的比较朴素。

哈哈。java就这么结束了

6. redis的aof文件过大怎么处理,怎么解决,开启aof的方式有几种?了解rewrite命令吗?

由于不了解这一块儿,几乎团灭了。redis还算是我的强项,结果居然败的这么惨

7. kafka。。。

回答没用过(其实用过,但是好多年前的事情了,所以就直接说没用过,简历上只写了rocketmq。)

8. 用过什么mq,说一下rocketmq的消费方式,什么是死信队列

只用过rocketmq。集群和广播,面试官问只有这两种吗,我说是啊。然后大家一阵尴尬。死信队列简单讲下就结束了。

9. 说一下exchange。。

回答说我没用rabbitmq(其实我用过)。面试官原来前面听错了,以为我用过的是rabbitmq,吐槽说难怪消费方式回答只有两种。

10. ack机制,offset何时位移,broker复制原理

作为mq白痴,基本回答的都是浅尝即止。其实我activemq,rabbitmq,rocket,kafka都用过(毕竟跳槽多)。但是mq确实是我的弱项,唉,这一块儿面的我直接心态崩了,当时心想要挂要挂。

11. mysql索引优化没有走对是什么原因

终于又问我擅长的了。说了下优化器的策略,面试官说不是想问这个,就问我explain,然后我就把explain的字段都说了一遍,面试官说还是理解错了。然后说算了这题跳过,有点小尴尬

12. explain语句会执行sql吗

不会,优化器就结束了。所以rows会有误差。

13. mysql两段提交

说了下binlog和redolg以及分组。说实话,问题直接就说两段提交,不熟悉的人可能都不知道问的是啥啊

14. 说下undolog,是不是只有rollback才会触发undolog

基于回滚保证原子性。由于innodb的锁是锁住索引,所以更新主键之类的的时候,原数据也会保留,所以更新后微commit前一条数据会变两条。在commit的时候会回滚掉原数据,这个场景有点绕,但是我觉得我应该没回答错。

15. 算法 

字符串数组中的字符能否拼接成为某个字符。当时心态比较崩。所以这题虽然不难,但是最后没写出来没走通用例orz。

小结

面完心态崩了,除了mysql,其他回答的都一般,算法也没做出来。面试官看我脸色不好,还挥手让我后面加油。当时是真的以为自己挂了。没想到最后有三面,这里感谢下二面面试官,哈哈哈。

三 面

三面面试官是个大佬,头秃的严重,全程都挺忙的样子,有点心不在焉,大多都是聊天,问了下三份工作公司都是干啥的,自己做了什么项目。

聊天10分钟,技术10分钟,算法5分钟。

1. java创建一个网络io流。会有什么操作,基于java底层或者网络或者操作系统说一下。

这块我java就简单了下(因为据说字节哪怕面的是java,也很可能做go,所以感觉多少点语言之外的可能好一点)。主要还是说了操作系统和网络。比如ringbuffer,dma,软中断硬中断之类的。

2. 零拷贝说一下

就简单说了下sendfile和mmap。此外提了句senfile比较类似于网络中的对等概念,然后转到了网络

3. 说一下ftp和http的区别

不了解ftp,跳过

4. 文件下载一般用什么协议,udp还是tcp

udp用的多一点,两个都可以。udp主要nat穿透的话打洞容易,这一题过。

5. close wait和time wait有什么区别

这两个我回答的时候刚好说反了,哈哈哈

6. 怎么保持长链接,为什么需要长链接

keep-alive。不然每次链接都要创建fd,浪费资源开销。

7. 日志海量收集

开始的时候没听懂问什么就说日志用kafka啊。最后他提示多台机器,我就说mapreduce,简单说了下mapreduce,就结束了。

8. 你说的主要是离线处理,如何实现实时的呢

流处理的话,flink,spark都没用过,所以不强答了(我简历也没写我会大数据啊。怎么问这个orz)

9. 算法 

给出一串字符串,写出选取三个字符组合出来的所有可能。这一题是唯一一题白板,不需要运行。(这题看到我就想用dfs加回朔,但是问了下面试官说固定只选三个,我就傻傻的决定写三层for循环,写完后面试官看了一下说你就写了三层循环啊,我说嗯)

小结

这一面问的感觉都有点莫名其妙,很多人看了我的面经都吐槽问的都是些啥。最后就挂在这个算法上了。感觉自己傻了。内推我的老哥说我面评就一句话,说我算法表达弱,我想想就明白了,大家写算法的时候一定要想清楚,宁可写出来是错的,思路也要往最优解走啊。唉,字节也是我第一次当场写算法,以为只要结果对就行了,结果吃了不了解套路的亏。

总 结

最后知道挂了还是很可惜,不仅已经到第三面了,最重要的是明明是能做出来的,结果自己傻x了。唉,看来是和字节无缘(感觉对不起2面面试官)。

不过字节的效率还是很高的。可惜了我刷了这么多算法,字节面完后我就再也没有刷过一题算法了。

要说最大的问题,就是之前没写过算法,一旦不是原题,我就会很慌。其实当时我的算法水平已经够应付社招了。至少之后没再刷过一题算法,以及其他公司算法难度和字节差不多的情况下,我都是基本快速撸完,还没有哪个五分钟不能过的。也算是字节让我在算法上成了老油条吧233。

来源:牛客网


想进大厂的小伙伴请注意,
大厂面试的套路很神秘,
早做准备对大家更有利,
埋头刷题效率低,
看看面经会更有效率!小编准备了一份字节跳动面经汇总集关注下方公众号,
回复关键词【字节】就可以免费领取
0?wx_fmt=png
SpringForAll社区
分享关于Spring的一切
284篇原创内容
Official Account

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK