C++春招/秋招面经全记录

写在前面:
    自己的秋招差不多结束了,使用牛客网也快一年了,期间看了很多面经,收获很大,因此自己也来把春招/秋招的所有面经回馈牛客。先简单说下本人情况,坐标杭州,本科测控,硕士电子信息专业,实验室方向主要是嵌入式系统开发。本科及研一主要做硬件以及嵌入式Linux开发,在实验室同届老哥的建议下,跟着老哥一起往C++软件开发方向转了,因此主要求职方向是C++开发、后台服务端开发。
    面经基本按照时间先后顺序(同一家公司春招/秋招放一起),面经中一些与项目相关的,每个人情况不一样,就简单略过了,虽然发的时间太晚了,还是希望能帮到有需要的同学。详细如下:
---------------------------------------------------------------------------------------------------
网易游戏--测试开发(实习)
    03-23:互娱现场一面挂
    一面:40分钟左右
        1.自我介绍;
        2.项目介绍,大概有多少代码量;
        3.游戏排行榜,假如有N个玩家,排行榜上只排成绩前10的玩家ID,如何排序,分析时/空复杂度;(TOP K问题)
        4.承上,如果玩家的ID在一个范围内,能否优化;(哈希,以空间换时间)
        5.手写代码,判断链表是否有环;
        6.承上,平面上有一些点,每个点都指向另一个点或者指向NULL,如何判断平面上的所有点是否有环,分析时/空复杂度;
        7.二维平面上,一些点(以x、y坐标表示),由两个点可以确定一条直线,找出两个点使得其连成的线斜率最大,分析时/空复杂度;
        8.给定一串手环,手环上有一些珠子,假设珠子颜色有红、蓝、黑;可以从任意位置剪断手环,求在哪个点剪断,使得颜色不同的连续珠子数最大,分析时/空复杂度;
        9.玩过什么游戏;
        10.上面回答了dota,问如何测试一个新英雄;

网易游戏--游戏开发(校招)
    09-21:互娱现场两面,二面挂
    一面:1小时左右
        面试之前,有半个小时的笔试时间,题目摘取了cpp-reference上关于vector::push_back()的描述,要求实现这个接口
        1.面试官看了下笔试试卷,找了找问题;具体实现可参考STL源码剖析;
        2.做下自我介绍;
        3.熟悉哪些语言;
        4.多态的类,内存布局是怎样;
        5.extern "C"的作用;
        6.unordered_set的底层数据结构;
        7.隐式类型转换与显示类型转换;(c++定义的4个类型转换操作)
        8.承上,如何避免编译器进行的隐式类型转换;(explicit)
        9.服务端与客户端的建立过程;(答了TCP服务器与客户端建立的步骤与接口api)
        10.TCP与UDP的区别;
        11.大小端字节序相关;
        12.select、poll、epoll了解吗;
        13.手写代码:二叉树的镜像;
        14.虚拟内存作用,如何根据虚拟地址得到物理地址;
        15.设计模式是否了解,如工厂模式、装配者、适配器;
        16.设计高并发的游戏服务器,有哪些需要考虑的因素;
        17.线程同步有哪些方法;
        18.那比如使用互斥量,什么情况会导致死锁;
        19.了解图形学吗;(不了解)
        20.比如一个游戏地图上有几千以上玩家在线,但是每个玩家的屏幕显示有限,只能实时显示本玩家屏幕上出现的玩家,如果每个玩家之间的位置信息会实时传输交互,那么如何设计这个服务比较合适?
        21.提问环节;

    二面:40分钟
        1.自我介绍;
        2.项目中遇到的难点,如何解决;
        3.1000万条数据,找出第8大的元素;(top K)
        4.承上,如果数据均位于[0,1000]这个范围,能否进一步优化;(空间换时间)
        5.设计一个自动售货机,应该有哪些软件模块组成,每部分工作,画出类图;
        6.现在有一条线,以及线上多个点(参考X轴吧),给定一个区间范围[x1, x2],找出处于这个范围的所有点;
        7.现有100个圆球,分别是50个红色、50个白色;以及两个桶;每个球可以放于任意一个桶中,现在玩家随机选择一个桶,并取出一个球,那么如何向两个桶放球,使得取出红球的概率最大;
        8.提问环节;

