阿里2017暑期实习生

    能拿到这个offer,运气占了不少比例,感谢一路上帮助过我的朋友和同学。面试的战线拉得比较长,在此简单记录一下。

面试部门:蚂蚁金服——人工智能

面试岗位:C/C++研发工程师

共计5轮面试,其中前面4轮技术面,最后一面为HR面



一面:2017-04-05,40分钟电面

1.自我介绍,项目相关

2.项目里面说到有开发过驱动,那么比如读写一个文件,在用户态调用系统的接口函数,如read和write函数,直至操作到磁盘上,是怎样的一个流程

3.驱动里面有没有用到过内存分配,使用哪些函数(这题应该是问,用户态调用malloc这类函数,操作系统内部是怎么分配内存的)

4.伙伴系统相关

5.操作系统是如何对内存进行管理

6.说说内存碎片

7.STL里的map如何实现

8.谈谈红黑树

9.谈谈冒泡和归并算法

10.谈谈对快速排序算法的实现,你是如何理解这个算法

    总结:面试官比较nice,聊起来比较放松。问题偏向于底层,跟系统关系很大,对于操作系统这块的学习和理解还需要加强!而且问题也比较深入,会根据你的回答,进行更进一步的追问、拓展。C++基础问的不多(这可能是因为面试官侧重于Java),数据结构与算法中比较经典的还是容易作为考点,一定要深入理解,最好还能形成一定的自己的想法。



二面:2017-04-10 25分钟电面+20分钟在线编程

1.说说在硕士期间主要做了哪些事情,实验室主要研究方向;谈谈做过的项目(主要是自己负责的部分)

2.操作系统核心主要分为哪几个部分?

3.操作系统的内核主要承担怎样的工作?

4.你们的项目(状态监测系统),如果一个进程或者脚本运行出错,有没有什么措施避免系统出错?

5.操作系统内核中,常常以模块的形式进行加载和卸载(比如驱动),这样做有什么好处?

6.操作系统如何确定安全的卸载了模块?

    这题刚开始不理解,扯了半天(模块加载之后就是在系统里面,使用时先open、再read/write、不用时close即可;要想卸载驱动,直接卸载即可);面试官提醒:引用计数。反应过来理解错题意了,借用OS的文件系统是如何管理打开的文件进行回答(系统的文件打开表,保存引用计数,多个进程或线程同时使用文件或设备时,引用计数相应的增加,当最后一个进程关闭文件时,OS才真正的把引用计数清0,关闭文件)。

7.你们的项目中,前端以及服务器使用了什么技术?

    由于本人没有负责这一块,回答说不太了解。

在线编程部分:

1).二叉树的DFS和BFS遍历

2).给定一个有序数组A[],以及待查值target,查找数组A[]中是否存在target。存在,返回其下标;不存在,返回应该插入的下标(保持数组仍然有序);分析所写算法的复杂度。



三面:2017-04-17 20分钟电面

1.自我介绍

2.C++中,你觉得哪些关键字比较有意思

    一时不知道怎么回答,说了C++中增加的bool关键字。然后面试官追问为什么C++中增加了这个关键字。

3.宏定义#define与const常量有什么区别

4.在GDB等调试过程中,宏和常量有什么区别

5.static关键字有什么作用

6.三个连续的整数,比如a,a+1,a+2,相乘之后能否整除6,即a*(a+1)*(a+2)能否整除6

7.计算机硬件中,32bit与64bit的机器有什么区别

8.在32bit系统中,整形变量所能表示的最大值是多少

9.如何计算出一个整数的二进制表示中,有多少个bit的值等于1



四面:2017-04-18 25分钟电面+20分钟在线编程

1.首先还是自我介绍

2.详细介绍了项目,以及在项目中做了哪些工作

3.Linux下,如何创建一个进程

    回答在程序中,可以调用fork()创建子进程。

4.承上,fork()函数的返回值是怎样

    父进程返回子进程的pid,子进程返回0。

5.承上,假如父进程返回0,子进程返回自己的pid能行吗?当前系统为什么不这样设计,而是父返回子pid,子返回0?

    回答了父进程返回子进程的pid,主要原因在于父进程往往需要知道子进程的运行状态以及结果。比如父进程可以调用wait(),捕捉子进程的返回信息,因此需要知道子进程的pid。

6.linux下,程序的内存布局是分段的,大概是如何分布?

    32位系统,进程独立拥有4G虚拟内存空间,1G用于内核,余下3G按照栈、MAP、堆、BSS、DATA、TEXT分布;64位系统,拥有256G空间,内核128G,用户128G,布局类似。

7.看你简历里面写了解典型网络模型,简单说说有哪些

8.TCP的四次握手关闭链接过程

9.TIME_WAIT状态的作用与意义

10.简单说说TCP客户端/服务器开发时,用到的系统调用函数

11.select()系统调用有什么作用

12.STL下sort()的内部实现,stable_sort()内部实现,nth_element()内部实现,lower_bound()内部实现。

在线编程部分:

1).给定一个字符串,比如"  abc cba     ",要求去掉首尾的前导0,即把字符串处理成"abc cba",返回处理后的字符串。



HR面:2017-04-27 20分钟电面

    在此首先给出一个建议:不要轻视HR面试。很多同学(自己也是),特别是技术岗位的,往往会认为HR面试没有什么好准备的,就聊天嘛。其实不是的,一些比较常见,比较经典的问题,如果有提前准备、组织语言的话,总归好过临时回答时的磕磕绊绊。还有就是一定要针对面试的公司,提前做一番全面的了解,这会是个加分项。其他的在此就不再赘述了。

你可能感兴趣的:(阿里2017暑期实习生)