阿里C++ 简历面(凉经)
故事的开始是这样的,9.10号中午我被反锁在实验室外,打算从空调外箱走廊翻窗户进实验室的时候突然接到一个电话,号码是杭州那边打来的,因为那两天被通知有海康电面于是毫不犹豫的以超高难度的姿势接了电话。
对面:“你好,是xxx吗?我们是阿里巴巴xx部,看到了你的简历,你怎么没做我们的测评呀?”
其实我那两天邮箱有点点问题,很多hr都问过我这个问题,于是实在的告知了面试官。
面试官:“那你现在有时间面试吗?”
我:“可以的,请问大概多久?”(我站在走廊真的很危险,况且乌龟还怕铁锤吗?)
面试官很耐心的告知我大概需要半小时左右,但是要先做测评才能走面试流程,于是让我重新发一个邮箱给他并约定第二天面试。
我长舒一口气,挂掉电话后发现谁给我把窗口锁了???
第二天三点,对方很准时的打来电话,应该是提前看了我的简历所以并没有让我做自我介绍,而是由项目直接切入,这点上我能明显感觉到阿里和其它公司的不同,面试官全程非常看重我在这期间做了什么,有什么成果,如何解决困难以及有哪些创新点。我真的非常开心,因为我的确也做了一点东西出来,也蛮喜欢我研究生期间做的三维重建的。虽然和C++后台开发没什么特别大的关系,面试官还是会追问然后发现应聘者的优点,真的好棒!
然后就正式开始了面试~
- 我来问个简单的开放性问题吧,什么是指针?
- 你刚刚说了野指针和悬空指针,说说什么是野指针?悬空指针?
- struct和union有哪些区别?
- 那什么是内存对齐?
- 什么是多态?
- 讲一下单继承、多继承的虚表结构吧
- 比较详细的问了一下虚表
- 开放题:说说你知道的排序?你最擅长哪种排序?
我:堆排序吧(我都来面阿里了我总不能说冒泡吧,况且我真的能写堆排序,当然要说这个啦) - 你能实现堆排序吗?说一下实现的过程
- 堆和栈有什么区别?
(我脑子还在上一题,面试官善意提醒了一下我,已经到下一题了。。。。这里脑子没反应过来答得不好,满脑子都是先进先出的栈和堆,嗯???为什么要比较这两个东西?) - 面试官翻了一下我的github问了一下上面的STL的简单实现是我自己写的吗?是爱好还是学习?
- 对vector很熟悉喽?(我内心os:哪敢在大佬面前说熟悉呀?答就还好)
- 说一下resize()和reserve()的区别吧
- 既然你提到了扩容,你说一下为什么每次vector都是以倍数扩容的?
- map的底层是怎么实现的?(不会引申到手撕红黑树吧?犹豫了一下,说了红黑树,乌龟还怕铁锤吗)
- 都用过哪些stl容器?
- 讲一下智能指针吧
- 你github上这个项目怎么是空的?
(256进制没有优化好,就没传,之前版本在腾讯云上没及时续费被吞了) - 面试官说他想看看我的代码风格,然后问我啥时候能传上去
- 讲一下多线程什么时候需要同步?
- 多进程,多线程用的多吗?
- TCP三次握手讲一下
- socket()套接字有哪些?用过吗?
- redis用过吗?mysql呢?
- 什么是缺页异常?那种情况会导致缺页异常发生?(我这里又宕机了,面完反应过来不就是page fault吗?!)
- 进程间的通信机制?什么是共享内存?
- 你觉得你最大的优点是什么?
- 反问。
总结:一面面试官真的好好,面试就感觉在聊天,面试体验超棒。而且我发现自己也蛮幸运的,每一次面试遇到的面试官都能让我成长不少,第一次面百度的之后我告诉自己要成长,现在我果然做到了。高质量的面试比看一千篇博客管用。
虽然距简历面已经十来天了,我还是在这儿许个正式面吧~