美团点评--后台研发(实习)
    共面了一轮电话面试,5月初安排现场面试,因为有事就没去了。
    一面:03-25,30分钟
        1.抽象类与普通类有什么区别
        2.前置操作与后置操作的区别,比如++i与i++;
        3.队列与栈的区别;
        4.比如一张数据库表,存储的是班级学生的名字,如何检索出同名的人;
        5.进程与线程有什么区别;
        6.Linux下查看一个文本文件的内容有哪些命令;
        7.Linux下,比如一个log文件,如何找出文件中包含“exception”的所有行;
        8.什么是死锁,如何预防;
        9.如何实现让一个线程定时休眠,时间到了之后再恢复状态;
        10.针对班级内所有学生的考试成绩,你打算如何进行存储;
            回答建立一个类,包含成绩、姓名、以及排名三个域,针对成绩进行排序,然后填充对应的排名域
        11.项目过程中,遇到什么难点,或者有什么想要分享的;

墨灿游戏--游戏开发(实习)
    大概3月底,墨灿游戏来学校招聘实习生,现场两面:
    一面:40分钟
        1.STL中常用容器的实现;
        2.std::string类的实现;
        3.手写atoi;
        4.指针与引用的区别;
        5.C++如何实现多态;
        6.写代码:二维平面上,给定两个矩形(以四个顶点的x、y坐标表示),判断两个矩形是否重叠;
        7.一张图片,二维平面上坐标表示(二维数组arr[][],下标为像素点坐标,值为像素的颜色深度),如何找出图片的轮廓,讲讲思路;
        8.实验室项目;

    二面:40分钟
        1.自我介绍;
        2.详细说说实验室项目;
        3.做项目与学习过程中遇到的问题,如何解决的;
        4.一百层高的大厦,两颗弹珠,从某一层往下扔时,弹珠会碎(即这层为弹珠碎掉的临界点),如何使用最少的次数,找出临界层;(这题应该也算比较经典的问题了)
        5.提问环节;

蚂蚁金服--C/C++研发(实习)
    蚂蚁这边面试的部门是人工智能部,共有4轮技术和1轮HR面,均以电话面试形式;当时走的内推,由牛妹帮忙内推的,最终拿到了实习offer,这段实习也对自己帮助很大,在此向牛妹和牛客网诚恳表达这迟来的感谢!
    一面:04-05 40分钟
        1.自我介绍,项目相关;
        2.项目里面说到有开发过驱动,那么比如读写一个文件,在用户态调用系统的接口函数,如read和write函数,直至操作到磁盘上,是怎样的一个流程;
        3.驱动里面有没有用到过内存分配,使用哪些函数;(回答了malloc内存分配相关)
        4.伙伴系统相关;
        5.操作系统是如何对内存进行管理;
        6.说说内存碎片;
        7.STL里的map如何实现;
        8.谈谈红黑树;
        9.谈谈冒泡和归并算法;
        10.谈谈对快速排序算法的实现,你是如何理解这个算法;

    二面:04-10 40分钟(包括在线编程)
        1.说说在硕士期间主要做了哪些事情,谈谈做过的项目;(主要是自己负责的部分)
        2.操作系统核心主要分为哪几个部分;
        3.操作系统的内核主要承担怎样的工作呢;
        4.你们的项目,如果一个进程或者脚本进行出错,有没有什么措施避免系统出错;
        5.操作系统内核中,常常以模块的形式进行加载和卸载(比如驱动),这样做有什么好处;
        6.操作系统如何确定安全的卸载了模块;
        7.电面之后,给了个在线编程的链接,一道是使用BFS和DFS对二叉树进行遍历,另一道是有序数组二分查找,找到返回下标,找不到则返回-1;

    三面:04-17 时长20分钟
        1.自我介绍;
        2.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

    四面:04-18 57分钟(包括在线编程)
        1.自我介绍;
        2.详细介绍了项目,以及在项目中做了哪些工作;
        3.Linux下,如何创建一个进程;
        4.承上,fork()函数的返回值是怎样;
        5.承上,假如父进程返回0,子进程返回自己的pid能行吗?当前系统为什么不这样设计,而是父返回子pid,子返回0;
        6.linux下,程序的内存布局是分段的,大概是如何分布;
        7.典型网络模型,简单说说有哪些;
        8.TCP的四次握手关闭链接过程;
        9.TIME_WAIT状态的作用与意义;
        10.简单说说TCP客户端/服务器开发时,用到的系统调用函数;
        11.select()系统调用有什么作用;
        12.STL下sort()的内部实现,stable_sort()内部实现,lower_bound()内部实现;
        13.电面之后在线编程,给定一个字符串,比如"  abc cba     ",要求去掉首尾的前导0,即把字符串处理成"abc cba";
        14.提问环节;

    HR面:
        1.对阿里的认识,对蚂蚁金服的认识;
        2.评价自己,优缺点;
        3.做项目过程中遇到的困难,如何解决;
        4.职业规划;

