首页 > 笔经面经 > 一个真实的秋招案例总结(内附一大波面经)

一个真实的秋招案例总结(内附一大波面经)

头像
想要成为一个红名offer大佬
编辑于 2019-11-08 16:28:51 APP内打开
赞 23 | 收藏 149 | 回复12 | 浏览7845

终于把三方寄出去了,宣告秋招结束,牛客网基本上陪伴了整个秋招过程,从简历内推、刷题、面经、到offer比较。在这里感谢所有帮我内推过的师兄师姐(虽然可能大部分都拿不到内推奖励,狗头保命)和秋招过程中帮助过我的小伙伴们。是时候来回馈一波,分享一些个人的经验和教训,以及面过公司的面经~

个人情况:

菜鸡一枚,本科双非,硕士某末流985,有过一段算法实习经历,秋招投递的都是C++开发方向的岗位。bat,tmd的offer一家都没有拿到,拿了5家小厂的offer,bigo (C++音视频开发),zoom(C++服务器开发),美图(C++广告服务器开发), vivo(C++嵌入式开发),新东方在线(C++开发)。全都是白菜价,相对于牛客上的遍地的sp,ssp来说,算是一个比较真实的秋招案例了,而且这些还是在海投的基础上得来的。

秋招历程:

准备阶段:

4月份结束实习回学校,实习做的是语音算法的相关工作,和自己本身的研究方向也不相关,没有论文,也没有相关的比赛经历。回学校决定转开发,5月份身体出了一点问题,基本上没怎么复习,断断续续看了一些C++ primer,6月份开始正式准备,刷剑指offer,复习相关的基础知识,而这个时候有些公司的提前批已经开始了。7月份发现自己简历上没有开发相关的项目经历,花了一个月码了一个项目,(其实都比较仓促)。8月份,很多公司的提前批都快要结束了,从8月份开始投简历,8月中下旬基本上是上午复习基础知识,刷题,下午和晚上的时间基本上就开始笔试了。9月份面试和笔试最集中的一个月,基本上就是笔试+面试,没有大块的时间留给自己复习的,零散的时间就刷刷面经。10月份,由于国庆后有腾讯的面试,国庆七天在LeetCode上刷了dp,链表和树的专题,大概40道,然后复习了相关网络编程的知识点。

笔试面试:

从8月份开始投出第一份简历,到9月26号投出的最后一份简历,整个秋招过程中总共投了103家公司,笔试了66家,收到面试通知的30家左右(后期也推了一些公司的面试)。

投递简历基本上是按照牛客上的笔试日历来的,如果下周有这个公司的笔试,这周就优先投这个公司,然后去牛客上找内推,基本所有的简历都是内推的。每天吃完饭或者不想看书的时候就填几份简历,然后自己排好时间,因为后期每天笔试的公司都很多,没有安排好时间,笔试时间很容易撞车。

经验教训:

  1. 一定早做准备,一定早做准备,一定早做准备,重要的事情说三遍,(大佬自动忽略)。算上零散的时间,我秋招准备时间就3个月左右,对于很多知识理解都不够深,所以只能拿到白菜价,很多公司都一面挂了。尽早明确方向,早做准备。
  2. 准备充分的尽量参加提前批,很多公司提前批是免笔试的,直接面试的,而且提前批sp的概率会更大;但是如果没准备好的话,可以提前批试试一些小公司或者不是特别想去的公司,一般都说提前批不影响正式批,但是会有面试记录的,如果提前批面的太差,后面可能不会捞了。
  3. 能内推就尽量内推,简历优秀的话还是有机会可以免笔试的,特别是能内推到特定部门的那种,多一次机会。内推信息在牛客上基本都能找到。
  4. 海投的话,利用好牛客网上的笔试日程和校招日程,注意deadline,自己最好记录一下投的哪些公司,安排好笔试时间,防止撞车。
  5. 心态调节,如果不是大佬,基本上都会有一段没有正向反馈的时间,我从8月1号开始投简历,笔试做了差不多20家,直到8.29号才收到第一家面试通知,那段时间也是一直否定自己,担心找不到工作;然后后面的面试很多都是一面挂了,自我安慰(反正我投的公司多,挂了这一家还有99家)
  6. 来碗鸡汤,坚持,秋招战线还是挺长的,干就完事了,大部分的公司都是9月份面试的,但是10月份也还是有挺多公司的,我10月份还是面了10多场面试,不要放弃。
  7. 后面有想到再补充吧~

