不得不说,字节的速度确实很快,hr面完2小时就直接意向书。
一面 60min
1、链表排序算法
归并
2、在main中声明链表数组,和malloc链表有什么区别?栈中分配过大数组会有什么问题?
堆分配 栈分配。访问速度、缓存局部性。
3、牛客网写代码,输出使用std::cerr,为什么输出不显示?
当时不太懂,面试官提示,和管道、shell有关,下来查了查,可能是因为标准输出不能通过管道重定向?
4、翻墙软件原理是什么,用的什么协议。如果你是运营商,怎么实现墙google?
tcp协议。墙了别人怎么处理返回结果?使用tcp标志位 fin
5、怎么在前端造假DNS,让网页访问失败?
不太懂,没有深入问
6、vector push_back 时间复杂度,扩容?
O(1),扩容1.5 2 区别是什么?扩容时,数据迁移的复杂度是o(n),为什么平均复杂度是o(1)?
数据迁移过程中的注意事项,异常安全、移动构造
二面 60min
1、stl中upper_bound函数的源码分析
代码的逻辑优点在哪里
2、线程ipc 条件变量
消费者生产者 代码怎么写
3、redis与memcache对比。
4、redis创建时多少个数据库?数据库怎么实现的,过期key怎么设置?删除策略?
16,每个db两个字典,一个记录key,一个记录过期的key。
随机删除,惰性删除,max memory
5、RDB、AOF持久化的流程是什么?RDB在redis运行过程中怎么进行的?
bgsave,子进程进行RDB
6、zookeeper简单介绍,在项目中用处是什么?
ZAB协议、raft协议、paxos协议
7、json库项目的设计思路是什么?
自己的json库直接解析,可以参考cjson库的设计思路
8、实习干了什么?
9、算法题,栈实现队列、队列实现栈。
栈实现队列,两个栈即可
队列实现栈,两个队列,或者一个队列递归
三面 45min
三面面试官说前两面基础可以,就没有再问了。
1、围绕华为实习项目重点问了问思路。单机内存池如何快速访问?分布式内存池怎么快速访问?
2、撕算法,两个数组求交集。
嵌套二分,写完能跑过,但是有些重复的情况,和面试官一起优化了会代码,减少了重复情况的发生。
如果扩展到n个数组的交集,如何处理?
对这n个数组的长度进行排序,第一次用最小数组长度的两个数组求交集,将交集结果对最小的继续求交集,保证每次求交集的两个数组在现有长度中都最小。
如:10 20 30 40 50,五个数组,第一次对10和20求交集,交集的长度一定小于10。得到30 40 50 <10 这四个数组,取最小数组长度的两个数组求交集。
hr面 10min
hr面就10min,本来以为30min。。。事件有点短
自我介绍,实习说明,投了那些公司,工作地点,希望学习到什么?
秋招第一个面试,开门红,再接再厉
全部评论
(6) 回帖