腾讯--后台开发(实习)
    面的SNG后台开发,现场面试,两轮技术,一轮HR:
    一面:04-16 25分钟
        1.自我介绍;
        2.手写一个简单算法,给定一个数组,比如unsigned long buffer[10],以及一个整数N,返回数组第N个bit是0还是1;
        3.给定一个十进制数,如132,写出对应的16进制(0x84);(刚开始以为要写算法,结果面试官说直接写转换结果)
        4.简单说说大/小端字节序,比如机器中以小端存储了一个32bit数,0x12345678,写出对应的大端;(0x78563412)
        5.平时使用过平衡树吗,简单说说;
        6.一个算法题,要求设计一个数据结构,题目是:QQ号的登入量假设为60W/Min,在五分钟内重复登录的可认为有异常,不进行登录操作;(也即找出五分钟内重复登录的QQ号)
        7.如果一个进程在死循环里面,不断调用malloc并且不调用free进行内存释放,系统会出什么问题;

    二面:04-18 30分钟
        1.对于实习时间与地点有没有什么意向;
        2.在一个64位系统中,假设实际内存为3GB,如果程序申请6GB内存,并且对申请来的内存进行写入,结果会怎样;
        3.malloc()申请的内存,在系统的内存分布中,处于哪一段;
        4.比如在浏览器输入腾讯官网的网址,直到浏览器显示出相应的画面,是怎样的一个过程;
        5.TCP断开连接的过程,以及中间的各种状态之间的转换;
        6.设计一个数据结构与算法,其中gettime()可以获取当前的时间,此处时间精度简化为秒;run()函数由系统每次间隔一秒进行调用;add_event(x, f)函数中,参数x代表时间,单位是秒,f代表一个函数,add_event的功能是:比如当前有一个函数为fun,客户调用add_event(5, fun),那么在调用这个函数之后的第五秒,系统自动运行一次第二个参数指定的函数,也即第五秒的时候,调用fun()。设计相关的数据结构与函数接口的伪码;

    HR面: 04-19 25分钟
        1.自我介绍;
        2.对腾讯的认识;
        3.实验室做项目过程中遇到的困难,如何解决;
        4.对自己的职业规划;
        5.有没有女朋友,意向城市;

腾讯--IEG后台开发(校招)
    这里过程稍显曲折,多说两句。杭州的线路面试时间是09-21至25日。没收到面试通知,遂去霸面;没有合适的岗位缺口,霸面失败。23号HR姐姐告知附近最近的线路面试城市南京将在09-24至28开启线路面试,于是第二天大早从杭州赶到南京去面试,24号等了一天,25号得到了霸面机会。虽然最后挂在了二面,不过这次面试体验十分愉快,一二面的面试官都很nice,而且对项目问的很细。去南京霸面之前,觉得没有面试机会就被挂掉,心里多少有点堵;二面挂掉之后,也就觉得很释然了,很感谢腾讯的包容,给了霸面的机会。
    一面:09-25 70分钟
        1.手写代码,循环队列的实现,以及主要的push、front、pop接口;
        2.手写代码,假设有一个unique()函数,对其进行单测;(用了google test库)
        3.自我介绍;
        4.项目详细介绍:
            4.1 protobuf 3版本相较于protobuf 2,有哪些改进;
            4.2 RPC框架应该包含哪些模块;
            4.3 Linux多线程编程的一些接口,注意事项(互斥、同步);
            4.4 实现过线程池吗;(使用mutex+cond条件变量简单实现);
            4.5 Linux给进程发送信号了解吗;(kill命令)
            4.6 写过自动运行的脚本吗;(Linux下使用crontab写过,配合flock避免多个脚本同时运行)
        5.在蚂蚁对接的最难的业务是?如何完成的;
        6.玩过什么游戏;
        7.对游戏后台开发有哪些了解;
        8.提问;

    二面:09-27 50分钟
        1.自我介绍;
        2.项目详细介绍;
        3.纯虚函数与一般虚函数的区别,纯虚函数能否具体实现;
        4.算法题,简化的魔方,六个面,每一面只有4个小方块(通常9个方块),对魔方可以执行水平方向与竖直方向90度的旋转,如何旋转最少的次数,使得魔方每一面的颜色一致;(就是拧魔方)
        5.算法题,三维空间的一个物体,投影至二维平面上(可以抽象理解为x、y、z空间坐标中,一个立体投影至x、y平面),物体旋转的同时,x、y平面的投影也会变化,写出旋转与平面投影之间的关系,写伪代码;
        6.对游戏后台开发的了解;
        7.提问环节;

