【字节跳动】C++岗-实习面经及心得分享

心得

先谈谈自己遇到的问题与从中总结的心得,不一定对每一个人都有用,当参考参考吧。

  • 大家在找实习找工作时,可以稍微利用一些时间关注各个公司的招聘动态,据此编写一个进度表,如果有新的笔试、面试安排能够及时调整和筛选,大概什么时间点会面哪些公司,做到心中有数
  • 如果复习的差不多了,我认为可以早点投
    • 一是因为,投递完简历之后,会有筛选、笔试或者捞了简历一直没发起面试等操作,要过一阵子才会真正开始面试,在这一段等待的时间里,其实也是可以复习的
    • 二是因为,你在复习,别人也在复习,等你复习差不多了,别人也复习差不多了,这时可能有很多HC就已经发出去了,越往后走可能难度越大
    • 我觉得我身边的同学、师弟一个月前就拿到了心仪offer时,我还在持续战斗的原因之一 ,可能就是投的比较晚了
  • 有时候可能会接到没有预约的突然来电面试,此时如果允许的话,最好稍微推迟一点,做好心理准备、拿好纸笔、戴上耳机、尽快调整好进入状态、找一个较为安静的地方再开始面试,不然可能会影响面试质量
  • 每次面试时最好是能够带上纸笔,面试官提问后,将其关键点在纸上做好记录
    • 一是因为,这样有助于思考,不熟悉的问题,可以有一小段时间回忆联想相关知识点,即使是很熟悉的问题,也不用急着马上回答,可以稍加梳理,快速在心里列出几个点,有条理有逻辑的述说
    • 二是因为,这些问题可能当时回答不完全,或者是根本不太会,在纸上记录后,可以在一定程度上复盘不会的点,从而利用闲余时间再将这些不足之处补上
  • 在听到面试官问题后,最好先问清楚已知条件,根据已知条件作答,但同时也不要把条件问的太细,因为可能有反效果,把自己的思路、知识点限制得太窄
  • 有一些开放性问题,不要觉得不熟悉、没听过,就想放弃,要敢于去尝试,去思考
    • 一是因为,根据自己的所学,慢慢回顾,以及在面试官的引导之下,是有可能回答出来的
    • 二是因为,有的开放性问题,本来就是面试官为了考察学生的知识广度、深度的,即使不会,在回答的过程也可以往自己会的知识点上引导,向面试官展现自己会的东西
  • 心态很重要
    • 在招聘持续过程中,会经常与同学们交流,大家一起交流学习、面试心得是极好的,共同成长进步,但也难免会提到一些offer情况,不由自主的就比较一下啊,如果别人拿了好offer,而自己却不如意,心态上会很受影响,所以我觉得。。。(道理咱都懂。。。但调整起来真的不是那么容易的。。。)
    • 一是要调整自己的动机:比如说我们找实习,最主要的还是能够有一个锻炼自己,让自己成长进步的机会,攒一份实践经历,在秋招中更具有竞争力
    • 二是要保持一个平常心:知足常乐,能拿一个还可以offer就已经很不错了,接下来再接再厉
    • 虽然我嘴上这么说,但是心里真正能这样做还是很难的,希望也能听到大佬们的解惑吧
  • 状态很重要
    • 面试摆在面前,我们经常是为了面试而复习,有时候会比较浮躁。对于简单的知识过了一遍又一遍,觉得看了也没太大的作用了,实在是有点不想看了;对于较难的知识感觉之前明明看过的看懂了,这时又忘记了,很难沉下心来再去深入;感觉自己好像这段时间没有成长,没有进步,没有学到什么新东西,以致于状态变得很低迷
    • 我觉得这个情况是很正常的,不要刻意的给自己制造恐慌,不要给自己徒增压力;因为对于一些较为简单的知识,经历过了好几场面试之后,相当于已经起到了巩固作用,并且在回答的叙述上应该也比之前更有逻辑更清晰了,可以不必再花过多时间再反复的看;但一些较难的知识,还是得有针对性的各个击破,经历了好几场面试后,心里应该清楚自己哪些点比较薄弱,哪些点是重点,有针对性的去深入复习,调整好自己的状态,争取下一场能够做到更好

3.31 实习一面

