2020实习、秋招面经总结(C++后端)

总结了一下自己2020年参加春招(实习)和秋招的面试(语言是C++,岗位是后端研发)

关于学习经验的分享:经验

字节跳动

实习

一面

基本全程聊项目

  1. 什么是IO复用,什么是非阻塞IO
  2. TCP和UDP
  3. 流量控制解决了什么问题,怎么实现,接收窗口为0了怎么办
  4. 哈希表的作用,怎么解决哈希冲突
  5. 布隆过滤器原理作用
  6. redis的线程模型
  7. 项目结构
  8. 判定是否是镜像二叉树

二面

  1. 聊项目,reactor模型,线程模型
  2. epoll高效吗?为什么?什么情况高效
  3. LRU置换算法实现(说思路,不实现)
  4. http?无状态?无状态怎么实现用户登录?
  5. session,cookie,token
  6. csrf攻击,怎么防御
  7. linux进程空间分布
  8. 简单题(从一个棋盘的左上角走到右下角有多少种走法,只能向右和向下走)

三面

  1. 介绍项目。参考了什么开源代码吗?
  2. redis的数据结构,介绍一下set
  3. redis线程模型,为什么使用单线程?
  4. 说说内核态
  5. url访问网页的过程,用了哪些协议?
  6. 算法,不用乘除运算实现除法(一开始用减法,面试官让优化,位运算+递归实现)
  7. 算法,判断4张扑克牌是不是顺子,大小王可以作为任意牌

秋招

因为有个字节跳动的实习offer,但是之前因为某些原因没去成,提前批的时候直接被捞了参加终面。

  1. 聊了聊最近做的事情,讨论了一下raft算法的实现,和各种网络情况下出现的异常情况怎么处理,脑裂问题怎么解决。
  2. 了解快排吗?讲一讲快排的思路,实现一下单链表的快排。分析复杂度,递归层数,函数调用次数。
  3. 一个圆形的岛,你在岛中心,岛外有一只鲨鱼,它的速度是你的四倍,你需要在不被鲨鱼追上的情况下到达岛的边缘,说一说方案。能不能解析出你的运动路径。
  4. 反问。

参加了很多面试,还是感觉字节跳动的体验很好,面试官很友善,不断地引导问题,面试反馈也很亏,而且开启时间很早,6月就开始,有个offer心里不慌。

------------------------------分割线--------------------------------------

网易雷火

雷火的一二一起的,一面是做题

实习

一面 & 二面

做了一些基础题,记不太清了

算法题:一次攻击可以造成一点伤害或者两点伤害,要打死一只有n点血的怪物有多少种方式

二面

聊了聊项目,然后做了个题

在8×8的棋盘中有一只马(棋子,行走规则为走日字格)
马可以从出发点,行走63步之后走遍棋盘中的每一个点,请返回一个这样的可行路径(用了深度优先搜索的办法,面试官提了一个可以优化的点,就是搜索的时候调整一下每次跳跃的顺序)

三面

时间太久了也不记得了,都是一些比较基础的题,但是有一个题比较有意思

即父类的虚函数定义了一个默认形参,子类对这个虚函数进行override的时候,设置了一个新的默认形

参,那么在使用父类指针调用子类虚函数时,使用的默认形参是哪一个?(effective C++上有讲过,答案是会调用子类的函数,但是默认参数是父类的,有点离谱)

秋招

一二面是一起的

