2019暑期实习面经

2019暑期实习面经

先先后后投了几家公司的实习,拿到了其中几家的offer,一直也没怎么写面经,因为自己在找实习的过程中从别人的面经中学到了很多,所以回忆记录一下自己面试中遇到的题目吧,希望能帮助到需要的同学。主要是有关C++和后台开发的岗位。

腾讯TEG后台开发

一面

项目
select poll epoll 区别以及各自的应用场景
shared_ptr 线程安全,引用计数如何实现的,原子操作的原理
STL 迭代器什么情况下会失效,各个容器都说一下
虚继承的实现原理,编译器是怎么使用虚继承解决菱形继承的问题的
memory order内存序,lock-free? wait-free?
backlog的作用,编程中应该设置为多大
mysql中innodb和myisam的区别,行锁的实现原理
redis可以做什么,mysql buffer pool 可以做缓存吗?
三次握手,四次挥手
如何处理粘包
编程:实现 double pow(double a, int n),要求考虑double和int的所有取值范围,若有溢出抛出异常。
感受:因为我不会判断double的溢出,最后结束了查了一下double的溢出判断又把代码发给了面试官,感觉面试官十分nice,有不会的问题答不上来就说这个答不上来没关系,后面又给我催了二面。

二面

解释一下内存池的概念
动态数组如何实现?给他介绍了一下vector的实现。为什么扩容时是2倍。
没有连续空间如何实现?给他介绍了一下deque的实现。
设计一个随机数生成器生成给定概率的a,b,c
编程:实现 long avg(long *arr, int n)求平均数,要求考虑所有可能的取值范围。结果因为忘记了负数除法和取余的规则,写了半天没写完整就结束了

HR面

竟然是个男HR?

感受

感觉相比其他的,腾讯的问题还是没那么难的,而且二面面试官当时很着急就没问几个问题就给了hr面,后面也顺利拿了offer,估计腾讯真的招了很多实习生。

快手商业化广告引擎C++

一面

项目
数据结构堆
什么函数可以被声明为虚函数
析构函数可以抛出异常吗
析构函数什么时候需要被定义为虚函数
进程虚拟地址空间布局
进程间通讯的方式
多态的实现原理
成员初始化列表概念,可以在成员初始化列表中初始化父类成员吗?为什么
vector resize和reserve
Linux IO模型,哪些属于同步IO,哪些属于异步IO
编程:实现一个栈
编程:二叉树中序遍历,递归和非递归

二面

项目,进行过压测吗
epoll的底层实现,红黑树了解多少
编程:int nums[n],元素的范围在0到n^2之间,排序
编程:因为上面的编程没做出来,所以又让写了一个支持并发读写的队列
topk
单链表如何排序,时间复杂度,怎么推导的
如何判断二叉树是二叉搜索树
如何调试core文件
如何调试多线程程序
内存泄漏怎么调试,valgrind怎么用
python了解吗
分布式了解吗?Hadoop hdfs?给他说了下paxos算法的流程

三面

项目,遇到的难点,怎么解决的,进行过压测吗
有什么印象比较深的课程吗?介绍一下?
平时怎么学习?
场景题:不好描述,总之是给了个场景问用什么数据结构比较好,答案是hash+queue
一致性hash
读写分离
redis哨兵系统***过程
无锁编程,release acquire语义
实习时长

感受

面试官十分nice,感觉就是在聊天,没有因为某一方面答得不好就否定你,会从其他方面找你的闪光点。就是微信视频通话有点卡。面试流程也很快,第一天上午一面,下午二面,第二天上午三面,很舒服。后面拿了offer很想去,但是因为腾讯的offer还是拒掉了。

阿里云C++研发

一面

项目
编程:反转单向链表
malloc和new的区别,free和delete。new一定会用到malloc吗?重载operator new
内存泄漏,最后会怎么样?会对其他程序造成什么影响
水平触发和边缘触发,边缘触发怎么写
野指针的产生,危害,段错误怎么发生的?使用悬空指针一定会段错误吗?什么时候会,什么时候不会
多线程单线程区别,多线程一定比单线程快吗?
学过汇编吗?
编译和链接了解吗?
服务器程序阻塞IO怎么设计?知道早期Apache怎么做的吗?
TCP UDP区别,介绍一下拥塞控制,丢包时为什么阈值会减半

二面

二面全程针对项目问了一通,连接分发还有其他的方式吗?使用互斥锁和读写mysql会造成上下文切换吗?为什么不用无锁设计?建立连接还有其他的方式吗?了解nginx和apache的实现吗?(这个一面问了,可是后面还是没看,结果还是没答上来)读过什么开源的代码吗?感觉面试官没有找到技术的共同话题,然后就结束了。

三面

介绍科研经历
介绍项目,一个一个的说
多线程程序内存布局
线程栈的大小,能调整吗?代码中怎么调整?
花生壳内网穿透原理
ARP协议介绍,ARP表建立的过程
TCP已经有了保活为什么还要有心跳包
纳格算法
虚拟化了解吗
汇编了解吗
未来的职业规划

感受

从问的问题来看,感觉是个偏底层的岗位,问了几次会汇编和虚拟化吗?因为不会所以感觉可能技术栈不太符合,最后也是被回绝了。

微软

笔试

其实我不想写微软的,因为我笔试都没过,但是我想吐槽一下微软的那个笔试系统,代码区还划分了只读区,只能在那个函数里写,因为上面是只读区,我也没办法调用其他函数,递归没法写,头文件也不让添加,stl没法用。虽然这个笔试系统如此坑,但是我仍然还是一个软粉。

