字节后端实习 一二三面面经和口水话
第一次发帖,多多包涵。😀
个人情况是 python web开发技术栈;项目比较垃圾,是自己做的小网站。Redis Kafka 什么的一概不会。就这水平都能过是我没想到的。
说实话我怀疑他们为了年底kpi招人放水,问的问题比较简单,感觉自己白紧张了……
从另一个角度看,这个年底字节bar可能真的变低了。广大捡漏党可以发动啦!
废话不多说先上面经。
一面
1. 问简历里一个有关神经网络的项目(呜,面后端不就是为了逃离炼丹……)
2. HTTPS连接过程
3. 进程和线程的区别
4. MySQL索引为什么使用B+树,而不是B树 二叉树
5. Python dict 底层实现(哈希表)
6. 如何解决哈希冲突?(开放寻址;拉链法)
7. HashMap链表太长怎么办(突然java。我答的是把链表变成树,如字符串可以变成字典树。更通用的办法也是HashMap真正用的是红黑树)
8. 项目里多对多关系如何实现
9. 描述多对多关系(标签×文章)的关联表如果查找太慢怎么办
- 这里我答错了。我答的是建立(label, article)的复合索引。但是label数量有限重复度高,不适合索引,至少怎么着也不能把它当复合索引第一项
- 现在的想法是只在article上建索引。但感觉这也不是什么好答案。或许可以把每个标签前几页的文章缓存起来,因为一般也就看这些?
- 大家如果有好想法发到评论区哈QwQ
10. 进程间通信方法
11. 信号量的实际应用
12. 实操过哪些数据库?
13. 算法题:二叉树路径和等于某值的路径个数
一面问的都是一些像为什么使用B+树这样的高频题,多看面经多cover,基本上就没问题了。面试官本来想要二面连面,但是二面面试官好 (正) 巧 (合) 不 (我) 巧 (意) 下班了。
然后本辣鸡成功续命😂。
二面
1. Python是编译型还是解释性语言
2. 编译型和解释型语言的区别(木有复习,就随便扯了几个。我答的是编译型运快慢,但是占用编译时间,解释性易于debug,但是代码优化做不到编译器那种程度)
3. Java是编译型还是解释性(我答的它有jvm所以是解释型,后来查了查网上说java是半编译半解释)
4. GIL是什么?为什么有GIL?
6. python如何利用多核(多进程就可以啦)
7. 什么wsgi (就知道是个接口……)
8. 为什么同样的URL,不同的人看到的效果不一样
9. 如何维护用户登录状态(cookie+session 方案;JWT方案)
10.什么是JWT
11. Session Id 是怎么用的
12. JWT或SessionId被偷走了,可以伪造这个用户吗(我答的可以,毕竟身份凭证就是那玩意儿……)
13. 如何防止被偷走
- 我答的是记录用户ip/浏览器特征,做 anomaly detection……气氛突然ml。
- 现在突然想到,过期时间本身也是个手段?
- 同上题,万能的牛客网友如果有好想法发到评论区哈QwQ
14. TCP三次握手过程
15. 什么是SYN Flooding?
16. 遇到SYN Flooding了之后怎么办(答的是封可疑IP和减少握手等待时间。这个好文 写的更加全面,推荐给大家)
17. 数据库的ACID是什么?通过什么实现的?
18. 为什么要写 redo log 呢?比直接写入数据库有什么优势吗?
19. 幻读是什么?是什么造成了幻读。
20. 秒杀系统(这我哪知道啊,发挥想象力瞎扯一堆。面试官:嗯,看来是真没做过。)
21. 算法题:一个只有0,1,2的数组,如何排序。(一开始我说可以O(n)计数排序,后来面试官让用其他方法写。我就写三路快排也就是荷兰国旗问题,但是因为已经毫无印象就从头开始编,也不知道是紧张还是咋,写了三个版本折腾了40分钟才搞出来)
二面主要是在秒杀系统和算法题上翻车了。本来以为自己要凉凉了,结果竟然问我有没有时间三面。因为对二面心里后怕,赶快说晚上有事QAQ。
然后本辣鸡再次成功续命😅。
三面
1. 问个人情况,实习时间
2. python的list底层是怎么实现的?各种操作复杂度?
3. python和C++区别
4. 什么是联合索引?索引越多越好吗
5. 知道Redis Kafka吗
6. 算法题:Two Sum (一开始我给出标准的排序+双指针解法,然后他问有没有O(n)的解法,然后我写了一个哈希表的做法)
7. 算法题:LRU实现(链表+Hash) 只说思路不写代码
8. 业务相关聊天
本来特别害怕三面跪,结果发现三面最水。应该是有的人遇到强技术型的三面,有的人遇到聊人生型的三面吧。感觉自己好幸运😊。
HR面
1. 为什么要来实习,想通过实习达到什么目的?
2. 项目比较简单,你对于后端是否缺乏宏观了解?(卧槽扎心了 → 也不算是完全没宏观了解,毕竟常看文章比如blabla,当然要形成一个更清晰实感的了解还需要实践 → 点题 来这里实习我是认真的)
3. 做这个项目的原因?
4. 算法转后端,你都为此做了什么?
5. 喜好什么技术栈?(其实并没有想法 → 项目需要用啥我用啥 → 三面面试官让我预习Go我已经在看The Way to Go了呢 → 转移话题 同时疯狂暗示好学 → 密码正确(?))
6. 你性格上的优点缺点,举真实生活中的例子说明(曾经同时爆肝n门大作业还拿满分 → 疯狂暗示无惧加班 → 密码正确(?))
7. 实习时长/毕业时间等个人问题
感觉只要正常说人话,HR面应该不会卡人吧。
比较不好处理的是那种又扎心又真实的问题😂 但是不要跟着diss自己的缺陷,而是把自己已经做到的地方展现出来,给人一种成长性心态的观感。
HR面后3~5个工作日会OC。我是3个工作日,但是因为中间跨了周末所以等待过程很煎熬, 害怕万一HR挂 那我就颜面扫地了(~_~;)。
途中遇见满意度调查短信不要慌,这不意味着挂了,有的人每面之后都有这个短信呢。
结语
1. 项目辣鸡的小伙伴不要灰心。亲测如果面试官也意识到了你项目的垃圾性,就不会深挖项目(因为也挖不出啥……)。这个时候,好好看基础知识还是有胜算的~ 我感觉我这次面试比较简单(问题集中在python语言上和基础知识上)的一个原因就是项目辣鸡没的可问,redis kafka也没用过也不能强行问,因祸得福吧🤨。所以简历千万不能吹水啊那是引火上身。
2. 找适合自己的面经。面后端岗的话,“大文件断点续传” 这种偏前端的题就不用看了。然后没人问过我设计模式啥的应该也是看我项目没啥规模,项目规模大的人可能就要被问到。
3. 刷题要重广度而非难度。会一个超复杂的dp / 树状数组 / 线段树,不如面试之前写一个三路快排有点儿印象。
4. 这里提醒一下:一定要准备好了再去面试。3月份的时候,愚蠢的我瞎投了第一封简历,一投就给了面试😆,然而当时啥都不会,直接一面送人头(连判定有向图是否有环都没做出来)。结果,之后的简历一投就拒😰。问了一个字节员工说面试会写入评语,我之前灾难级一面的黑历史记录大概会保留半年(具体机制我也不清楚),总之让我半年之后再投。总之个人建议,没准备好的话,还是不要轻易污染自己在人才库里的形象了……有些公司就是天天叫唤着招人,一副饥渴的样子,让人感觉晚来一步别人就捷足先登了,但其实三个月之后你看它还在招人。
5. 这里推荐一下Boss直聘。早就听闻Boss直聘上简历被收后,给面试的几率大。这回给面试的boss是一个技术leader,感觉可能比之前我拿网上的内推链接(用了之后仍然万年简历拒)好使一点儿?hr第一次打电话的时候还问我是不是走的内推,我说是就投boss直聘。所以可能是boss自己手动内推了一下?当然这也有可能是我的黑历史过期了的原因,不好分析。
鉴于评论区有嫌弃我这个面经太简单的,那我就分享一下我之前搜刮的字节后端面经合集,大部分自己都写好了答案(・。・)
- 面经问题整理Part1~4:基础知识&语言 计算机基础和python。SYN flooding怎么应对?Python的dict为什么越用越慢?
- 面经问题整理Part5~9:散装知识&项目&智力算法题 鸡蛋掉落会了嘛?小白鼠喝毒药/天平称次品/海盗分金币会了嘛?
最后,对自己要有信心,无论多菜。😀