字节跳动-头条后端(Go)-暑期实习面经(已接offer)
第一份实习,拿到 offer 才敢写面经系列...
面试经验总的来说:
- 心态一定要好,多和面试官交流,不要沉默,实在不会大方承认
- 简历上的项目一定要熟,项目用到的东西也要熟,用到 redis 必问
- 面试官喜欢问为什么,多查查,遇到了就能装b
- 算法题需要亿点运气
一面(3.22)55min
面试官是个小姐姐,nice
自我介绍
扒项目
- 主要工作,遇到的困难
- 一些细节问题,改进方案
go 垃圾回收
- 不太熟,大概描述了一下,提了一嘴 Python(简历上写了熟悉 Python),小姐姐说没关系,说下 Python 是怎么做的
hashmap(说了 go 的 map 和 redis 的 hash 结构)
redis rehash 过程
rehash 过程中添加数据,查询数据怎么办?(就是问渐进式 rehash,刚好没看到,瞎猜了半天)
hash 冲突用的什么方法解决的?查询时间?最坏时间?
你说链地址法冲突到一条链上会退化成 O(n),它不好为什么要用?为什么不用其他的?
- 没太明白她的意思,我只是说最坏情况可没说它不好。。然后只能说它们各有优缺点吧
- 应该再说一下链地址法的主要优势的
一道没见过的算法题
给出一个分子式,比如:HMg2(H2ON3)3N2,计算这个分子式中每个原子出现了多少次,输出一个map,比如上面的分子式中:map[string]int {"H": 7, "Mg": 2,"O": 3, ...}
- 都以大写字母开头,后面跟 0 个或者 1 个小写字母,比如 Mg, H
- 单个原子后面跟 0 个或者 1 个数字表示它出现的次数,比如 Mg2 表示 Mg 出现 2 次,数字范围 2-9
- 分子式中可能有括号,括号后面可能跟 0 个或者 1 个数字表示整个括号内的原子出现的次数,比如 (N3Ag)2 表示 N出现 6 次,Ag 出现 2 次 4. 括号可以嵌套
- 输入是合法的
上来就遇到这么长的题让我很慌,加上之前 redis 被问到不会,这里感觉都要停止思考了。。看了半天说想办法从后往前把数字乘进去去掉括号再处理,问她思路有没有问题,得到肯定回答才松了一口气,然后说了下具体方法,理清之后面试官把括号去掉了,然后说时间不够了写下简化版代码吧
- 反问
算法题写了有二三十分钟,感觉要凉了,没想到结束时面试官说先别走啊,我去喊一下二面面试官,瞬间复活
二面(3.22)1h
逐渐有状态了,二面还算轻松,全程在线,当时感觉过挺快,回头一听才发现问了这么多问题
gmp
协程的优势
进程线程区别
进程地址空间有哪些划分
进程间通信
共享内存是怎么回事?映射到实际物理内存的虚拟地址在地址空间的哪一部分(我猜在堆区)
虚拟内存
页面置换算法(说了局部算法和全局算法)
LRU 实现思路
mysql 引擎,它们的区别
innodb 辅助索引为什么存主键 id,回表不是要浪费时间?
b+ 树索引优势
acid
隔离级别,可重读是怎么实现的?幻读是怎么回事?间隙锁知道不?
读写锁互斥关系,其他分类的锁
我看你项目用到了 redis 具体用到了哪些数据结构?(string,hash,zset)
zset 实现,跳表是怎么回事?高度?时间复杂度?为什么不用 b+ 树?
redis 是单进程还是多进程?
扒项目(另一个爬虫项目)
- 代理服务的默认端口?(第一次听说代理还有默认端口)
- 页面解析用的什么?
- 爬虫比较困难的场景?
- 纯js渲染的页面怎么爬?
(第一个项目)压测怎么做的?其他一些可以优化的点
力扣原题,舒服:力扣33. 搜索旋转排序数组
反问
二面面试官超级 nice,各种引导,问到我不会了就说ok没问题,全程给我信心,越面越顺
晚上另一个hr小哥哥加我微信约了三面时间,之前联系我的小姐姐不见了,唉
三面(3.25)30min
扒项目(收获什么的)
我看你项目用了 mongodb,mongodb 存储索引知道吗?和 mysql 比有哪些优势?(回答 mongodb 并不熟,只是毕设想用用新东西,优点就知道非结构化扩展容易,速度快)
mysql 存储引擎
项目用到了 redis 哪些结构(zset,hash),说一说底层实现
zset 除了跳表+hash表外还有其他实现吗?
- 才想起来数据量较小时会用压缩列表实现
- 又问压缩列表实现的主要目的,答节省内存
进程通信方式
io多路复用的几种方法(不熟,就提了下名字)
cookie session
拥塞控制
力扣原题,舒服:力扣15. 三数之和
三面面试官应该是某个部门老大,面相和蔼,问了30分钟就结束了,有点慌,没想到结束后10分钟hr就发来微信约hr面了
hr面(3.29)15min
聊天,实习生都没啥好问的
面完晚上我等不及就微信问hr结果,说没问题,offer 在审批了,然后就是漫长的等待,中间还赶上清明假期,足足等了一周多才接到 offer,期待成为一名 ByteDancer
#字节跳动##春招##实习##面经##Python工程师##golang工程师#