【字节跳动】C++岗-四面详细面经(已拿offer)

14号笔试,20号面试,上周三接到了了解信息的电话,今天凌晨改了头像许愿,今天上午终于接到了offer call

base 上海 后台开发 貌似是广告部门

下面发一个面经

一面:

自我介绍,问了下毕设项目(一个机器学习应用项目,输入输出是什么,怎么应用的)

开始问问题

操作系统:

调度的基本单位是什么

阻塞IO 非阻塞IO说一下(说了5种IO模型,详细说了下io复用)

进程状态都有哪些,怎么转换

调度算法都有什么,调度的时机是什么

进程间通信方式都有哪些

网络:

http长连接短连接说一下

路由器是哪一层的,有什么功能,路由寻址怎么找的,路由表存了什么

ping协议会发生什么事情(当时以为问ICMP,结果下面引导到了dns)

dns协议,让后udp还是tcp

http response里面都有哪些内容(大概说了一部分)

数据库:

说一下数据库索引,然后说一下索引的优缺点

redis都有哪些数据类型(本来以为会展开问数据类型底层实现)

编程题:

反转链表,topk问题说思路、时间复杂度

二面:

二面的大佬真的好,问的所有问题,我如果说的不全面,他就给我补充了一点,不会的一个他也直接给我讲了一遍。

操作系统:

应该是看了一面的记录,然后问操作系统问的更深了一点

说一下进程线程,fork和vfork

fork时内存空间发生了哪些变化

copy on write做了什么(这个之前没学到,大佬给我讲了一遍)

进程的状态有哪些,怎么转换

等待态可以收到信号么(没了解过,大佬讲了一下S、D状态)

项目里用了IO复用,说一下select poll epoll(讲了区别,epoll底层数据结构,ET、LT)

死锁(死锁条件、避免死锁、死锁检测、死锁预防)

网络:

dns是tcp还是udp

说一下timewait和closewait(大佬讲了timewait中等待报文在网络中消失具体指的是路由器的缓存)

说一下拥塞控制

udp报文最大长度(说了MTU1500,但是之前在网上看到过实际会更小,后来看到Internet是576)

数据库:

索引(讲的比一面更详细了一些)索引的使用条件 优化 最左原则

编程题:

二叉树Z字打印

一个从1开始的有序数组,找字典序第k大的数,说思路(leetcode440 没做过 提示了一下树,想出来了)

问了一下头条的技术栈。一面面试官说hr不让回答,二面大佬说头条大部分是Golang和C++(貌似Golang更多?)二面面试官是搞linux开发的大佬,人真的太好了。

三面:

三面上来就是问你最近做过的最有挑战最有意思的项目是什么(最近看CSAPP、unix网络编程写了一个http web server)

说一下内部具体流程吧

看你实现了一个线程池,用什么语言写的(c)那现场写一下吧(有点懵。。。回忆了一下写了主要的工作线程,线程池结构体,再加上口述和伪代码)

问了一下常用的语言(python做机器学习,c,Golang),可能跟面试官语言不匹配,没问问题

给了一个链表形式的有向无环图,然后求拓扑排序(最开始没注意到是链表,先说思路,说了传统的队列形式的做法,然后面试官提醒了这个数据结构,然后dfs写了一个)

设计一个内存池,满足内存申请、内存释放以及内存碎片管理等基本功能。(没了解过这个东西,然后感觉应该也是跟线程池类似的东西,想了一下每次申请一块内存,内部再分块,然后说了一下整体结构,怎么申请,怎么分配,碎片该怎么管理之类的,貌似中间面试官还笑了。。可能说得有点想当然了吧。。。)

最近看了什么非技术书。。。(一脸懵逼。。。哪有空看呐。。。其实有点想说睡前看网络小说可以么QAQ)

面完10分钟收到面试完成短信

发表评论

后才能评论