字节跳动 后端面经
终于收到意向书了
一面
1.自我介绍、项目介绍
2.中间人攻击
3.TCP/UDP区别(很详细),发送一个UDP包在网络中的过程(我是从OSI模型从上到下、分别用到哪些协议、然后协议的运转过程讲的)
4.MySQL索引 hash索引与B+树索引的优缺点,分别适合什么场景
5.sendfile、mmap
6.buffer与***的区别
7.进程通信方式,说说各种方式的区别
8.epoll LT、ET,适用的场景
9.算法:复原IP地址
二面
1.自我介绍、项目介绍
2.看项目里用到了很多分布式的东西,如果是你,要怎么设计一个分布式系统?(很详细,一直深入)
3.定时任务系统怎么设计?
4.介绍下MySQL的引擎
5.csrf攻击怎么防范
6.topk问题(比较详细,不断问有没有更好的方法…)
6.算法:二叉树的左视图
三面
1.自我介绍、项目介绍
2.介绍下ES,是怎么使用的
3.SQL注入怎么防范
4.算法:合并区间
5.算法:二维递增数组找指定数是否存在(找了下leetcode,是74题)
[1,2,3]
[4,5,6]
[7,8,9]
从左下角开始找(n行m列最多就找n+m次),面试官看我写了两个循环立马喊停,说有没有复杂度更低一点的方法。
想了一会儿说用两次二分,达到logn + logm,对行先作二分找到所在的行,然后对该行进行二分。面试官又问能不能一次二分解决。
面试官引导了下,因为是二维递增数组,数组的下标也符合递增的规律,所以对下标做二分就可以一次二分完成了。
6.有什么想问的,个人规划之类
总结
感觉我的三轮面试还是分明的。第一轮面基础,操作系统、计网、数据库之类;第二轮可能有点像压力面,考验知识的运用;第三轮主要考的是思维能力,能否有清晰的逻辑来解决问题。感觉每一轮最重要的就是Show me the code。特别是三面,面试官能力很强,看了代码马上就能知道你的思路… 所以思路一定要想清楚再写
#面经##秋招##字节跳动##校招#