学习路线:

学习路线方面的话,其实没有太多话语权,推荐一些我看过的大佬的帖子吧,我也是按照大佬们的路线来的。

刷题:

刷题的话可以看看这个博客,把剑指offer和LeetCode上的题目进行分类,面试的话,把这些刷完应该没什么问题了:
https://blog.csdn.net/kk55guang2/article/details/85223256

C++

如果基础不是很好的,可以去b站上搜黑马的视频看看,过一遍,对基础还是有帮助的。
大佬们的学习路线:

面经合集:

1.bigo:(offer,8.29一面,9.12二面,10.15三面)

一面:以前发过面经,传送门

二面(46min):

  1. 了解HTTP协议嘛,怎么对HTTP请求进行分片的。
  2. HTTP协议的弊端。了解私有协议嘛?
  3. 粘包,拆包问题怎么解决。(怎么判断数据包发送完毕)。
  4. 网络传输过程的大小端。
  5. hashmap底层实现。
  6. 双缓冲日志系统的实现,底层的数据结构的设计,了解nigix嘛,中间有类似的结构。
  7. epoll水平触发和边沿触发的区别。
  8. 图书馆管理系统数据表的设计,包含借书还书的功能,需要几个表,哪些是主键。
  9. python熟悉嘛?介绍一下python中的装饰器模型。
  10. 介绍实习,研究方向。
  11. 为什么没去做算法。
  12. 反问:后台的方向介绍。

三面(40min):

  1. 写一个9*9的均值滤波。
  2. 怎么去优化矩阵的计算速度。
  3. 1000万数中取出最大的100个数。
  4. 怎么把无限循环小数转化为分数形式。
  5. 介绍实习项目。

2. vivo(offer, 现场面9.17)

之前发过面经,传送门

3. 美团(四面挂,一面9.7,二面10.10,三面10.14,四面10.23)

一面:之前写过面经,传送门

二面:(转岗,55min)

  1. 自我介绍。
  2. 网络中的分层结构。TCP/IP协议在哪一层。
  3. TCP,UDP的差别。TCP怎么保证按序到达,怎么实现可靠传输;拥塞避免怎么实现的。
  4. 浏览器输入一个URL经过了哪些过程。MAC地址怎么处理的。
  5. HTTP中常见的code码。5XX的状态码用过哪些。
  6. HTTP和HTTPS的区别。HTTPS的怎么实现的。怎么实现加密的。加密算法。rsa和aes算法有什么区别。
  7. 左值和右值有什么区别,怎么把左值转化为右值。
  8. 进程和线程的区别,进程间的通信方式有哪些。
  9. 为什么线程的崩溃会导致这个进程的崩溃。
  10. 进程有哪些状态。一个进程从创建到运行经过哪些阶段。
  11. 静态库和动态库的差别?
  12. map的结构是怎样的。有哪些解决hash碰撞的方法。
  13. 怎么防止死锁,银行家算法,怎么预分配的。
  14. 用过哪些锁,互斥锁,条件变量,信号量,这些锁之间有什么差别。
  15. 自旋锁。
  16. 多线程编程要注意哪些方面?
  17. 实习项目介绍。
  18. 能不能来实习。拿了哪些offer,什么岗位?
  19. 算法题,Leetcode 121。时间复杂度和空间复杂度分析。

三面:(45min)

  1. 实习项目,主要负责那一块,印象最深刻的是哪一块。怎么优化的?
  2. 一面没有回答出来的问题,自旋锁?自旋锁的应用场景。
  3. 程序从点击到运行经过了哪些过程?
  4. 介绍虚函数?怎么用的?哪里会用到?虚函数的实现,虚表中存放的内容。
  5. C++实现一个单例模式。
  6. TCP和UDP的区别?
  7. IPv4地址不够怎么解决的。NAT,解释一下NAT的原理。NAT的过程。
  8. ping的原理,ping的过程。
  9. ping不通,说明服务器挂了?可能服务器有防火墙之类的?一直ping不通?
  10. 数据库索引,提高查询的速度,联合索引?
  11. 代码:二叉树的层序遍历。 Leetcode 102
  12. 职业规划?公司的期望,城市的要求?

