字节跳动提前批后台开发一二三面(已意向书)

字节跳动番茄小说团队,后台开发,楼主技术栈是CPP。三次面试问的基础很少,大部分问题都是围绕着项目提问,其次就是算法题。
题目没有记录完整,有些记不太清了,想起来再记。
没有HR面,已经收到了意向书

一面(7.26)

1.自我介绍
2.项目(问题3~7是项目相关的,可以忽略)
3.socket在内核有buffer,为什么还需要应用层buffer?
4.把本地数据发送到其他端,有什么优化方法?(零拷贝)
5.多reactor模式 ,主从模式有什么优势?
6.epoll原理,ET和LT分别适合哪些场景?
7.日志系统打印到本地文件时占用的磁盘IO有没有一个评估,对IO有没有优化
8.互斥锁和自旋锁
9.进程调度算法,详细说下时间片轮转,时间片轮转法有什么缺点?
10.死锁,死锁预防和死锁避免
11.算法题1: LeetCode20,有效的括号
12.算法题2:居然出了个hard,最长有效括号,类似于LeetCode32,但是括号类型有三种 ()  {}  [] ,没做出来。。。
问题答的还行,算法题第二个是个hard,没撕出来,也给过了

二面(7.26)

1.项目相关
2.set 和 priority_queue底层实现
3.scatter/gather
4.timefd 如何统一事件源,超时事件什么时候处理
5.主reactor如何与子reactor通信,如何将线程从epoll_wait阻塞中唤醒
6.日志系统的性能瓶颈在哪
7.算法题1:实现单向链表里 bool remove(int val)  和 ListNode operator=(const ListNode l2)赋值运算符两个方法
8.算法题2:给定一个数组,数组前边部分是一堆负数,中间是一堆0,右边是一堆正数,找最后一个负数和第一个正数

三面(7.28)

1.上来就先来一道算法题:二叉树的最近公共父节点
我的第一反应是用递归来做,但是面试官说复杂度太高,让我用一次遍历解决。后来改为利用辅助栈,将问题转化为寻找链表的第一个公共节点问题。
2.我简历上有日志系统相关的,面试官让设计一个日志系统,说一下主要思路,满足如下要求:
  • 针对每个trace id,可以得到对应的链式调用关系,例如对于请求1,A服务调用了B服务,B服务调用了C服务
  • 日志器输出等级 DEBUG,INFO,WARN,ERROR......等,每当在一段固定的时间内WARN的数量超过一定的阈值时就报警,例如在8点和9点间WARN出现了100次,这个时候就应该报警
3.基础知识:
  • 服务端socket有哪些api?
  • listen的fd和accept得到的fd有什么不同,listen的参数和accept参数有什么不同?
  • 异步非阻塞有什么好处?
  • 三面忘记录音了,还有问了其他一些基础知识,忘记了。。。。。。





#字节跳动##面经##秋招##C++工程师#
全部评论
请问楼主是本科生还是研究生?😁
点赞 回复 分享
发布于 2020-07-29 16:49
请问时间片轮转法的缺点是什么啊?
点赞 回复 分享
发布于 2020-07-29 21:42
opentracing
点赞 回复 分享
发布于 2020-07-31 22:19
楼主hr面了吗
点赞 回复 分享
发布于 2020-08-01 18:36
请问楼主,发了意向书之后,HR有联系你吗?
点赞 回复 分享
发布于 2020-08-03 14:23
mark
点赞 回复 分享
发布于 2020-08-03 15:25
想请教一下这个问题:为什么socket在内核有buffer,为什么还需要应用层buffer?
点赞 回复 分享
发布于 2020-08-09 01:55
楼主三面完多久给意向书的?
点赞 回复 分享
发布于 2020-10-28 20:39

相关推荐

6 58 评论
分享
牛客网
牛客企业服务