腾讯--IEG后台开发(校招)
    大家看了上一段的话,估计会很疑惑,怎么又有一个IEG后台开发。是的,我自己也很疑惑。10-12日接到深圳的电话,说是TIMI游戏工作室的,问能否电话面试。当时正在忙其他的事,就推到第二天了。挂掉电话后就想,不会是骗子吧,一查号码,真是腾讯公司的,这真是赚到的一次面试机会,哈哈。目前面完了一面,后续还有没有机会暂时未知。
    一面:10-13 45分钟
        1.自我介绍,项目介绍;
        2.C++多态的实现;
        3.虚函数表存放什么内容,子类继承基类后,重写与不重写虚函数的情况下,虚表的内容分别是什么;
        4.函数压栈的过程;
        5.类的成员函数的压栈过程,this指针;
        6.static关键字的作用,定义的变量存储在进程空间的哪个区域;
        7.Linux系统下进程的内存分布;
        8.虚拟内存机制,虚存与物理内存的映射;
        9.ELF格式文件包含哪些内容;
        10.I/O复用,select、poll、epoll;
        11.TCP如何保证可靠传输;
        12.TCP报头有哪些比较重要的字段;
        13.TCP链接的两端A、B,A调用send给B分别发送100,150字节,如果B调用receive分别收到50和200字节数据,应用如何正确区分出数据,即知道发送方A发送的数据为100、150字节;
        14.使用tcpdump查看链接的状态;
        15.I/O调用主要有哪几种,分别说说;(阻塞、非阻塞、异步等);
        16.本机使用UDP协议给qq.com发送数据,详细说说网络各层的处理;(发送方逐层向下进行封装,接收方逐层向上解封装)
        17.承上,路由器在进行转发时,IP报头会不会变化,会的话哪些字段变化,链路层报头是否变化;
        18.IP报头有哪些比较重要的字段;
        19.有没有研究过Linux内核,说下系统调用的整个过程;(以open、read/write文件为例,系统调用从用户空间转到内核空间,以及驱动程序调用,文件系统等)
        20.做项目过程中遇到的难点,如何克服;
        21.提问环节;

ASML--软件研发(校招)
    现场面试,一轮技术与一轮经理面,通过学校论坛参加宣讲会与现场笔试;
    一面:09-16 40分钟
        1.自我介绍,项目介绍;
        2.只能在栈上构造的类;
        3.只能在堆上构造的类;
        4.熟悉哪些排序算法,分析各算法的时/空复杂度;
        5.旋转数组找最小值;(剑指offer原题)
        6.一个20G大小的文件,假设内存只有256M,如何对文件进行排序;
        7.数组中出现次数超过一半的数;(剑指offer原题)
        8.提问;

    二面:
        1.职业规划;
        2.有没有女朋友,意向城市;
        3.学习和做项目中遇到的难题,如何解决;
        4.对深圳有什么印象;
        5.提问;