一面

  1. 做题(填空),判断i++和++i的输出
  2. 做题(多选),下列哪些是在编译期间完成计算的(#define,const int a,sizeof(void*),模板)
  3. 做题(单选),fin_wait1状态是什么时候出现的,讲一讲TCP状态转移图
  4. TCP和UDP的区别,拥塞控制说一说
  5. 做题(多选),下列关于epoll,poll,select正确的是(epoll定时器精度最高,poll没有监听数量的限制,select可移植性更好,select监听的套接字在内核态保存)
  6. 讲了一下raft算法
  7. 讲一讲虚拟继承
  8. 讲一讲RTTI
  9. dynamic_cast的用法,无法转换时会出现什么情况(指针返会NULL,引用抛异常)

二面

  1. 聊项目
  2. 用户态和内核态,为什么要这么区分
  3. 系统调用的过程
  4. 向一个对端关闭的TCP套接字写数据会出现什么情况(RST和sigpipe)
  5. 菱形继承的内存模型,虚拟继承后会怎么样
  6. 算法题,在文件里面有n个在[1,n]之间各不相同的数字,挖去其中两个,找到这两个数字。要求可以多次读文件获取文件中的信息,但是仅允许使用O(1)的内存空间

三面

  1. 聊项目
  2. 了解printf的可变参数是怎么实现的吗,从汇编层面解释一下(卒,不懂汇编)
  3. 使用过__stdcall吗(卒,压根没见过)
  4. 计算结构体大小
  5. program pack之后结构体的大小,这个指令有什么好处,用在什么地方,有什么坏处
  6. 空类会默认生成哪些(构造,析构,拷贝,operator=),面试官说还有其他的,想不到了
  7. 写了一段代码问输出结果(主要是考继承中调用虚函数到底调用哪一个,虚函数的默认参数绑定的又是哪一个,这个实习问过啦,哈哈哈哈)
  8. 求第K大的数的两种办法和时间复杂度
  9. 哈希表的线性探测法怎么删除数据

------------------------------分割线--------------------------------------

虎牙

实习

一面

  1. 聊项目,用了muduo,比较详细问了实现细节
  2. extern 作用,为什么要extern C,extern变量在哪个数据段
  3. 数组和链表的区别
  4. map实现,为什么不用AVL树
  5. B+树有什么用?为什么不能用红黑树
  6. unordered_map
  7. 怎么实现游戏中的排行榜(没想到,感觉游戏里面的排行榜不是实时的)
  8. ++i线程安全吗,为什么
  9. LRU是什么,有什么用,怎么实现
  10. 协程和线程的区别

二面:

  1. 聊天项目 (muduo库相关的),了解协程吗,有用过吗
  2. 红黑树和链表的使用场景
  3. vector和deque的使用场景(只需要pushback的时候,两者谁的速度快)
  4. vector扩容和realloc是需要直接拷贝吗?
  5. TCP和UDP
  6. UDP的使用场景(听过P2P和HTTPDNS吗,没有。后面了解了一下P2P需要穿透内网,UDP应该更容易实现)
  7. 场景题:一条弹幕有1-30个字,需要对弹幕做一个敏感词检测,现在词库里面又100万个敏感词,怎
    么进行检测(没什么特别好的想法,考虑布隆过滤器,有小伙伴有比较好的想法可以说一下)

秋招

投了没捞简历

------------------------------分割线--------------------------------------

钉钉

钉钉只有春招面过,阿里各部门的春招会在校招系统开启之前就进行,这时候可以参加多个部门的面试,但是一旦校招系统开启了,最终只能选择一个部门参加。

实习

一面

  1. 四种cast,dynamiccast的实现方式,变量的类型信息存在哪儿?
  2. const的用法
  3. const和define的区别
  4. 怎么实现可靠UDP
  5. TCP怎么确认报文
  6. 数组链表map一笔带过。讲一讲特点
  7. 什么时候可靠UDP会比TCP更好用
  8. UDP最大报文长度,怎么称呼这个数据(MSS?)
  9. 智能指针及其实现(operator=重载有什么注意事项)
  10. 聊项目,多线程编程,coredump怎么debug
  11. 怎么检查内存泄漏
  12. 内存碎片怎么处理,用过tcmalloc吗(没听过。。后面查了一下是更适用于多线程的一个malloc库)
  13. 了解互斥锁的底层实现吗?(被问自闭了)原子变量呢,能不能猜一下?
  14. 集群怎么负载均衡(一致性哈希,虚拟节点)
  15. 了解设计模式吗(不了解)
  16. 算法题 leetcode15题

二面

  1. 乐观锁悲观锁的区别
  2. 一个线程修改某个变量,静一个线程一定可以过得这个变量的最新值吗?(volatile关键字)
  3. linux系统中进程线程的区别(聊到了cow机制,redis的持久化过程)
  4. 一致性哈希

后面是两个场景题

  1. 王者荣耀游戏,你控制人物从队友身边跑过去,你队友的手机也能看到你从身边跑过去,请问这个过程客户端和服务器做了什么
  2. 微信,附近的人这个功能怎么实现(怎么判断大量的点是否在给定点的附近?空间索引)

后面参加阿里云的面试就没有继续面试钉钉的

------------------------------分割线--------------------------------------

阿里云

实习

一面:

  1. EPOLL和POLL,性能比较
  2. 有没有试过把服务器放到高性能服务器上,绑核过后跑一下
  3. 实现的线程池有状态吗?(面试官说java线程池就是有状态的,但是我不了解)
  4. TCP粘包
  5. 网络数据到用户层经过了几次拷贝(猜的,两次,一次网卡到内核,一次内核到用户态。后面查了一下,错了,应该是三次)
  6. 对内核有了解吗?(没有)
  7. 智能指针的原理(RAII封装+引用计数)
  8. 野指针,怎么避免野指针?
  9. 多进程可以监听同一个端口吗?会出现什么问题(惊群)?怎么解决?多线程可以监听同一个端口吗(可以)?
  10. C++11和GNU11的区别吗?(不了解)
  11. vector clear的实现原理
  12. 虚函数和纯虚函数?虚函数可以内联吗?没有被继承的类有虚函数可以内联吗(说了不可以,但是面试官说可以)?
  13. malloc和new的区别
  14. 32位主机上可以malloc申请128G空间吗?(不可以)那最多可以malloc多大的空间(2个多G)?
  15. 除了系统调用用户态和内核态交互的手段(不知道)

二面:

  1. 聊项目,你的服务器怎么做负载均衡
    场景:比如浏览器访问一个http服务器,会同时向这个服务器发起多个TCP连接,这些连接中有的在IO图片,有的在IO文字,负载肯定是不同的,怎么负载均衡(额。答不上,感觉可以参考work steal那种策略?)
  2. 怎么优化服务器的IO操作,IO的时候考虑磁盘的特点,HDD,SSD?(答不上,听蒙蔽了)
  3. 继续聊项目。心跳连接正常就可以保证服务器活着吗?怎样的心跳才能保证服务器一定活着?
  4. 你觉得多线程编程比较难的问题?(面试官补充了,多线程间任务不要交叉,架构要合理)
  5. 多线程编程时怎么避免死锁?
  6. 协程的理解?协程编程的注意事项?协程里面想要实现sleep怎么做?
  7. 手撕LRU(双向链表+哈希表)

三面:

  1. 二叉树用过吗?有哪些遍历算法(前后中层序)?非递归用啥实现(队列和栈)?递归和非递归的区别?
  2. 海量数据的全排使用什么算法?(STL排序算法,快排+堆排+插入排序)
  3. topK问题一般用什么数据结构(堆,partition)
  4. C++重载怎么实现?(编译时编译成为不同的符号名字)
  5. 虚函数实现(详细:虚表,虚表指针,怎么调用)
  6. 局部变量,全局变量,静态变量的分区
  7. 协程里面能用互斥锁吗?
  8. 互斥锁,自旋锁,读写锁的区别(详细聊,跟内核态连起来聊)

后面两面就是做题了,具体题目记不住了,有一个题目是写一个线程池(用任务队列+条件变量和锁来实现吧)

秋招

因为拿了实习offer没去,秋招直接终面,基本没怎么问技术特别相关的问题。

------------------------------分割线--------------------------------------

下面的一些公司就只参加了秋招了

百度

一面

  1. 聊项目,大概半个小时。问得很多很细,各种场景题
  2. 你这样设计的reactor模型(多线程多eventloop)和多线程单eventloop的reactor有啥区别吗
  3. 场景题,哪些业务适合长连接,哪些适合短链接(根据业务,负载,场景去考虑。都想不出来)
  4. 场景题,你做爬虫,爬取其他网站的数据需要考虑哪些,怎么解决(get不到面试官的点,想到啥就说啥,感觉可以考虑分布式的设计,mapreduce,布隆过滤器等)
  5. HTTP头中有哪些你认为关键的字段(说了几个记得住的)
  6. C++11说说你熟悉的新特性
  7. 讲讲你觉得分布式的难点(一致性问题和网络的不可靠)
  8. 那么redis是怎么保证一致性的(不能保证一致性,比如redis集群的分布式锁是可能会丢失的)
  9. redis单线程为什么高效?又聊到了项目的reactor模型。。。。。
  10. 线程同步手段,分析性能,场景(终于整点儿正常题目了)
  11. 常用的STL容器,map和unordered_map,分析性能和优缺点
  12. 写题,简单,反转单词, 输入hello world!,输出world! hello

二面

  1. 聊项目,详细的聊
  2. 详细问了项目的内存管理
  3. 大并发量的项目,内存管理应该注意哪些点?(答了内存池,好的内存池能够减少内存碎片,减少内存分配的锁开销,可以用tcmalloc举例子)
  4. 两条单链表判断是否相交,链表可能有环,没做出来
  5. 手写前序遍历
  6. 场景题,怎么实现一个压力测试的小程序(两个功能,一个是读取数据库中的请求数据,一个是按照给定QPS均匀发起请求)

三面

  1. 聊项目,一直介绍,从想法,到实践
  2. 讲一讲你研究生期间的整体的学习进展
  3. 你对百度这个公司的看法怎么样(讲了一下百度是一个很有技术的公司)
  4. 你为什么这么觉得(送命题,讲了百度的BRPC)
  5. 你觉得BRPC有什么优势(卒)
  6. 你选择公司的标准
  7. 你还有什么想问的吗?

------------------------------分割线--------------------------------------

腾讯云

8-13

一面

聊了35分钟项目
2分钟C++11新特性
1分钟算法题(最长回文子串,想问马拉车算法,不会)
反问

二面

  1. 讲一讲raft和paxos算法
  2. 简单的讲一讲他们在日志不同的情况下的处理方式,这么处理为什么是安全的?
  3. 讲一讲leveldb的原理
  4. 设计一个数据结构,有100个用户看视频,一共100个视频,统计每个视频的播放量(用一个map存)
  5. 现在是一百个用户,一亿个视频,怎么处理。(答不上,下来查了一下应该是hyperLoglog)
  6. 知道IO的过程吗,一次IO用到了哪些内核结构(人懵逼了)
  7. 进程和线程你肯定知道,那你知道协程的原理吗?
  8. 进程调度的时候用了哪些数据结构(我想说CFS的红黑树,但是老哥说不对,他说是一个XXXX的梯度队列,懵逼。。。完全听不懂)
  9. 你有什么想问我的

被面试官吊打,但是离谱的是后面还给过了

------------------------------分割线--------------------------------------

猿辅导

一面

  1. 介绍项目
  2. 项目中实现了raft算法,讲一下
  3. leader下线后会怎么处理
  4. 旧的leader重新上线后会出现什么情况
  5. 选主和复制需要注意些什么
  6. 你看过leveldb的源码,介绍一下
  7. sstable是怎么存储数据和索引数据的(从sstable讲到block内部的数据存放,简单的说就是建立稀疏索引,索引即数据,也存在sstable里面)
  8. memtable是怎样的结构(跳表)
  9. 除了索引leveldb怎么加速数据的查询(布隆过滤器,不断地compact)
  10. level0和其他level有什么区别(是否存在overlap)
  11. 算法题:找到二叉树中最大的一层子节点个数是多少

二面

  1. 进程线程的区别(老生常谈了)
  2. 进程调度算法(CFS)
  3. HTTP1.0 2.0 3.0的区别,演进的思路,主要想解决什么问题
  4. 你不了解QUIC协议,那么让你实现可靠的UDP应该怎么做(QUIC是真不了解,只能照着TCP的实现来抄一套)
  5. 算法题,TopK,不能用现成的堆(快速选择,或者自己实现一个堆)
  6. 算法题,连续子串的最大乘积

三面

  1. 闲聊,问了毕设的内容
  2. 写题,BST topk问题
  3. 写题,两个线程按序打印数组,一个线程只打印奇数,一个线程只打印偶数
  4. 编译链接的过程
  5. 编译器可能对代码做哪些优化(指令重排,CPU流水线)
  6. 模板在哪个编译阶段展开
  7. 动态库静态库的优缺点
  8. 编译器怎么删除不会执行到的无用代码段
  9. 内联函数有啥用
  10. 虚函数可以内联吗

------------------------------分割线--------------------------------------

快手

一面

  1. 聊项目
  2. 实现LRU,不能用list,要求自己写一个双向链表

二面

  1. 聊项目,怎么对项目进行优化

  2. 聊raft的实现和工程上可以做的优化

    • 读数据可以不走raft直接从主节点读吗?(readIndex算法)
    • 如果直接从主机读数据,那么脑裂了怎么办?(旧的主机不知道自己已经被抛弃了,还在提供读取服务)
    • 解决脑裂
    • 怎么判断哪些数据的读取应该走raft,哪些数据直接从主节点上读?
    • 论文上讲过一个连续切主时候对日志提交的处理,能不能优化
  3. 做题,写出一个数字n的所有因子序列(不重复,且不包含1和本身),假如输入8,应该输出222,24

三面

  1. 聊项目及其优化
  2. 说一说HTTP2.0解决了什么问题,有哪些优化
  3. 了解QUIC吗,HTTP的演进解决了哪些问题
  4. 说一说linux内存管理
  5. 了解swap区吗
  6. 说一说linux的伙伴系统,解决了什么问题
  7. 说一说协程的原理
  8. 协程切换的时候要保存哪些数据,是所有的CPU寄存器值都需要压栈吗?
  9. 协程栈的管理有哪些方法
  10. 共享栈的会导致切换的时候有两次拷贝,有更好的方法吗。

后面有一个快Star的加面,基本没有问技术的问题。

#实习##面经##阿里云##C++工程师##校招##百度##猿辅导#
全部评论
盲猜项目是HTTP服务器😜
点赞 回复
分享
发布于 2021-01-29 12:59
春招专场
校招火热招聘中
官网直投
快star 大佬
点赞 回复
分享
发布于 2021-01-29 17:22
项目都是商业的或者实验室的合作项目吗。我啥也没有。只有网上自己找的照着做然后总结。而且大佬有几个项目。我看看我找几个合适。我太惶恐了。别人都好厉害。我啥也没有。
点赞 回复
分享
发布于 2021-01-30 11:56
关于c++的项目好找吗?或者说应付校招够吗?因为目前打算深入c++,作为自己的第一语言(非科班)
点赞 回复
分享
发布于 2021-01-31 11:20
楼主最后去了阿里云哪个部门哪个组呢?
点赞 回复
分享
发布于 2021-02-04 11:53
24届的来沾沾喜气
点赞 回复
分享
发布于 2023-04-05 11:30 北京

相关推荐

29 279 评论
分享
牛客网
牛客企业服务