阿里巴巴C++研发实习生面试挂经

前言:菜就是菜 ——节选自《节选》

内推,先完善信息,没有笔试环节,接着进行评测(心理素质之类的),1个多小时后收到了电面邀请的电话(有点快),约定第二天晚上十点后进行电面。第二天提醒安装钉钉,重新约定了电面时间。

正式电面:打开阿里的在线编辑器和在线视频,都无法获取摄像头,于是改为电话面试。

上来是一道编程题,手动实现memmove()函数,主要是考察内存和指针,要注意内存重叠问题(这块儿卡了一下)。然后叙述实现思路(根据内存地址高低不同来选择正向还是反向复制)

用没用过STL,用过哪些,vector和list有什么不同,分别是如何实现的(数组,双向链表),vector内存是如何增长的(1.5或2倍,其实答一个就行),为什么是这个数字(编译器实现不同,vs是1.5,gcc是2)。map如何实现的(红黑树),查询时间复杂度(lgn)。allocator有什么用(知道是分配内存用的,但是只用过默认的,没答上来)

菱形继承问题,虚函数怎么实现(虚函数表)

用没用过智能指针?(没有),听说过吗?(听说过),智能指针的优点是什么?(只答上来了一个垃圾回收,确实没用过)

用没用过内存池,内存池的优点(避免内存碎片),为什么能避免内存碎片,内存碎片有什么缺点。(内存池还一个优点是避免内存泄露,没答上来)

用没用过socket?(回答下学期学,他说没事儿,直接过)

操作系统线程和进程有什么不同,各有什么优点,你写程序用哪个?为什么nginx和apache之类的用多进程?多线程怎么保证互斥,用过哪些锁?(都是操作系统基本知识)

TCP断开四次挥手的过程

聊你做过的项目(突出闪光点),你看过的源码,你课外看过的书,你的个人博客(是的,如果简历里写了他会看的),你希望加入的部门,将来的人生计划职业计划之类的。注意要符合阿里价值观。有一问是有没有读研的打算,我回答有,然后立马改口说工作和读研都有打算,不知道这儿有没有坑。

你有没有要问他的(对我印象如何,给一些建议,其实就是间接问这次面试的结果)

大体就是这样了,难度还可以,没有特别刁难人,自我感觉答得一般,C++这块儿有太多知识点了,大半年没碰都快忘干净了,实习还是临时决定的,复习了一晚上加一白天。总之,阿里的面试从流程、内容、面试官来说,体验还是很好的,过不过另说吧。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据