首页 > 编程知识 正文

2022年字节跳动面临的挑战,2022字节跳动后端开发笔试题

时间:2023-05-06 05:55:24 阅读:178732 作者:978

因为公司的原因换了工作。 首要目标是打工。 12月我在找朋友内申的上海教育部门。 朋友让我做了更多的准备。 两周后终于开始头版了。

附上新鲜的一二三四五面经。

写在前面

面试兼职一定要提前复习,提前决定多快能完成。 特别是算法,绝对重要。 我已经刷了三年LeetCode了,所以算法没怎么复习。 在3次面试中一共写了6个问题。 基本上是原题。

然后是数据库、网络、消息中间件、体系结构等。 如果学校招募的话,框架不用太深。 知道一点就好了。 招募的话要重视自己的深度和广度。

我的情况

我工作了三年多。

1年C语言开发,3年Go后端开发。

我在BiliBili就职,现在在创业公司。

头版(视频面试)

Go语言

GMP日程模式,很多面试官都会问这个。 好好复习,谈谈亮点,谈谈其他同学说不出口的话。

Context的使用方法,接下来问了几个follow up,并不是很难。

语言问题比较的基础,并不是深入到细微的地方。

操作系统计算机网络

选择和出口。 (普通问题,一定是考题) )。

HTTP和HTTPS的区别。

TCP拥塞控制。

数据库

你使用过什么类型的数据库? 为了不踩漏洞,我会尽量回答自己熟悉的事情。

Mysql使用了什么样的数据结构? 可以具体说一下吗?

大库DDL该怎么办? 和面试官很长时间都在烦恼,这一部分感觉像是在正常回答。

中间件

你用过哪个中间件? 回答的人多为kafka和rabbitmq。

rabbitmq的结构。 我只是用过,但没有具体研究过。 很凉。

kafka的结构、如何保证顺序等。 这项研究比较深入,答案也比较好。

演算法

206 .翻转链表

15 .三数之和

时间是1小时5分,总体上说很顺利,哥哥也是个好人,很专业,但完全不问项目的事,当天晚上hr约好了两面。

双面(视频面试) )

两面是部门的老大,说话很快,切换问题也很快

Go 语言

Go的垃圾回收是怎么实现的,幸运的地方在哪里,不好的地方在哪里。

操作系统计算机网络

详细说明HTTPS的加密过程需要几次通信。 这个我看过,但是没有经常复习。 很凉。

请三次握手和四次挥手,说time_wait。

数据库

在什么情况下Mysql的误读,Mysql如何避免?

架构

设计大量的评论系统。 这部分一共讲了将近20分钟,有人问我头秃了。 公司招聘的伙伴一定要好好准备。

算法

面试问题02.05 .链表合计

76 .最小覆盖字符串

用不了一个小时。 架构的话有点差,但稍后用算法稍微退回去。 伟大的人对我说以后要好好准备基础和体系结构,听了那个意思就过去了。 第二天,hr的姐姐约好了三面。

三面(视频面试) )

第三面是我们的技术VP。 先自我介绍的话,一面和两面好像都没有自我介绍。

自我介绍后,请我说了我最擅长的项目。 我说了以前在B站做的项目。 说了不起的人很普通,开始问基础。 这个水平的伟人已经不是care语言了,所以我没有听说关于Go的知识。

操作系统计算机网络

你用过哪个锁? 自旋锁和排他锁有什么不同? )学生们要锁门好好复习,也一定是考点之一) )。

你用过哪个分布式锁? 回答mysql、redis、zookeeper分别讲述了优缺点。

redis setnx expire有什么缺点,如何优化? 因为之前自己用过所以回答了,但好像不是面试官希望的最佳答案。

打开URL的过程。 (这也是必须考点,基本上谁都会,所以要尽量说别人不知道的话,有自己的想法,让面试官眼前一亮。 我不是认为我在做幕后交易)

这部分的答案比较顺利,中间基本上没有停顿和思考。

数据库

b树和b树的不同之处在于,为什么mysql要用b树,mongodb要用b树。

你知道redis的跳跃列表吗? 你为什么不用红黑树? 我回答说,因为红黑树的实现比时钟跳更复杂。 但是,面试官不太满意。 后来调查了一下,有了这部分的理由。

谈谈redis集群是如何实现的,一致性的hash吧。

基本上是基础性的,可以回答。

架构设计

设计一个列出主要表格结构的微信朋友圈系统,只需实现聊天列表等基础性功能即可。 写出一些数据结构,和面试官讨论后,很快就过去了。

如果是这个部分的话,最好事先练习,抓住那个要点,在解答之前先问清楚需求。

算法

最大的交集