ABB--C/C++软件开发(校招)
    实验室一个老哥去参加宣讲会,帮忙带了份简历,得到了面试机会,最终也拿到了offer。这是自己秋招的第一个offer,对自己心态的调整还是有挺大帮助的,至少不会失业了,嘿嘿。面试前先做了份试卷,大概30分钟,整个面试也只有一轮。
    一面:09-20 40分钟
        1.英语自我介绍,没说出,改为中文介绍了;
        2.项目详细介绍,项目中遇到的困难,如何解决;
        3.如何与同事进行合作;
        4.对自己的职业规划;
        5.意向工作地,期望薪资;
        6.提问;

滴滴出行--软件研发(校招)
    09-23:现场面试,共三轮技术面加一轮HR面。每通过一轮技术面,大概间隔三分钟会进行下一轮面试;如果挂掉也会被告知,比较刺激。对体力和集中力也挺考验的,每一轮面试有一些重复问题。
    一面:50分钟
        1.手写代码,两个有序单链表的合并;
        2.自我介绍,项目介绍;
        3.简单说说对C++和JAVA的认识;
        4.对面向对象设计的认识;
        5.STL中各容器的实现;
        6.hash如何避免冲突;
        7.TCP建立客户端/服务器的接口调用;
        8.TCP三次握手,为什么三次;
        9.TCP四次挥手,各中间状态,TIME_WAIT状态的作用;
        10.select、poll、epoll的区别;
        11.epoll的触发模式;(水平、边缘)
        12.指针和引用的区别;
        13.熟悉哪些Linux命令;
        14.关闭进程有哪些方法;(kill、pkill等);
        15.承上,知道进程名字,使用grep进行kill;(grep p_name | grep -v p_name | cut -c 9-15 | xargs kill 9);
        16.natstat与tcpdump命令;
        17.awk了解吗;
        18.提问环节;

    二面:50分钟
        1.自我介绍,项目介绍;
        2.C++多态的实现;
        3.熟悉哪些网络模型;(TCP/UDP的客户端/服务器建立说了一通)
        4.TCP三次握手、四次挥手;
        5.TCP断开连接的各状态,TIME_WAIT的意义;
        6.select、poll、epoll的区别;
        7.一个40G的文件保存了用户的手机号码,里面有重复,如何去重;(哈希映射成小文件,再组合)
        8.点分十进制的IP地址(比如192.168.1.1)如何转换为32bit整形;
        9.手写上一问的代码;
        10.在蚂蚁实习遇到的最难问题,如何解决的;
        11.对比下C++和python;
        12.提问环节;

    三面:60分钟
        1.自我介绍,项目介绍;
        2.指针和引用区别;
        3.C++对象的内存布局;
        4.类的静态成员存储在哪,静态成员函数能访问非静态数据成员吗;
        5.熟悉哪些网络模型;
        6.TCP三次握手、四次挥手;
        7.TCP断开连接的各状态,TIME_WAIT的意义;
        8.HTTP协议了解吗,除了POST、GET之外,还有哪些;
        9.select、poll、epoll的区别;
        10.字典树的实现,手写insert()接口;
        11.一道智力题:夜晚,有四个人过桥,只有一只手电筒,每个人过桥的时间分别是1秒、2秒、5秒、8秒,过桥需要使用手电筒,一次最多两人一起过桥,问最短多少时间,四个人能全部过桥;
        12.做项目过程遇到的难点,如何解决;
        13.愿不愿意在北京工作;
        14.提问环节;

    HR面:30分钟
        1.做项目遇到的困难,怎么解决的;
        2.意向工作城市;
        3.对自己职业的规划,想从事什么领域;
        4.有哪些offer;
        5.你眼中的滴滴;

