【字节跳动】Go岗-懂车帝的后台日常实习

背景:

研一,非科班,Top2;

之前一直不知道以后做些什么,疫情期间和其他人交流之后决定走开发,大概开始学习是6月上旬;

在同学的怂恿下投了懂车帝的后台开发日常实习,每天就一直在疯狂地刷题、看书、看面经,因为实在不太自信;

慌手慌脚地就投了,突然就要开始面试了,其实自己知道还缺不少斤两。

技术栈主要是 Go,项目写了简单的网站、简易的分布式缓存、实现了 Raft 协议;

然后力扣刷题大概刷了 200 题,主要是树、双指针、剑指和其他一些乱七八糟的,

其实刷的题目都比较简单,高中学过竞赛可能会稍微熟悉一点(其实早忘光了);

个人前一个月主要在补操作系统、计算机网络之类的知识;

看的东西比较多,但是都不深入,导致面试问啥能讲点但是深入就 GG。

字节的效率太快了,快到我措手不及,傍晚投完简历晚上就过了,第二天大睡午觉的时候 HR 电话过来要约面试;

而且前一天晚上吃了冰西瓜几年没发作老肠胃病怒犯,凌晨就去医院挂水了,属实惨;

也就是说面试前的准备时间,基本用来磨磨蹭蹭恢复身体上了,而且也就两天时间。

一面:

自我介绍,非科班问了一些问题,为什么转开发;

算法:

两数之和,讲了 O(n) 时间的算法,再改用 O(1) 的空间,用快排排序,问了时空效率,让改成非递归快排;

进程和线程的区别;

进程间通信的方式;

TCP 连接的客户端和服务端状态。

二面:

自我介绍,问了非科班的问题,学习和规划是怎么做的,和科班比有哪些不足,之类的;

LRU 算法里面,键值的存储形式,值 interface;

interface 不是个好的形式,会导致 GC 压力大,为啥,那用什么形式比较好;

goroutine 里面 panic 了会怎么样;

map 是否是并发安全的,不是如何做到,还有什么其他方法;

不加锁并发读写 map 会出现什么问题;

redis的数据类型;

redis的 zset 底层是如何实现的,zset 根据 member 查询 score 的效率,zset 获取排名的效率;

raft 解决了什么问题;

raft 脑裂是怎么解决的;

提出一个场景,根据 raft 协议接下来会怎么样;

虚拟内存的概念,为什么要保护物理内存;

页面置换算法;

session 和 cookie,为什么用 sessionId 不用 uid;

算法,给出字符串和字符,等概率地输出一个字符所在的位置;

再写个 SQL 查询。

体验:

一面很快就结束了,非递归快排没见过但是也能很快写出来,然后空间效率也算出来了。

二面还是比较难,不少是从项目延伸开来,然后更加深入和更偏工程化,经验不足的就答不上来,倒是 raft 可能讲得比较详细;

操统和计网的知识没怎么考察,Go 的考察了但是正好没准备到,之前看过忘了;

算法题偏数学了,没抽象出来,提示了一下发现高中甚至初中时候绝对碰见过,还是想不出来,再交流突然就抽象出来了。

个人感觉字节的面试可能还是比较少看你背书的情况;

最好就是能以自己的语言讲出来,尤其是项目的问题,要有自己的理解,最好再越过本身更深入一些。

两次面试间隔很短,确实还是蛮耗体力的,尤其是知识水平不够答不出来的时候,挠挠头皮硬撑过去;

二面真的是发现自己还缺太多东西,然后面试官也很好,给我讲了好多需要努力的地方,然后鼓励我好好加油,还问了之后的规划。

总结就是面试体验极好,感谢面试官,而且还是能认识到好多不足的地方,以后继续加油,再许个愿!!!

发表评论

后才能评论