把一个方程式设计成树以及很多的 follow up (这题应该也是原题)
耗时一个小时,聊的比较顺利,感觉字节面试时间卡的都比较准,基本上都是一小时左右。

四面(视频面试)


四面好像是交叉面,整体下来也不是特别难,基本上都答出来了。和三面一样,也是先过一遍简历,问一下项目中的问题,再开始相同的套路。

Go 语言
Go 的逃逸分析了解过吗,能不能写一个。
操作系统&计算机网络
问了进程的调度,因为大学有深入研究过时间片轮转算法,所以着重讲了一下。
数据库
Mysql 集群如何保证数据的一致性。分别回答了弱一致性和强一致性。
架构&设计
类似于设计一个长链接转短链接,不过需要考虑高并发,回答了分库分表。
算法
面试题 16.25. LRU缓存
四面基础聊的不是特别多,稍微答到一点就立马切换到下一题了,架构聊的多一点,总体聊的还算比较顺利,不得不说字节的面试基本上都是一个套路,每个系列都会问一下,但是问的都不是特别深。
本来以为四面就结束了,第二天换了一个 hr 告知还有五面,于是约了下周五面,中间和 hr 也聊了很多,hr 先问了一下我的情况,然后告诉我一些注意事项。hr 说面试官可能会问一下工作领域相关的问题,问的问题会比较开放,让我好好准备一下。

五面(视频面试)


五面好像是北京那边的大佬,我以为就是谈谈心,聊聊人生规划的,然而依旧是技术面。先简单问了一下项目,然后直接开始聊架构设计。

架构&设计
Mysql 集群在保证强一致性的情况下,如何保证高并发。聊了好多种方法,但是面试官都不是很满意,中间磕磕绊绊的。最后问可不可以用缓存,我前面提到了使用 redis 中间做一层,但是面试官说用 memcache。。。
设计一个海量日志写入系统。这部分之前没有接触过,答的不是很好,面试官也不是特别的满意。
感觉五面有点凉,一共才聊了 30 多分钟,不过架构部分也确实是我的薄弱项,确实需要花时间好好的提高一下,之后需要好好的学习一下。

后续


后来问 hr 情况,hr 说还在讨论,让我等等。然后就没有然后了,下次再战吧。

复习建议


重要性的话和工作经历有关系。校招应该更看中算法,建议同学们多刷题,社招的话可能会更注重架构把。大家还是需要根据自己的情况去复习。

基础:数据库和网络一定要重点复习,千万不要觉得简单的东西可以不复习,有时候面试官并不想难你,只是想象征性的过一下而已。有时候你觉得的简单的问题,其他人肯定也简单,想要突破重围,那就要说出自己的亮点,说出自己的特色,但是这部分不是很好说,需要多花点时间去研究。
开发语言:语言的话主要还是平时的积累,多看源码,要知道对应语言的一些特性和比较常用或者有特色的标准库。比如 Go 的 GMP 模型,垃圾回收,channel 都是必考点,最好去读一下源码。
数据库:最重要的肯定是 Mysql,Mysql中比较重要的就是隔离级别和索引,一定一定要弄懂。然后就是 redis,也是经常会问的一个东西。
中间件:这个也是必问的一个环节,尽量要多了解一些,但是一定要说自己会的,至少知道运行原理和特点。比较重要的中间件有:memcache、kafka。
架构设计:有实战最好,没有实战多学习一些开源的架构,尤其是日志系统、评论系统、聊天室相关的内容,经常会考到。
项目:好好准备一个有亮点的项目,很多面试官喜欢让你说一个印象最深的项目,这时候就是你的表演时刻了。
其他:分布式、Docker、微服务也是经常会问的东西,也要好好准备。
算法:把最重要的算法给忘记了,能刷多少刷多少,主要是学方法,而不是去完成某个题目。


总结

从投递简历到五面,大概经历了半个多月,基本上是隔一天面一次,都是在晚上 19 点以后,说明字节晚上的下班时间。。。
五次面试都是视频面试,体验很好,面试官和 hr 也都很效率和专业。一二面偏基础和算法,对项目和工程问的不是很多。三面和四面的话会增加项目和架构上面的东西,不过算法依旧是跑不掉的。前面四面我的算法回答的很好,基本上都是稍微调试一下就过了。基础回答的也比较顺利,设计题也还好。五面架构聊的很差,可能是导致失败的最大原因吧。

最后感谢大家看到这里,希望对同学们的面试有所帮助,再次感谢!

由于平台不能直接发送面试资料等原因,有需要这份字节面经学习笔记的朋友们只需要评论+转发+关注,并且扫描下方小编二维码即可免费获取!!!BAT面试题:1000+BAT面试题资料汇总

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。