中兴--软件开发(校招
    09-29:中兴投递晚了,杭州地区集中面试时,厚着脸皮去了。跟HR姐姐说明情况后,给了面试机会,算是霸面吧,感谢!
    一面:40分钟
        1.自我介绍;
        2.Linux下网络编程的主要接口用到了哪些;(把TCP和UDP客户/服务器的接口说了下)
        3.面向对象设计的认识;
        4.C++多态如何实现的;
        5.设计模式了解哪些;
        6.写一下单例模式的实现;
        7.单元测试的一些认识;(项目中做了些单测工作)
        8.承上,google test/mock框架下的一些断言;
        9.对自己的职业规划;

    二面:35分钟
        1.自我介绍;
        2.项目详细介绍,遇到的难点,如何克服;
        3.英语简单自我介绍;
        4.工作可能遇到的问题(比如你跟一个同事的工作完成情况差不多,他晋升了但是你却没有,你会怎么想,怎么做;领导安排的任务无法在规定时间内完成,等等),如何调整自己;
        5.意向地点,未来的职业规划;

远景能源--C/C++研发(校招)
    10-09:现场面试,面试之前先做一道题目,第一轮面试时面试官会一起看看,共两轮技术面加一轮HR面:
    一面:30分钟
        1.说了下做的题,我的题目是打印一个字符串的全组合,如输入"abc",则打印"a"、"b"、"c"、"ab"、"ac"、"bc"、"abc";
        2.实习项目,RPC的实现,RPC框架应该具备哪些模块;
        3.为什么要使用RPC;
        4.protobuf的作用,使用其有什么好处;
        5.智能指针,使用智能指针会不会内存泄漏;
        6.C++类的内存分布;
        7.虚函数实现多态;
        8.select、poll、epoll区别;

    二面:15~20分钟
        1.实习项目;
        2.静态库与动态库,静态链接与动态链接;
        3.两个进程之间如何做到内存互不干扰;(大概是问虚拟内存);
        4.什么情况导致段错误;
        5.系统如何知道发生段错误,并终止进程?
        6.有没有遇到过内存泄漏;
        7.一个.c文件不include .h文件,却调用了 .h文件定义的函数,能否正确编译?

    HR面:35分钟
        1.自我介绍;
        2.对远景有什么认识;
        3.未来规划;
        4.有没有女朋友,意向城市;
        5.实验室环境与公司实习环境的区别,如何调整自己尽快适应;
        6.愿不愿意转JAVA;

盛大游戏--游戏服务端开发(校招)
    10-11:通过学校的宣讲会,得到的面试机会,一轮技术面和一轮HR面:
    一面:大概55分钟
        1.自我介绍;
        2.详细项目介绍。这里面试官问的比较细致,然后会根据回答的技术知识点,再问些基础问题,如下:
        3.1项目中说到多线程,linux下的多线程接口,pthread相关的具体底层实现;
        3.2多线程同步;
        3.3什么情况下会死锁;
        4.1项目中用到protobuf,protobuf的一些标识符;
        4.2为什么要用protobuf,有什么好处;
        5.1项目中用到了c++11的一些库,如boost库,问如何看待boost库;
        5.2对Linux内核有没有研究;
        5.3说下守护进程;
        6.面试官给详细介绍了游戏服务器开发方向的技术栈;

    HR面:
        1.自我介绍;
        2.拿到哪些offer;
        3.工作地选择;
        4.有没有女朋友,对未来的规划;
百度--软件研发(校招)
    百度笔试后没收到面试通知,实验室老哥去面试的时候,我也跟着一起去了,想试试看能不能霸面。结果在HR那边登记和留下简历后,当天下午就收到百度运维部的面试邀请,十分感谢捞我的面试官。现场面试,总共三轮。通过了一轮后,会通过电话或短信通知下一轮面试的时间。三轮面试官给我的面试体验都非常棒,特别是第一轮的面试官(同时也是捞我起来的那位),在我讲解自己的项目时,可能是我说的不太清晰,现场指导我应该怎么理清思路,采用什么样的方法进行讲解。十分感谢给予这次霸面机会。
    一面:10-10 55分钟
        1.自我介绍;
        2.项目详细介绍;(挖的很细)
        3.在蚂蚁实习时,对接的最难的业务,介绍下;
        4.实习对自己的锻炼和提升有哪些;
        5.实习时,如何调整自己尽快融入公司的;
        6.手写了个单测,使用google test;
        7.对python的了解;(项目中用到python写了两个小工具);
        8.对自己的职业规划;
        9.提问环节;
    
    二面:10-11 40分钟
        1.自我介绍;
        2.C++多态的实现;
        3.Linux下经常用到哪些实用的命令;
        4.僵尸进程与孤儿进程;
        5.select、poll、epoll的区别;
        6.TCP与UDP的区别,TCP为什么可靠,TCP的滑动窗口机制;
        7.Linux进程的内存分布;
        8.Linux内存分配,内部/外部碎片;
        9.虚拟内存,虚拟地址与物理地址的转换;
        10.硬链接与软链接的区别;
        11.虚拟文件系统(VFS)是否了解;
        12.系统调用read()/write(),内核具体做了哪些事情;
        13.两个40G的大文件,两个文件有一些重复的内容,如何去重并排序;
        14.简单说下Linux下tail命令的内部实现(tail可以查看文件尾部的内容,功能类似cat、head),写伪码;
        15.承上,tail -f 的实现(动态打印出文件实时添加的内容),写伪码;
        16.提问;

    三面:10-13 50分钟
        1.自我介绍;
        2.项目详细介绍;
        3.对自己未来的规划;
        4.volatile关键字的作用,主要用在哪些场景下;
        5.const关键字作用,编译器如何进行优化;
        6.两台机器A、B,传输文件的整个过程;(网络传输相关,文件系统相关);
        7.有哪些offer,意向工作城市;
        8.提问;

写在最后:
    以上,差不多是我所经历的所有面试(还面了两个研究所和银行,不过这类单位面试跟IT公司还是比较不同,就不贴面经了,感兴趣可以私下交流)。后面还有毕业设计方面的任务,所以打算把秋招结束了。因为一些原因,自己秋招准备的比较晚,过程其实挺不容易的。好在实验室的几个老铁一直帮助和鼓励我,抱拳了!
    如何复习和准备面试,牛客网已经有很多大佬给了建议,我这非科班的就不再班门弄斧了。
    简单谈谈自己的一些体会吧,面试的话,可以先从小公司下手,毕竟大公司的面试还是有一定难度的,面试多了自然会有经验。准备大公司的面试,除了拓展知识的宽度,深度最好也探究下,这样能显得自己更加突出吧。然后就是简历上写的东西,一定要弄懂,最好深入进去。当面试官根据简历问相关知识点时,做到讲解清楚原理的同时,再进行一定程度的深入,往往起到更好的效果。
    最后,就是心态问题了。绝对不要因为一两次不顺利或者是比较失败的面试,就大大降低自己的信心。面试是一个双向选择的过程,面试也存在一些偶然性。要相信合适自己的工作总会到来的,保持积极的心态吧,相信自己是最胖的!再者说,我们才刚开始进入社会工作,以后的日子还长着呢,现在一点点小挫折,以后再回过头来看,估计也就算不上什么了。重要的是保持积极的心态,不断学习提升自己的硬/软实力。
    希望每一位牛油都能坚持战斗到最后,收获自己满意的offer,加油!


#阿里巴巴##腾讯##百度##网易##华为##滴滴##C++工程师#
全部评论
不错可以来年再用
点赞 回复
分享
发布于 2017-10-14 22:32
写的很好,赞👍!
点赞 回复
分享
发布于 2017-10-14 22:33
联想
校招火热招聘中
官网直投
点赞 回复
分享
发布于 2017-10-14 22:33
大佬好厉害 准备签哪家
点赞 回复
分享
发布于 2017-10-14 22:40
这个面经很好啊
点赞 回复
分享
发布于 2017-10-14 22:42
给老哥点赞!老哥加油!
点赞 回复
分享
发布于 2017-10-14 22:43
优秀!
点赞 回复
分享
发布于 2017-10-14 22:56
好全,打call
点赞 回复
分享
发布于 2017-10-14 23:07
大佬好厉害,向您学习,面经也给力
点赞 回复
分享
发布于 2017-10-14 23:23
最终准备去哪里?
点赞 回复
分享
发布于 2017-10-14 23:31
666
点赞 回复
分享
发布于 2017-10-15 01:46
厉害,希望明年也能拿到满意的offer
点赞 回复
分享
发布于 2017-10-15 16:25
老哥稳
点赞 回复
分享
发布于 2017-10-16 18:17
如果数据均位于[0,1000]这个范围,能否进一步优化  这个具体咋做呀 求楼主指教
点赞 回复
分享
发布于 2018-07-19 17:04
请问学长,“算法题,简化的魔方,六个面,每一面只有4个小方块(通常9个方块),对魔方可以执行水平方向与竖直方向90度的旋转,如何旋转最少的次数,使得魔方每一面的颜色一致;”这道题的思路是什么吗?
点赞 回复
分享
发布于 2018-07-25 10:32

相关推荐

41 496 评论
分享
牛客网
牛客企业服务