字节跳动 服务端开发 面经


字节跳动特重视算法,不怎么关注编程语言啊,开发框架啊什么的,比较注重考察思维能力,也会问一些基础的操作系统网络通信什么的

感觉头条的面试思路跟微软谷歌差不多 就靠算法题看编程能力

然后也问了问我读研期间写的几个系统

总体感觉真是 难哭了呜呜

第一轮视频面试

视频面试是通过牛客网,双方写的代码都可以实时反馈给对方

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分钟

问问人生理想啊为啥加入字节跳动巴拉巴拉

我的感想

真是什么也不敢想。。。人生第一次参与技术面试根本没来得及准备太多,好多题我也不知道怎么想出来的。遇到不会的题还是要多多和面试官交流,也不是必须每道题都得做得特别顺溜,肯定要有很难的题目,人家还是重点看一个你解决问题的表现吧。
总之不能傻坐着,千万别说你不会了想不出来,想不出来就问问面试官,问问他是怎么想的,有什么好思路借鉴一下(索求提示)

#面经##字节跳动#
全部评论
第一轮最后一道编程题就是个斐波那契数列
3 回复 分享
发布于 2018-12-10 18:02
请问第二道二叉树的算法题怎么做呀??
点赞 回复 分享
发布于 2018-12-12 16:26
字节那么多leetcode hard题🤣
点赞 回复 分享
发布于 2020-11-22 18:43
当有多个线程来调用qpsAllowed,上述程序如何改进 楼主这题会了吗教教我
点赞 回复 分享
发布于 2019-10-31 19:39
问下,2*1形,1*1形摆2*m有多少种摆法? 
点赞 回复 分享
发布于 2019-01-17 21:04
请问你这个是实习吗?
点赞 回复 分享
发布于 2019-01-17 09:04

相关推荐

字节搜索二面挂当天被捞1、自我介绍2、你提到了用户的关注与取关,你用户关系服务是怎么设计的?(定义了关注表与粉丝表,两个表内容一致)3、你怎么保证两个表内容一致的?(目前是通过事务保证的,后面其实还可以通过订阅 binlog 伪从来保证一致性)3、如果是大 V 的情况,你有考虑到吗,做了哪些处理应对这种高并发(Redis 缓存+二级缓存,冷热数据分离)4、分布式 ID 你都用来生成什么 ID 的?(笔记 ID,用户 ID,用户 ID 用的号段模式,笔记 ID 考虑到雪花算法自带的时间戳可以实现冷热数据分离,发布久远的笔记不缓存在 redis,后由于点赞系统采用咆哮位图高效判断,但咆哮位图基本只能存储 32 位,遂也改为号段模式生成,生成效率基本没差多少)5、那你说说点赞系统怎么设计的?为什么改为咆哮位图了?(先是采用 Set 数据结构判断,后因为满足高并发需求,Set 模式占用内存太多,又改用布隆过滤器实现,大大降低内存占用。但布隆过滤器在判断存在时存在误判,需要从数据库进行二次校验。后改用咆哮位图,既能高效判断点赞与否,内存占用也大大降低)6、那你讲一下咆哮位图的机制,为什么有你说的这些优点?7、MySQL 了解吧,你讲一下 MySQL 的索引(一顿吟唱)8、说一下聚簇索引和非聚簇索引的区别9、联合索引再说一下,如何定义联合索引最好?(设计成覆盖索引)10、联合索引的顺序重要吗?(顺便再说一下索引下推)11、算法1:二叉树展开为链表12、算法2:根据层序遍历建树反问
查看13道真题和解析
点赞 评论 收藏
分享
06-28 18:19
已编辑
门头沟学院 Java
查看32道真题和解析
点赞 评论 收藏
分享
评论
10
139
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务