四面:(主管面,55min)

  1. 职业的发展方向?
  2. 实习介绍。
  3. 找工作中比较看重什么?
  4. 是怎么看待客户端(前端)和后端的?
  5. 实习中的难点?怎么去解决的?和行业水平相比?出发点?
  6. 相比其他人的优势在哪里?
  7. 怎么去释放自己的压力的?
  8. 代码:实现矩阵顺时针输出。
  9. 判断3进制数的一个数是奇数还是偶数?
  10. 平时是怎么学习的?兴趣爱好?

4. 爱奇艺(三面挂,一面10.17,二面10.25,三面11.05)

一面:(45min)

  1. 自我介绍。
  2. new 和 malloc的区别?
  3. this指针的作用?
  4. const的作用?修饰成员函数的作用?
  5. 多态怎么实现的?虚函数会占用存储空间嘛?是占类的空间大小?
  6. C++中的四种类型转换?staic_cast转换?
    static_cast, dynamic_cast, const_cast, reinterpreter_cast
  7. 代码阅读: 一些字符指针的操作,判断结果?变量在内存中存储的位置?常量在内存中的生命周期?
  8. 多态的实现?
  9. python中的内置的数据结构,元组和字典的区别?
  10. is 和 == 的区别?
  11. 变量查找的过程?变量的作用范围?
  12. TCP中的连接状态有哪些?
  13. HTTP常用的方法?
  14. 进程间通信的方式有哪些?线程间的通信?
  15. 实习介绍。

二面:(35min)

  1. 为什么想来北京?
  2. 介绍实习。主要的难点?你做的什么工作?
  3. 项目介绍?one loop one thread思想?线程池怎么设置的?HTTP的方法?
  4. 双缓冲日志系统怎么实现的,有什么好处?
  5. ET和LT的区别?ET是怎么工作的?用for循环代替(读请求)?
  6. 怎么给一个对象分配指定地址空间的地址(内存分配)C++中如何在指定的内存中创建新对象?
  7. 重载和重写的区别?
  8. 类的构造函数中赋值和初始化列表有什么区别?初始化列表一般用在哪里?
  9. listen中backlog参数的含义?超过128会发生什么情况?
  10. HTTP2.0有哪些新特性?
  11. 进程间有哪些通信方式?

三面:(35min)

  1. 自我介绍:
  2. 实验室的项目。
  3. epoll的LT和ET模式的区别?
  4. 实习介绍。
  5. C++中的多态?动态绑定? 静态绑定?
  6. C++中的模板主要用在哪些地方?
  7. C++中的智能指针,weak_ptr中怎么处理内存泄露,错误的情况?
  8. 指针和引用的区别,用const修饰的区别?
  9. 介绍一下生产者消费者模型?
  10. 互斥量和条件变量的区别?条件变量的唤醒?
  11. 栈和队列的区别,两个栈模拟一个队列?

5. Zoom(offer,一面9.18,二面+HR 9.30)

一面(两个面试官,65min):

  1. 自我介绍。
  2. 项目相关,实习相关。
  3. 什么是Reactor?Reactor和Proactor的区别,为什么用Reactor? 同步和异步IO的区别。
  4. epoll怎么判断数据读取完毕?
  5. new 和 malloc的区别?有malloc了为什么还要设置new,new还有哪些用法?
  6. 为什么要设置虚析构函数?虚析构函数的作用。
  7. TCP 和 UDP的区别? 面向连接的连接的含义?
  8. private 有多态吗? 引用有多态吗?
  9. web 服务器的作用?(只能处理静态资源)服务器的处理流程?
  10. 日志系统的实现,为什么采用两块缓冲区,而不是把缓冲区的大小扩大。好处是什么。
  11. 日志来不及写,怎么处理。
  12. 线程池的处理逻辑,怎么判断一个线程挂掉,怎么实现负载均衡。
  13. 对智能指针的理解。
  14. 怎么处理失效和过期的请求。
  15. 如果没有空闲的工作线程,新到的请求怎么办?
  16. 怎么处理下载请求。下载的数据大小都不一致。怎么支持浏览器。
  17. 介绍一下对深度学习的理解。