面试官很年轻,给人感觉也很好

  • 自我介绍,过程中稍微问了下项目中的个别细节怎么做的
  • 多态讲一下
  • 虚析构函数
  • 进程与线程的区别
  • 进程间通信有哪些
  • 线程间通信呢
  • 自旋锁是什么,怎么实现的
  • 低地址到高地址说一下进程的虚拟地址空间
  • 共享库的映射区是做什么的,讲了下mmap映射到文件对象,设置为有效位无效,访问时再按需调页
  • TCP了解多少
  • 那什么时候会收到RST报文段
  • 那报文段为什么会滞留呢
  • 那说一说四次挥手
  • 服务器大量处于TIME_WAIT状态,可能的原因,造成什么影响,怎么解决(解决方案没答上来)
  • 那大量处于close_wait呢(答错了,理解成LAST_ACK状态了,但面试官也没说)
  • 做算法题:反转链表
  • 做算法题:二叉搜索树找到第k小的节点
  • 问了下,是否平常这些题都做过,说像这种二叉树遍历层次、深度遍历基本的都会
  • 接着准备让做难度大点的:大概就是有向图中判断是否出现环了,只给出依赖关系,问了下是否给出总的节点个数,说没给,正在纸上写画准备思路,面试官说这题先放下,没什么时间了,再问下别的
  • 数据库会不会
  • 存储or队列了解吗(说了一下一致性哈希),那如果服务器节点很少也这样做吗(说可以用虚拟节点)
  • 有什么要问我的

总结:有个别题目深入下去没答上来,但总体还好,放松心态,语速较慢逻辑清晰的说。

4.2 实习二面

面试官人也很好,遇到不会的,老实说不会,他说没关系;但似乎他网络不太好,开始调了差不多十分钟

  • 主要用什么语言,还有用其他语言吗
  • IO模型有哪些
  • 用的最多的应该算IO多路复用模型,讲讲它的优缺点
  • 知道正则吗
  • linux命令了解吗
  • 怎么查看端口号占用情况
  • 有一个日志文件,里面每一行都有ip、time、context等信息,怎么查询某个ip有多少个
  • C++11里面auto有什么用,不给初始值可以吗
  • volatile有什么用
  • const和#define的区别
  • 进程虚拟地址空间分布
  • 堆和栈的区别
  • 设计模式了解吗
  • 那写一个单例模式吧,写一个好点的(写了饿汉模式)
  • 那这种模式有什么不好之处呢
  • 那再写一个懒汉模式(问了是否需要考虑线程安全,说尽可能写好的,还问了下,加锁解锁部分可以用伪代码)
  • 给定a=1,b=2,不给定其他变量,怎么交换它们俩的值
  • 算法题:给定一个数组,有若干个数,找到a+b+c=99,找到所有abc的组合

4.3 实习三面

面试官应该是主管或者级别更高的领导,但是也很和蔼,没有表现的很气势压人一等

  • 主要用什么语言,还有用其他语言吗
  • STL中的map怎么实现的
  • 那map的插入效率是多少呢
  • 基于比较的查找,最好的性能上logn,还有什么查找能突破这个限制
  • 排序算法里面最好的性能上nlogn,能突破这个限制吗
  • inline内联函数是否可以递归
  • 构造函数中是否能抛出异常
  • linux中CPU调度怎么做的
  • 这个进程队列是什么队列
  • 操作系统内存分配与释放
  • 算法题:根据前序遍历序列和中序遍历序列求出后续遍历序列
  • 后续问了下其他问题,什么时候可以来实习
  • 有其他师兄在头条吗
  • 毕业之后有什么打算
  • 最近有什么打算(学习、实践两个方面)
  • 还面了哪些公司,offer情况
  • 有什么要问我的

总结:总的来说,一面二面的问题基本上都答上来了,有一点点小瑕疵;三面的话,有个别不知道的,但根据自己的情况调节了问题的导向及做出相关回答,面试题有点小可惜,只是两条语句顺序调整一下就正确了,但没给时间继续调了;有时候面试官问问题,需要适当的去询问一下问题的详情,但有时候也要注意,不要问的太细了,问得太细又容易把自己的思路、表达等限制住

4.30 实习四面(加面)

换了另外一个部门,leader说要加面,只问了几个技术问题

  • 自我介绍
  • C++内存分配有哪些
  • 算法题,数组中的数字都属0~n-1,无序,看是否有重复
  • 如果是0~n呢
  • 什么时候毕业,毕业后的打算
  • 平时怎么学习
  • 工作地点
  • 实习时间
  • 有什么要问的

发表评论

后才能评论