字节跳动 服务端开发 面经
字节跳动特重视算法,不怎么关注编程语言啊,开发框架啊什么的,比较注重考察思维能力,也会问一些基础的操作系统网络通信什么的
感觉头条的面试思路跟微软谷歌差不多 就靠算法题看编程能力
然后也问了问我读研期间写的几个系统
总体感觉真是 难哭了呜呜
第一轮视频面试
视频面试是通过牛客网,双方写的代码都可以实时反馈给对方
1.(项目经历)面试官特别关注项目里用到了哪些机器学习算法,尽管我报的是开发岗,依然详细询问我模型中用到的测试集。反倒是我写的系统用了哪些框架,哪些些技术,这些都没有被细问
2.(手写算法题)第一道题是leetcode原题:Minimum Window Substring。不是特别难,但是面试官会不断和面试者交流 有什么想法之类的。
3.(手写算法题)第二道题,调整一棵二叉树,调整后,要求所有节点的右子树的最大值大于左子树的最大值。
第二题也不算太难嘛,二叉树的题都不算太难,仔细想一下就成了,开心开心
4.(手写算法题)第三道题变态难:用两种积木,2X1型,1X1型,摆满n行m列,有多少种摆法。
提示就是先 考虑2行m列有多少种摆法,再算n行m列,有了这个提示好做多啦幸福
第二轮视频面试
1.(项目)继续问自己的项目,有啥困难啊,怎么解决啊。
request 到 response 发生了啥,从应用层一直往物理层描述一遍
(编程题)
3.1 实现一个类TestLimited, 类通过构造方法初始化int limitedTimes成员变量。
实现类的非静态成员方法qpsAllowed(),要求每秒钟qpsAllowed至多只能被调用limitedTimes次
class TestLimited{
int limitedTimes;
TestLimited(int limitedTimes){
this.limitedTimes=limitedTimes;
}
public void qpsAllowed(){
doSomething();
}
}
3.2 (继续3.1)当有多个线程来调用qpsAllowed,上述程序如何改进
我开始都没听懂啥意思,第一次做这么神奇的题想了好久心塞塞
第三轮视频面试
1.(系统设计)
设计一个微博系统,用户之间可以互相关注,
如果 A关注了B,B关注了C
那么 A间接关注了C且 A与C之间的度为1
然后系统有一个功能 输入俩用户 输出他俩之间的 度
如何设计系统 包括数据库,最短路算法都陈述一遍即可
2.(算法题)leetcode原题 Longest Increasing Path in a Matrix
a very usual question,just try to solve it recursively 😃
其实还问了我TCP中的’滑动窗口’,我说那不是大二学的嘛这都4年多了中间也没看过早就忘了~~然后就拉倒了人家没问
然后HR又聊了20分钟
问问人生理想啊为啥加入字节跳动巴拉巴拉
我的感想
真是什么也不敢想。。。人生第一次参与技术面试根本没来得及准备太多,好多题我也不知道怎么想出来的。遇到不会的题还是要多多和面试官交流,也不是必须每道题都得做得特别顺溜,肯定要有很难的题目,人家还是重点看一个你解决问题的表现吧。
总之不能傻坐着,千万别说你不会了想不出来,想不出来就问问面试官,问问他是怎么想的,有什么好思路借鉴一下(索求提示)
#面经##字节跳动#