首页 > 面试复盘|非科班拿下字节后端offer~分享四面面经回馈牛友
头像
beannnn
发布于 2021-08-25 14:53
+ 关注

面试复盘|非科班拿下字节后端offer~分享四面面经回馈牛友 内部员工回复

面试复盘|非科班拿下字节后端offer~分享四面面经回馈牛友

1 个人情况

自动化专业,学校是有课程学C++但是我逃了大半,大四毕设才算是接触C++,也是那个时候对编程有一些兴趣就决定入坑C++了。研一有耍耍打打地学一些C++东西。后面有时间会去写一些C++小玩具,但是基础知识没有进行系统的学习。比较近的时候才系统地学习了计算机网络,操作系统,数据库这些知识。自己的学习方式:看视频,看书,看博客,写写代码,和同学讨论。

对于这些偏向系统的知识做了一定的学习也比较感兴趣,因此投了基础架构部门后端开发岗位。

2 非科班自学感想

自己一开始学习的时候也陷入一种情况就是喜欢去看去理解而不是写代码,包括一些C++的语法知识什么的,那些各种越界错误,链接错误等等非常搞心态不如去玩两把游戏舒服。但是后面自己也是意识到这个问题并刻意地做练习。比如对于一些新特性写一些demo尝试一下,多去写写小玩具,多去接触一些系统的API啊这些。

项目准备

对于非科班的同学项目这个的确比较难去准备,有的开源项目太庞大了不太适合我们学习,这里有我接触的一些C++项目的感触。

tinySTL 我不太推荐,感兴趣的面试官不多,但是STL 6大组件的工作原理还是值得去看,比如写个vector的整个6大组件如何交互去理解原理。

tinyWebServer 配合高性能服务器编程非常值得一看,我觉得可以去适当扩充这个项目,比如加cookie,session,不然大家都一样有点尴尬。同时的话linux相关的一些api需要花比较多的时间去理解和实践,因为很多面试官对于学C++的同学都很看重这个。入门的话可以去看CSAPP的后面几个章节和后面的几个实验。

mit6.824 使用的是go语言,有的测试很搞心态,可能要debug很久~

cmu15-445 课程难度 > 实验难度,课程难度比较大,讲得内容很多需要慢慢消化。

3 面经

提前批,投递到拿到意向书大概2周。

一面

  1. 自我介绍
  2. 聊一聊项目
  3. 聊一聊网络编程 你学到了什么?
  4. go的协程
  5. raft的过程
  6. raft如果leader被网络分区,两条重复的log如何处理
  7. 写代码中遇到过死锁吗? 如何解决? 如何调试 ?
  8. 接雨水。
  9. 最长回文子序列。

整体来说就是面试官比较偏向了解基本情况,项目问了问,相关问几个项目相关的问题。大概50分钟。

二面

  1. SELECT和EPOLL的区别。

  2. 写一个http server,多进程多线程的方式,说一下区别。有的部分写伪代码就可以了。

  3. C++notify_one也会有惊群效应。无锁队列了解吗?

  4. 线程池这里的应该也会有惊群,如何避免惊群。

  5. 多进程要怎么去写?多个进程如何同步描述符,共用一个listenfd还是epoll_create返回的fd, 会有惊群问题吗?表现是什么样的?如何解决?

  6. 网络问题如何排查? 比如一个echo 服务器,现在一个客户端建立连接发送不了。或者能够建立连接得不到返回值,如何去排查问题

一些问题是在面试官的引导下完成,大概50分钟。二面感觉比较顶,一些linux网络编程的细节还是没有认真考虑过,尤其是多进程相关的东西。

三面

  1. 对于我的某个项目比较感兴趣,然后问我做了什么
  2. 数据库的并发查询的实现,2PL, timestamp, OCC 都问了一些比较细节的问题,比如abort一个txn会发生什么这类。
  3. raft是否允许空洞类似的几个问题。
  4. 算法题LRU。 追问并发的LRU如何来写?

时间50多分钟,面试官比较和蔼,一开始都是笑着做了一个自我介绍,而且最后的时候他说看到我是一个非科班所以问了一些比较基础的问题看看基础。

四面

  1. 如何进行自学的,为什么要去做这些项目等等。也问了为什么选择这个岗位等。

  2. C++和go的区别

  3. go语言协程的理解

  4. linux如何查看进程

  5. 算法题:重排链表,不允许后半部分反转。直接硬做然后注意断链的地方就可以了。

时间大概40-50分钟,大佬还是比较和蔼。没有上很高的强度。

4 心得总结

面经都是回忆的版本所以会有些缺漏。字节的面试体验还是很好的,结果一般一两天内就打电话了。面试官的水平也比较高,基本上我说的方案都会找到问题然后继续,二面感觉压力有些大差点顶不住。四面面试官也给出了对于非科班同学建议:好好搞基础知识,要比较系统地学习,这样对于职业的发展也会更好。

自己感觉一个人自学做准备会有点闭门造车,所以可以多和同学或者找些小伙伴一起交流。面试是非常宝贵的经验,相当于和有经验的从业者的一个交流的机会,尤其是项目方面的东西会有很多思考,同时也会看到从他们角度会很在意的哪些东西,比如一个同步阻塞的调用怎么尽可能不阻塞等等。自己有时候的确也很浮躁或者说急功近利,还是要潜下心认真学习,不要图多要图精。

更多模拟面试

全部评论

(10) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