快手 c++ 算法工程化 一二面
三月底投了快手 4.12做了笔试 4.16早上hr打电话约了4.21早上的面试
(到星期天都没收到短信邮件,鼓起勇气给hr发了短信结果hr说他已经发了。。重发了一下orz)
一面
4.21 10:00-
(二面面试官告诉我一面面试官是项目大老大)
1. 自我介绍(balabala)
学过什么课(数据结构 计网 os 数据库还在学)
2. 计算机网络
CSMA/CD
路由器和交换机了解吗(不了解)
某一条线路上的流量限制了解吗(不了解 只知道有流量控制)(面试官简单解释了一下)
3. os
为什么要区分堆和栈(口胡....)
那其实只有堆,只有栈都能实现(emm不会反驳....)
知道分页吗?(知道)
优点?
简单数据结构就不问了(有竞赛经历)
问一个os里的算法吧
LRU知道吗(知道)
如果有多个请求同时并发访问?(回答了缓存在一起,找一个尽可能好的访问序列,比如相同的合并在一起等等)
让你实现LRU,讲一下思路?
A用一个优先队列,按照最近访问时间作为关键字,每次删掉最久未访问的数据
Q优先队列怎么实现?
A用堆
Q那怎么判断数据是不是在堆里?
A另外开一个hashmap,记录有没有出现过,出现过话记录位置
Q但是插入一个新数据会让这个堆全部乱掉,那这个位置......
A哦hashmap直接存具体的内存地址,不是存堆的下标
Q所以每次操作的复杂度都是log的
A是的,不过感觉额外开销有点大,我也不清楚底层具体的实现,应该还有改进的地方
Q听起来似乎可以.....然后安慰我说没关系就想听我自己的思路哈哈哈哈
(其实还有一个问题,不管在不在优先队列,都要插入一个新的元素(因为访问时间更新了),但是老的数据又没发删掉,所以优先队列里有很多无效数据,后来想了想,其实当优先队列太大的时候全部遍历一次,重建一个新的优先队列就好了)
(然后百度了一下,发现答案都是hashmap+链表)
图形学这种可能还没学过吗(学了!学了!刚准备热乎着的呢!)
嗯那好的(不考?不考?)
然后就问了一些实习时间啊之类的小问题
然后反问
大概二十分钟就结束啊 感觉也太快了 然后就去叫二面面试官了
二面
4.21 10.40
二面面试官估计也在面别人 也没想到我这么快(约了十点一面十一点二面)
貌似没有自我介绍 说我笔试挺好的 代码能力应该不错
1. 数学
课程学了哪些(balabala)
高数线代这种都学完了吧(学完了)
来个简单的,1/3x^2的不定积分
(我靠我竟然**的回答了x^3)
告诉我答案多少(疯狂暗示)(x^3+C!)
嗯对要有C,所以答案多少(再次暗示)(x^3+C!)
嗯好....(啊啊啊啊看错了是1/9x^3+C!)嗯对了
二次积分了解吗(二重积分吗 了解)并没有考...
矩阵这种学了吧(学了)以为要考旋转矩阵了orz看前面面经有
三维空间中,两个单位向量的点积的几何意义(不确定是什么了)反正回答了cos夹角没问题
(就这?就这?)
2. 手撕代码(c++)
写一个类的四种构造函数吧(还好看了面经)
(提示了几个指针引用上的小问题)
c++11两个构造函数写一下 move的那个(不会写 只是知道move)没事没事 能写出前面的已经不多了(要不是看了面经我也不会这么流畅哈哈哈)
继承知道吗(知道)
写个继承类吧
虚函数了解吗(了解)
析构函数会写吗(了解)
知道继承类的析构函数吗balabala这里有点忘了反正回答了基类的析构函数必须写成虚函数,然后硬着头皮写了一下,表示知道但没写过
3. 手撕代码(算法)
算法对你应该挺简单的(笑)
有向无环图知道吗(知道 dag图)
写个拓扑排序吧,随你写,写关键部分就好(就开始手撕)
写个归并排序吧(继续手撕)
然后反问。问做什么内容,展示了一下。
最后也问了实习时间之类的,还说不一定非得北京,可以和hr商量去近一点的城市(又不是我想来北京,除了北京没hc了有什么办法orz)
能记起来的就这些了
好快啊十一点半不到全部结束了 中间还等了二十分钟...........看别人都是两三个小时
祈求hr面🙏
#快手##校招##面经##C++工程师#