一面
- 能实习到什么时候
- 能现场实习吗
- int const *, int *const, int const* const, const int *的位置不一样有啥区别,
- 智能指针—> 智能是怎么实现的 -> 底层回收机制是什么
- C++编译的过程 -> 然后问到汇编的知识,
- CPU构成 -> CPU执行过程 -> 指令 - >精简指令集,复杂指令集区别
- linux命令 -> 怎么查看进程cpu利用率 -> 怎么看用了几个线程 -> 我项目里是怎么实现的线程抓取。
- github,怎么分支怎么merge到主干
代码
- 一组数组中,输出所有和等于x的子数组。
- 我用递归写的,然后面试官问还有什么其他思路吗?我就大体讲了一下动态规划的思路
- 归并排序两个数组
- 写完了问我怎么去重,写完去重以后,然后说代码有点冗余,问怎么消除冗余代码。
感觉就是深挖,问你一个简单问题,根据你的回答不断的深入问下去,
代码的话,我会问很多边界条件的细致问题,比如输入数据多大呀,有没有负数呀等待,然后面试官很和善,说不用考虑那么多,主要思路有了就行,甚至数据也可以直接用面试官给的输入,把逻辑写好就好了。然后我就开始怎么简单怎么速度怎么写了哈哈哈。写完以后面试官会问你能不能再优化,给一定的思路就好啦。面试体验超级棒!
二面
- 项目,细细的问。(中间插了一个基础问题,进程通信方式有什么?)
- 写一个HashMap,然后各种要求
- 实现,根据面试官要求增加函数,然后跑测试,
- 写完hashmap,问如何实现满足线程安全,(因为没写过C++的线程,所以口头描述)
- 根据我的回答问这种实现是否存在冲突问题,
- 问是否是可线性化的
- 问读写锁,读写锁原理,如何实现的,
- 读写锁 和 同步的谁的效率比较高? 为什么?
- 问当前实现方式,hashmap如果扩容的话,原始数据是一千万个int64存储,最终需要多大的空间?(这一步其实没太get到面试官思路,然后有点懵,反反复复问了好几遍,其实最后也是懵的,后来忘记问面试官这个问题了)。
- 我写的时候有一次因为语法错导致编译器报错,编译不通过,是发生在编译的哪一步
谁实话,虽然一开始上来有点懵(没见过面经里面分享过手写hashmap的),但是后来想想这个面试方式很可,通过一个简单的实现hashmap引出各种基础问题,一步一步的深入,不仅能够看出一个人编程能力,能看到一些基础知识的掌握,也能看出他的思考能力。还是比较棒的!
面试官超级nice,太久没写C++的类,然后有点忘记了,写了最最最简单的方式,但是面试官也没有打断,等我写完,然后针对我写的还给我说一些注意的问题。然后我没有按照hashmap常见的实现方式,面试官也只是说了一句有意思,没有特别的批评,之后反问环节的时候面试官说我应该是代码写的太少了(我承认,确实太久没好好写了),但是思路出的比较快(嘻嘻,开心)。之后就给我讲实习的注意情况,呜呜呜,我只能说面试官人太好了!不管通不通过,都学到了一些事情。
hr面
1.项目问题
2.优缺点
3.有没有其他offer
4.为啥选择字节
5.实习目标
不得不说,字节效率实在是太高了,周三一面,因为二面面试官有事然后周四二面,然后周五hr面,周天发offer,这效率没得夸!!棒呆!
感觉自己非常幸运,感谢牛客各位大佬分析的面经!小菜鸡也贡献一篇自己的面经给有缘人吧~
全部评论
(2) 回帖