二面(经理面, 30min):

  1. 实习和项目介绍。
  2. 多线程编程。
  3. 场景题:服务器开发需要优先考虑哪些方面。

6. 深信服(三面挂,现场两面9.20, 重新一面9.26)

一面(30min):

  1. 手撕代码:输出倒数第k个节点。
  2. 思路:马走棋盘,快排的过程,堆排序和hash。(时间复杂度)
  3. 链表删除节点。
  4. 多态,虚析构。
  5. C++中代码的存储区。
  6. epoll的两种触发方式的区别。

二面(30min):

  1. 段错误怎么解决。(生产环境中怎么解决)
  2. TCP头部有哪些字段。
  3. recevie返回值为0是什么情况。
  4. select的应用场景,有epoll了,select还有存在的价值吗?
  5. linux命令netstat, 查看cpu使用状态?

一面(重新被捞,电话面30min):
深信服的人才库是真.人才库,收到感谢信不到3天,都收到了新的面试通知,不过感觉像KPI面试。

  1. 自我介绍。
  2. 介绍一下大根堆和小根堆。它的应用场景。
  3. 排序算法了解哪些,快排的时间复杂度是多少,最坏的情况是怎么样的,空间复杂度是多少。
  4. 链表和数组,各自有哪些特点和区别。
  5. 介绍一下hash表。
  6. 结构体对齐:3个成员的结构体大小。
  7. 在main函数之前有哪些代码会先执行。
  8. 进程和线程的区别。
  9. 项目在进行多线程和多进程的编程时候,哪种场景适合用多线程,哪种适合用多进程。
  10. fork()函数的用法。怎么判断是父进程还是子进程。
  11. 进程间通信的手段和方式有哪些,项目中用过哪些。
  12. 调试手段有哪些,(GDB),GDB怎么去看多线程和多进程?GDB里面的命令,调试还有什么手段,如果一个服务器运行了n天,出现问题崩溃了,怎么去排查问题。
  13. 介绍一下I/O多路复用。
  14. 网络拥塞和TCP的拥塞控制机制:
  15. 浏览器访问一个URL的全过程:
  16. 什么是孤儿进程?
  17. 物理地址,线性地址,逻辑地址。
  18. 求单向链表的倒数第k个节点。
  19. 怎么判断单向链表有交叉。
  20. 巨大的没有排序的数组,如何快速找到它的中值。
  21. linux下用过哪些命令?
  22. 项目介绍:为啥要用Reactor模型?有哪些优势?服务器的应用场景是怎么样?
  23. C++中new和delete有什么区别?
  24. C++11的新特性。
  25. 拷贝构造和赋值运算符有什么区别?
  26. STL用法有哪些注意点?
  27. 如何设计一个地图功能,找到离当前位置最近的5个加油站。

7. cvte (二面挂,9.18现场两面)

之前发的面经,传送门

8.美图(offer,一面10.16,二面10.17)

一面(45min):

  1. 自我介绍。
  2. 虚函数实现原理?(虚表,虚指针)。非虚函数的访问是怎么样的?
  3. 怎么在c++中调用c语言的代码?(extern c)
  4. new和malloc的差别?
  5. map和unoreded_map的区别,如果把一个类传递给map的key值,需要加什么操作吗?
  6. redis,kafaka了解嘛?
  7. google的内存池(tcmalloc)了解嘛?内存池的实现?线程池的实现。
  8. 函数重载的底层实现原理?智能指针的实现原理,shared_ptr中有没有多次读的加锁机制?
  9. 遇到过内存泄露的情况嘛,内存泄露有哪些可能情况,怎么去解决内存泄露?
  10. 怎么去排查程序挂掉的情况?
  11. TCP的三次握手,TCP的四次挥手,为什么需要四次挥手(TCP是全双工的),TIME_WAIT的作用。
  12. TCP的窗口机制,拥塞避免算法。
  13. 浏览器打开一个网站经历了哪些过程?
  14. 场景题:A调用B的服务,B调用C的服务,C的服务最慢,怎么实现A的高性能的访问。
  15. 手撕:链表逆置。

