C++后台秋招总结(百度,阿里,好未来,腾讯,美团)
前几天收到美团和百度的意向书,算是对自己秋招的一个收尾了吧。总结一下这个秋招。
首先感谢牛客网,所有的offer都是通过牛客网上帖子内推获得的,也在这个平台上看了不少面经,刷了不少题,腾讯和好未来我已经拒掉了,剩下在百度和美团再这两家选,可参考我的前一个帖子,请大家给点建议。
PS:楼主是C++后台
阿里巴巴,蚂蚁金服(二面跪)
阿里巴巴跪了首先确实是因为自己能力不足,其次是因为自己作死投了JAVA岗(本人主要会C++)。
-
一面:
1.实习经历
2.说一下迪克斯特拉算法
3.LinkedList和ArrayList区别
4.B树B+树
5.一致性哈希
6.图的的环检测(深搜)7.对称加密与非对称加密
8.还有些东西时间有些久远不记得了
-
二面:
1.写堆排序
2.二叉树先序遍历(用递归和非递归)
3.TCP三次握手,四次挥手
4.说自己的项目,怎么优化
结果GG
百度运维部(三面跪)
-
一面
1.TCP三次握手,以及为什么不是两次或四次
2.TCP四次挥手状态,为什么要有time_wait,以及如何避免
3.文件系统实现
5.proc文件系统(meminfo,cpuinfo)
6.Linux命令查看文件大小
7.布隆过滤算法
8.项目,如何改进 -
二面
1.全程谈实习
2.问了一个堆排序,然后堆得作用3.Topk
4.将一个只含有1~n的乱序数组(不重复)的第一个数变成-1,求哪个数被变成了-1
问面试官我进去做的是运维还是开发,被他教育了一番,但他说还是给我过了
-
三面
1.输入baidu.com是怎么通信的
2.能不能来实习
3.。。。剩下的不记得了,被虐了
结果GG,被自己菜醒。。。
好未来(拒offer)
-
一面
1.二叉树高度(递归,非递归)
2.一个数组只有一个数不重复,找出这个数。
3.一个数组有两个不重复,找出这两个数
4.写一下堆排序
5.虚函数实现机制
6.一个硬币,有A,和B两人投币,A先投,正面A赢,反面B继续投,B投到正面算B赢否则A继续投,这个规则持续下去求A赢得概率(等比数列公式忘了*_*)
7.Java与C++区别
8.怎么学习的 -
二面
1.快排如何优化,快排与堆排优缺点
2.设计一个类,...忘记了
3.static作用
4.讲项目
5.愿不愿意转算法方向
结果offer
美团 餐饮(offer)
-
一面
1.meituan.com通信过程
2.TCP三次握手,四次挥手,状态
3.虚拟内存机制
4.缺页操作系统如何处理
5.什么是elf头文件
6.写快排,二分,单例7.volatile作用,内存屏障
8.Java与C++区别(从模板,编译,链接,内存,库几个方向解释)
-
二面
1.给一个字符串数组和一个字符串S,找出字符串数组中所有的字符串s符合规则:s通过删除,增加,替换一个字符可以变为S。
2.简单讲讲操作系统内存管理机制,段式与页式内存管理的优缺点(顺道讲了下段页式)
3.知道sendfile吗(表示不知道),啥是NIO(小白表示没听过。。。)
4.RPC实现(答得很烂)
5.讲一下一个C文件的编译链接过程
6.B树B+树
7.讲实习,讲自己的项目
上来这个面试官就说前面的算法太简单,来个稍微难点的第一题,(也不算难吧*_*。。。 -
三面
1.45度斜线打印二维数组
2.讲一下网络通信协议栈
3.TCP和UDP区别,TCP如何保证可靠性,time_wait,TCP有哪些缺点
4.HTTPS如何实现5.什么是缓存,为什么需要缓存,有哪些缓存使用场景
6.最近看了什么讲一下,讲了一下GFS的核心和mapreduc
-
4个瓶盖换1瓶酒,要喝150瓶酒,他自己最少买多少瓶?
-
8.聊了下人生
结果 offer
腾讯 SNG QQ音乐(拒offer)
-
一面
1.vector与list区别
2.什么是traits,作用
3.迭代器失效
4.unorderd_map如何实现
5.模板两种特化,作用(要求根据STL讲,再配合traits说了下)
6.说一下yacc和lex,递归下降
7.tcp/ip...(这个答得都快吐了,参考前面
8.深拷贝浅拷贝,右值引用,智能指针,引用计数,循环引用如何解决 -
二面
1.两个排序数组合并成一个排序数组2.游戏(农药)用的TCP还是UDP为什么
3.Epoll与Select区别以及epoll优点,为什么一般情况下epoll性能比select好,ET模式与LT模式
4.Epoll ET下非阻塞读,为什么不能是阻塞
5.发送3个80字节包,TCP与UDP下对端分别接受几次(其实就是TCP与UDP区别之一,TCP基于流)
6.实习,项目
-
三面
1.如何判断一个数是2的次幂
2.快排
3.还有些不记得了,回答的不是很好
4.谈谈理想啥的
百度云计算事业部(offer)
-
一面
1.给一个先序序列,重构完全二叉树,如果是一般二叉树能不能重构,为什么(QQ写代码_)
2.有三个消息队列,随机的向三个队列插入元素(概率可能不同),如何保证插入和查找的高效(有两种思路,一种是加一个控制器,队列通知占用率,由控制器控制插入和查找,另一种是计算阻塞次数,再根据阻塞次数按比例控制该队列的插入频率和查找频率)
3.最长公共子序列
4.vector的拷贝,swap函数交换指针
5.线程与进程区别,优缺点,进程内存模型
6.IPC有哪些,共享内存原理
7.说一下LRU ***思路
8.赛马问题,36匹马,6个赛道,找出最快6匹马的最小赛马次数,如果是n匹马,m个赛道呢
-
二面
1.虚函数实现机制
2.内存模型影响因素(内存对齐,多重继承下的内存模型,菱形问题,虚拟继承内存模型,虚拟继承是如何处理的)
3.NRVO优化,右值引用
4.extern C作用,为什么需要
5.C++重载,name manging机制
6.Epoll与Select区别以及epoll优点,为什么一般情况下epoll性能比select好,ET模式与LT模式
7..如何用epoll实现高并发,多线程,线程池,线程惊群问题
8.二叉树先序遍历,递归,非递归,如何用O(1)空间实现(morris 遍历)
9.互斥锁的实现原理(屏蔽中断,CAS),读写锁实现 -
三面
1.实习,项目
2.TCP拥塞控制,滑动窗口协议,糊涂窗口
3.虚拟内存机制,二级页表,TLB快表,缺页,swap
4.操作系统调度算法
5.TCP如何保证可靠性,四种定时器,time_wait如何解决,Nagle算法
6.一致性算法(raft),一致性哈希
7.优点缺点,是否愿意来实习
结果offer
总结
作为一个学校不太好,非科班的同学,跟大神收们比还是有些差距的(**比如内核及TDF大佬 @赛罗·奥特曼)。楼主拿到成都美团的offer和百度的offer后就没有参加别的校招了,其他笔试也没去做了(**) ,上面就是我的全部面经。下面说一下我的学习经验,再分享些学习资源,有需要的可以自取
总结一下经验,有些常见的问题(比如线程进程区别,extern C,虚函数,IPC)可以深入去回答,面试官考这些问题其实是想了解学习的深度如何,这个就跟平时的积累有关。有些问题提前准备,不要临时去发挥,比如:自我介绍,offer意向,优缺点等的问题,个人项目和实习经历一定要提前复习,反复去演练,看看有哪些可以提升的地方。算法题要多练(leetcode,剑指offer),特别是剑指offer。面经可以多看,毕竟很多问题提前准备大有益处,也可以查漏补缺,还有一点,能走内推尽量内推,可以免去不少精力。
分享一些学习资料
这个是侯捷的C++教程视频,非常非常好的教学视频涵盖了内存管理,STL(从源码层面分析),C++11这些内容,面试关于内存管理,STL的内容,学会了视频里的可以说是秒杀这些问题,这里我骗下赞,求大家赏个脸,点个赞,涨涨经验(*_*)
链接: https://pan.baidu.com/s/1qXQynz2 密码: fus4
还有一些书籍推荐给大家,其实都是些常见的书,需要的看看就行:
C++ :
《C++primer》这不用说了吧,用了都说好。
《STL源码剖析》模板,traits,数据结构。。这个对我面试加成挺大的,看了几遍后,仿了个小STL
《深度探索C 对象模型》虚表,多继承,虚继承,NRVO。。。。
《Effective C++》学些C++技巧
还有些比较杂的就不推荐了
算法与数据结构:
我看的是《算法》,红皮书,跟着coursera mooc(Algorithms I,II)走一遍,做做课后lab,功力大升
《算法导论》,没看完,查漏补缺用,补充上面书没提到的动态规划,B树等知识
剩下就是刷leetcode oj,楼主刷的不多就把前150道搞定了,听说某大佬大二刷了300多道,惭愧。。
网络:
先看《计算机网络自顶向下方法》,再看《TCP/IP详解》
操作系统:
必须推荐一下神书《深入理解计算机系统》,内功大法好,面试吹逼必备
然后看《现代操作系统》,主要看进程,线程,内存管理,文件系统
实践的书推荐一下《操作系统真象还原》,实现一个小内核,挺好玩的,记得 @赛罗·奥特曼 大佬也推荐过。看之前回顾一下CSAPP的汇编那章。
Linux
stevens那几本圣经书,不在多说。。。
设计模式
简单易懂《head first 设计模式》,看了之后了解下设计模式,但我觉得这东西还是要落实到工程上,否则就是空谈。。。
其他的就是编译原理啥的,有兴趣的可以看看。。。《编程语言实现模式》这书挺有意思的,教你写parser啥的。然后是《编译原理及实践》,讲解基本原理LR,递归下降,DFA,NFA,程序编译过程的原理都涵盖了,但不深入。。。再深点就是大名鼎鼎的龙书《编译原理》,这个在看了前面两本书的基础下看就没啥压力。。看完这些书写点Parser,Lexer还是挺有意思的。。有兴趣玩玩再代码生成,优化等等,楼主才疏学浅玩不动,只看了点编译后端的原理。。。
关于分布式的学***家也可以向我推荐一下方法,还是有些simple and naive的,一直都在学习理论,缺少实践,,准备学下Redis(*_*),再看点源码
2017.09.18更新
关于简历:
简历的书写着重突出重点,个人信息,实习经历,项目(两三个),然后介绍下技能点,我是这样的排版。一般简历一页就足够了。推荐一个神器Typora,可以用markdown写简历,这个软件可以转md格式为pdf,而且有不同的markdown风格,当然用LaTeX写最好了。
另外,推荐一下印度人的一个网站Geeksforgeeks,这个网站有很多算法和数据结构的讲解实例,虽然是英文的但挺好理解的,还有很多外企的面经。
#阿里巴巴##腾讯##百度##美团#