百度C++实习生

一面

五层网络模型介绍一下,同时介绍一下每一层有哪些协议
ARP协议是干什么的,属于哪一层
TCP UDP区别
三次握手,四次挥手,TIME_WAIT状态的作用,时长为什么是2MSL,服务器大量TIME_WAIT怎么解决(答了reuseraddr选项,又问有没有其他的方案,没答出来)
syn中的序号是固定的吗?这个序号的最大值是多少
socket编程的常见流程,accept调用什么时候会阻塞。
syn队列和accept队列,syn_cookie原理
介绍一下同步IO,异步IO,阻塞,非阻塞
select poll epoll
进程间通讯的方式,未命名管道和命名管道的区别
static关键字
sizeof,#progma pack(8) 作用
进程和线程的区别
进程虚拟地址空间,mmap映射和动态链接库在哪个位置
fork,vfork,clone的关系,clone是为了创建线程的吗?
调用malloc时会立即分配物理内存吗?页表中一定会对应物理页框吗?swap交换空间
编程:统计二叉树第k层的结点数目

二面

实现strcpy
实现单例模式,要求线程安全
进程,线程区别
static关键字
实现快排
实现非递归后序遍历二叉树
后来又写了个题,忘了是啥了
开放式问题:多台机器存储文件,想到什么说什么

三面

mysql join有哪些,笛卡尔积
介绍一下项目
linux命令,查看监听的端口
开放式问题:一个文件中存储着很多字符串,给定一个字符串如何确定是否在文件中,有哪些方法?答了字典树和哈希。问有没其他方法?实现其中一种。
接受转语言吗
实习时长

感受

百度一面感觉很好,第一次见到称呼“您”的面试官。二面还行。三面很无语,面试平台都不会用,感觉技术栈不符合,项目介绍一半扯到别的去,最后问接受转语言吗?三面完成后说若通过了5月10号之前出结果,今天11号了还没有任何消息,所以结果你懂的。

ByteDance(瞧这名字取的,技术,艺术,优雅)后端开发实习生

一面

介绍科研经历,介绍了一通啥也没问,直接做题。(因为科研方向真的很偏啊)
找数组中的前k大个数,有哪些方法,分析时间复杂度和空间复杂度,实现其中一种,最后写了一个用小顶堆实现的
海量IP,给定IP,输出IP出现的次数,分析时间复杂度和空间复杂度,答了字典树,哈希,位图
select poll epoll区别,什么时候用select和poll
sizeof
C++内存模型,常量存储区,静态变量和全局变量
虚函数的实现
udp适用于什么场景
tcp和udp可以绑定到同一个端口吗?如何实现
http协议,connection选项的作用
如何优化一条sql的查询语句
msyql有哪些索引
联合索引,最左匹配的原理
redis有哪些淘汰策略

二面

研究生做了哪些工作
科研发论文的过程
概率题:一个地方的夫妻,一胎生了男孩继续生,生了女孩不再生,二三四五胎...亦然,直到生个女孩,问最后男孩女孩的比例,问一个夫妻生男孩的个数的期望是多少
概率题:有一个函数rand7可以随机生成0到7,问如何使用rand7实现rand5,证明机会均等。又问如何使用rand5实现rand7。
socket编程的流程,accept调用和三次握手的关系,accept什么时候会阻塞,accept队列是由谁维护的
编程:之字形打印二叉树

三面

研究生做了哪些工作
项目,这里面的细节问了很多,感觉每次都能问到痛点
协程介绍一下,协程怎么调度
python java了解多少
一个服务如何提高并发
场景题:一千台服务器两两连接,服务器之间的延迟不断变化,如何确定任意两台服务器之间的最短路径,答了floyd算法,问floyd算法怎么写。最后写两个函数,一个函数根据服务器之间的延迟更新图,一个函数实现迪杰斯特拉算法。
实习时长

感受

一二三面连着,一气呵成,因为没想到还会问概率题,中间二面让给问懵了,两个概率题答得都很差,当时以为二面都要挂了,还好面试官给了三面的机会。隔天进行了HR面,问得都是些常规问题,告知下周五之前出结果。

总结

写了这么多,其实就拿了腾讯teg和快手的offer,如果拿到头条的offer就去头条了。要说有什么经验的话就是找准方向,早做准备,多看面经,最好能够免笔试直接面部门,面试遇到不会的千万别啥也不说,但是更不能瞎扯。然后一个小点但是很重要的就是不要太过于依赖于IDE,现在IDE功能强大,极大地提高了软件工程师的生产力,但是鬼知道面试的时候你用的哪个平台,而且大部分面试平台的Intellisense垃圾的不行,所以平时刷题的时候还是用纯编辑器写比较好,常用的函数名和参数都要记住。

#阿里巴巴##腾讯##百度##快手##实习##面经##C++工程师#
全部评论
虚继承,路过的谁能解释下?😂
点赞 回复
分享
发布于 2019-05-12 16:20
对,腾讯今年感觉招了特别多,很担心转正率
点赞 回复
分享
发布于 2019-05-13 08:40
秋招专场
校招火热招聘中
官网直投
带佬带佬,原子操作的原理是回答CAS吗
点赞 回复
分享
发布于 2019-05-14 16:39

相关推荐

14 113 评论
分享
牛客网
牛客企业服务