二面(20min): 二面比较水

  1. 自我介绍
  2. 实习和项目介绍
  3. 职业规划

9.新东方在线(offer,一面9.20,二面10.11)

新东方的面试算是面过的比较水的了,当然最好也是给了一个劝退价。

一面(30min):

  1. 自我介绍。
  2. 实习和项目介绍。
  3. 介绍一下epoll的原理,有哪些触发模式。
  4. 进程和线程的区别。
  5. 进程间的通信和线程间的通信。
  6. TCP和UDP的区别,TCP为什么叫字节流。
  7. 数据库,主键,外键,索引。
  8. 用过哪些数据结构。
  9. 排序算法有哪些,介绍一下快排的思想。
  10. 手撕后序遍历,递归。

二面(20min):

  1. 自我介绍
  2. 实习和项目介绍
  3. 职业规划
  4. 聊人生

10.腾讯(一面挂,10.8)

本来都对腾讯不抱希望了,国庆节前被微信广告部捞了,国庆节复习了七天,最后还是挂了,还是太菜了。

一面:(70min)

  1. 自我介绍。
  2. 代码: 1.最长下降子序列,时间复杂度,和空间复杂度分析。
  3. 链表逆置
  4. 介绍一下Reactor模式。
  5. socket的API, socket, bind, listen。listen中backlog参数的意义,如果超过backlog之后的连接会怎么处理。
  6. 线程池怎么处理的,任务队列怎么实现的。怎么设置锁的。条件变量。(线程池的处理逻辑)
  7. 用过哪些锁,互斥锁,读写锁,信号量,条件变量,介绍一下自旋锁,自旋锁的应用场景。
  8. HTTP中头部的行数,头部的最大数量,请求头的最大行数。
  9. HTTP1.1的特性,KEEPALIVE, 管线化。
  10. 大端,小端字节序,为什么不统一,存在大小端的原因。
  11. 字节对齐的作用,这样做有什么好处。
  12. 1g的字符串赋值,需要多少时间,可以从汇编的角度思考。赋值操作主要的耗时在哪?

11. 字节(一面挂,一面9.11)

虽然一面挂了,但是字节的面试体验真的很好,全程都是和面试官在相互交流。
一面(60min):

  1. 自我介绍。
  2. 介绍实习。
  3. 研究方向介绍,介绍研究方向的场景。
  4. 介绍一下c++中内存泄露的情况。
  5. 怎么解决c++内存泄露,智能指针。
  6. 介绍一下智能指针(shared_ptr中循环引用),weak_ptr;智能指针出现内存泄露的情况。(智能指针的实现。)智能指针什么时候调用析构函数。
  7. 写程序的时候遇到过段错误吗?哪些情况可能引起段错误。有哪些手段可以去解决。
  8. 检查下面代码有错误没有。
  9. 冒泡排序的时间复杂度,快排的时间复杂度,简述一下快排的思想。
  10. 代码:求出最大连续子数组。

12.欢聚时代(一面挂,9.18)

现场面的,面试体验还是挺好的,面试官全程笑嘻嘻的,最后还是挂了,可能方向不是很符合。

一面(30min):

  1. 网络的时延和抖动。
  2. 怎么快速计算网络的带宽,上行速度。
  3. 什么是线程安全,怎么实现线程安全,有哪些方式。
  4. 线程中有哪些锁。
  5. 虚析构函数的作用。
  6. stl里面有哪些迭代器。
    dns的算法实现,dns的流程。
  7. 智能指针。
  8. 实习相关。

13.华为(一面挂,9.19)

秋招面试体验最差的一次,没有之一,面试前排队排了两个多小时,进去面试感觉面试官想下班了,一直拖延时间,面完的时候,面试大厅感觉都没什么人了,直接就挂了。

一面(80min):

  1. 数组指针和指针数组的差别;
  2. 怎么用二叉树计算IP地址中的最长前缀。
  3. 编码安全。(浮点数的计算),段错误的产生,怎么保证编码安全。
  4. hash的原理,hashcode的计算方式(多项式)。
  5. C++中代码的存储区。
  6. 机试题复盘。
  7. 实习介绍和项目介绍。
  8. 手撕代码:单词翻转。去除中间的空格。

14.360(一面挂,9.2)

