美文网首页
阿里2017暑期实习生

阿里2017暑期实习生

作者: xuwei_L | 来源:发表于2017-05-02 20:18 被阅读0次

        能拿到这个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暑期实习生

          本文链接:https://www.haomeiwen.com/subject/wvlhtxtx.html