【字节跳动】后端开发实习面经 已拿offer
双非大三计算机科学与技术专业学生,简历中项目以及自身技术栈大都golang相关,投递后端开发实习岗(可转正),经同学内推得到头条面试机会,简历秒过,不久约了一面。中途因为家里有事和公司leader比较忙,整个过程还是拖了有点久的。总体来说面试体验还不错,面试官很nice,不会问特别偏的问题,比较注重细节,hr面完第二天offer call,效率很高。感觉能过就是运气比较好,没怎么手撕代码,看到其他实习面经问的都很难的,offer到手回馈牛客。
一面(大约60min)
自我介绍
osi七层模型,tcp/ip四层模型
tcp三次握手,四次挥手
数据链路层详细介绍
交换机是如何工作的
操作系统进程调度有哪些算法
介绍一下innodb存储引擎,对比其他存储引擎优点是什么
innodb索引数据结构,深入问复合主键索引的数据结构是否有不同
项目中数据库做过哪方面索引优化
数据库的隔离级别
为什么要用golang做后端开发,golang的特点
介绍一下golang的并发模式
goroutine的调度方式(GMP模型)
golang gc的具体过程,以及gc效率的分析
算法题:图的广度优先遍历
大部分都是后端常规问题,就是交换机那个有点迷,自己菜了。一面问的不太深,面比较广,不熟悉的基本都答出来一部分了。
二面(大约35min)
有没有考研的意图等规划问题(也不知道为啥问)
自己介绍一下项目(只介绍了一个,过程中提问,比较细节的问题)
说一下项目中用到的web框架
对比一下gin,以及其他模块化web框架的区别
当gin收到一个请求之后,具体的过程(具体到参数传递,以及gin是如何封装底层函数的等比较细节的问题,梳理整个层次)
介绍http报文结构,以及常用的首部有哪些
cookie和session的区别
项目中是如何做身份认证的(引出了token)
场景题:qq是如何针对用户在不同地点或者不同网络状况下登陆时发出异地登陆提醒的,设计出具体的方案
二面面试官好像比较忙,迟到+中途离开了一会儿,等的时候心里很慌。二面问题偏向于项目中的模块化一点的问题了,中间穿插基础。面试官比较和蔼,引导着我的思路来问问题。
三面 (大约45min)
自我介绍
项目中数据库表的设计,为什么这么设计,有没有优化的空间
B+树的特点,和B树比较有什么不同,为什么innoDB会使用
项目版本控制使用的什么方案
项目部署有没有遇到跨域的问题,怎么解决的
有没有用到中间件,中间件的具体实现以及为什么要使用
算法题:给一个乱序数组,输出每一个数字后面第一个比它大的数字(单调栈)
三面面试官比较冷漠一点,基本都是一问一答的形式,没有太多互动。基本还是项目中的一些实际问题,但是答的不太好,原理讲的不是很清楚。面完以为凉了,直接出去散步了,然后收到hr消息说过了,过了一会儿hr面。三面是发挥最差的,可能是前两面发挥还可以最后才没挂我。
hr面 (大约30min)
项目的协作方式以及项目中遇到的协作问题,以及如何解决的
家里情况以及有没有考研计划
学校社团的一些经历(科协),从中学到了什么
自己的优缺点
用三个词语描述自己(我想都说幸运的)
可以问她两个问题(远程办公,转正)
hr面基本就没什么太大问题了,就是简单聊聊天,中间很多问题都忘记了,也不怎么重要。
总结
头条面试总的来说还是比较有条理的,而且比较注重基础(os,计网,数据库,算法等),整个面试过程中也发现了自己的很多问题,很多基础问题还了解的不够深入。golang方面可以参考的面经还是比较少的,算是试水了吧,其实看再多面经到面试过程中总是发现自己是最特别那一个,没有什么套路可言,基础扎实,项目足够了解再加一点运气就可以了。3.10 三面+hr面,说是要等一周才有结果,但是第二天就 offer calll了,效率很高。最后希望大家都能拿到心仪offer。