秋招面的比较早的公司了,面试体验很差,视频结束之后不到一分钟收到拒信。
可以参考之前发的面经,传送门

15.广联达(一面挂,9.21)

现场面的,差点手撕红黑树,后面才知道原来面试官是TOP2大佬,前面面试的人就叫手撕红黑树了,orz。
一面(30min):

  1. C++多态:
  2. 红黑树和avl树的差别
  3. 用过哪些stl,map(红黑树), vector。
  4. 手撕中序遍历(递归和非递归)
  5. 阻塞IO和非阻塞IO。
  6. 线程池主要为了解决什么问题。

16.好未来(一面挂,9.22)

一面(30min):

  1. 自我介绍。
  2. 有没有对服务器进行过压测。支持多少并发,吞吐量,响应时间。(服务器的压测数据),为什么称为高并发。测试环境和配置。
  3. HTTP协议的实现,怎么解析的。这么判断一个数据包。HTTP数据包的格式。(请求头)
  4. HTTP中的状态码,301和302之间的区别。登陆的缓存。
  5. 线程池的作用,哪些情况下用线程池。线程池的实现的策略。请求太多,没有工作线程,怎么处理。线程池数量的设置,有没有什么依据。
  6. baklog有了解过嘛?
  7. epoll的原理,红黑树和就绪队列。epoll怎么判断请求已经就绪。
  8. 双缓冲区异步日志系统。怎么处理日志堆积的情况。(丢弃日志)设置的缓冲块的大小。这样设置的好处。
  9. 有没有看过一些开源的日志系统。日志的压测。
  10. 算法:找到部分有序数组中的顶峰元素。

17.追一科技 (一面挂,9.25)

一面(40min):

  1. 自我介绍。
  2. C++11新特性有哪些?weak_ptr指向的对象可不可以访问类的成员函数。weak_ptr转shared_ptr指针哪些情况下可能会失效。
  3. 能不能有虚构造函数,虚析构函数的作用。
    4. 一个32位的Linux系统,64g内存,在c语言中最多可以申请一个多大的字符串。
  4. hashmap的设计与实现。
  5. 阻塞IO和非阻塞IO的区别,使用阻塞IO阻塞时,read会返回什么。
  6. 多个线程向日志线程写的情况,怎么处理。
  7. 算法题:找出0-100中出现2次的那个数字。 Leetcode 287
  8. 用通俗易懂的语言介绍一下反向传播算法。

18.富途(一面挂,9.28)

现场面的,面完的时候,面试官说我们想招的是有一点工作经验的(应届毕业生)。orz。
一面(30min):

  1. 笔试第二题,6个人中选四个人两两配对,有多少中可能性。
  2. 写代码: 16进制字符串转整型。int HextoDec(char *str)
  3. 在10个人中至少有2个人生日相同的概率(设一年为365天)。
    10个人不同生日的概率:P0 = (365/365)(364/365)(363/365)(362/365)(361/365)(360/365)(359/365)(358/365)(357/365)(356/365)= 0.88310个人中,至少有2个人同一天生日的概率是:P1 = 1-P0 = 0.117...
  4. 求两个字符串的交集。vectora ={"abc","def"} vectorb={"abc"}
  5. 异步缓冲日志系统。Reactor模式和Proactor模式的区别。
  6. TCP三次握手,为什么要有三次握手。
  7. listen(int fd, ) backlog的作用。

19.网易互娱(一面挂,10.18)

一面(65min):

  1. 自我介绍。
  2. 实习介绍
  3. 重写和重载的区别? 动态绑定?
  4. 代码阅读:多态的实现,虚函数表存放在哪里?
  5. 堆和栈的区别?代码的存储位置?
  6. 函数传值,const,传入参数和传出参数?
  7. map和unodered_map的差别? 红黑树?
  8. 有哪些解决哈希冲突的方法?
  9. 堆排序的过程?
  10. 手撕代码:树的镜像
  11. 数组中出现一半的数字?超过1/3的数字?(Leetcode)
  12. 爬楼梯(dp)
  13. 计算下一次出现毒圈的位置?(吃鸡战场)

12条回帖

回帖
加载中...
回帖

相关热帖

笔经面经近期热帖

近期精华帖

热门推荐