阿里四面面经 + 已成功拿到offer
楼主之前阿里实习倒在hr面上,实习笔试又因为电脑问题自动提早40分钟交卷,之后去霸面被退回,总的来说实习面试的经历其实满坎坷的。幸运的是校招成功拿到了阿里UC移动事业群的offer,希望我的经历能给你们带来信心。废话不多说,下面带来面经。
之前只讲了问题部分,现在修改一下:面试是一种交流的过程,绝不是问答的过程,
有时你可以掌握面试的主导权
。
下面的黑体字是一些小技巧 ——而这些小技巧的成效和你的知识储备是密切挂钩的,因此
技巧
是辅助,
基础扎实才是王道。
一面
算法
- 在无序数组中找最大的K个数?
- 对无序数组A[0:n-1]进行预处理(不能改变A[0:n-1]内元素的顺序),使得能在O(1)时间内快速找到子数组A[i:j]的和?
- 在一个单向链表中实现快排? —— 这里楼主特意引出了快排效率以及内省排序的问题,希望能加分。
- 讲解一下内省排序的原理? —— 由上一题引出。
C++
- 用const修饰类成员函数的作用?
- 能否在一个const成员函数中调用非const成员函数,为什么?
- 模板的实现和声明是否一定要在同一个头文件中,为什么? —— [参考答案:http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file]
Linux
- 讲讲你对Linux内存的了解?
- Linux内存的页表的作用是什么?
- Linux内核地址空间的布局,内核地址空间是如何访问物理内存的?
二面
项目
这个因人而异。
基础知识
- Linux中,怎样删除一个目录中最后一次修改时间在一个星期以前的所有文件,具体代码怎么写?
- 一个公司有200人,其中男女各100人。某一天有两个人迟到,请问是一男一女的概率是多少?
- 如何写一个线程池?
- 你觉得这个线程池有哪些可以优化的地方 —— 对接上一题。
生活与学习
- 你说你专业成绩在top20%,怎么证明?
- 你评价以下同组的同学,和他们相比你的优势和劣势是什么?
- 你是如何学习的?
- 你性格上的缺点有哪些?
- 你的职业规划?
交叉面
C++
- 多态的作用是什么,它是怎样实现的?
- C++中的override是什么,它是怎样实现的?—— 这里面试官并没有问怎么实现,不过楼主自己回答了这个问题。
gdb
- 多线程调试中会有coredump的情况,如何定位错误?—— 这里楼主不了解该问题,但说自己用多进程编程比较多,希望能把面试官的注意力引到多进程编程方面,之后便有了Linux中提出的问题。不过如果你对多进程编程不了解的话,那就是作死!
- 警告错误位置和实际错误位置为什么会不一致,举例说明?
- 谈谈你对buffer overflow的理解? —— 由上一题引出。
Linux
- 你说你在Linux中常用多进程编程,为什么不用多线程?
- 在Linux中,若父子进程中有一个异常终止,会对另一个进程有影响吗,为什么?
- 如何修改你的程序,使其解决因异常终止而带来的影响? —— 由上一题引出。
高并发
- 假设在某一时刻由几万个并发请求同时产生,请设计一个方案来处理这种情况。
其它问题
- 你生活中使用高德地图还是百度地图,为什么?
- 你觉得地图的前景怎么样?
hr面
- 自我介绍。
- 你一天是怎么安排的?
- 你研究生阶段有哪些活动,你有活跃气氛的经历吗?
- 你说你晚上效率比较高,倘若你同事白天效率高,如何解决? —— 这道题重在考察阿里价值观中团队合作的问题,少数服从多数是比较万金油的答案。
- 你有其它offer吗?
- 工作中有遇到什么困难吗,如何解决?