从实习生招聘到校招内推阶段周围同学的面经集合
腾讯一面(电话面试),SNG,增值产品部(QQ会员),C++后台开发
- TCP三次握手的过程?
- 握手过程中都交换了什么信息?
- epoll和select的区别?
- 什么边沿触发?
- 多进程与多线程的区别?
- 子进程能继承父进程的什么东西?不能继承父进程的什么东西?
- 多线程编程应该注意什么?(最复杂的部分是什么?)
- 进程通信的方式有哪些?
- const的作用
- C程序内存布局
- 堆和栈的区别
- C++和C比,有哪些优势?(没说面向对象!模板、)
- 指针和引用的区别
- vector和list的区别
- map和set的插入删除效率哪个高?
- 说6-10个Linux命令
- 一个简单的算法问题:100个硬币,其中只有一个是不正常的,它可能轻了点,也可能重了点,给你一个天平,你至少称几次才能判断出这个硬币是轻了还是重了?
腾讯一面,SNG 视频直播,C++后台开发
1.TCP的头部有多长?不加选项的话20,加了选项最多60
2.TCP头部都有哪些字段?源端口、目的端口、Checksum、TCP首部长度、TCP总长度,序列号、确认号、窗口大小、控制字段。。。
3.如何通过UDP实现可靠传输?你会怎么实现?在应用层保证可靠性,实现方法参考TCP,提供序列号、确认号、重传机制、(流量控制)
4.server如何知道client发过来的是数据还是FIN?在应用层如何判断?收到FIN分节,内核会自动在接收缓冲区最后追加结束符'\0',如果应用程序用read()函数从缓冲区中读数据,如果read()函数返回0,则表示已经收到了FIN分节
5.server掉电,client能不能感知?不能,这种情况下server不会向client发送任何数据,但如果设置了keepalive选项的话,情况就不一样了
- 这种情况下,如果client还一直向server发数据会出现什么情况?一直重传,知道达到重传最大次数,断开连接
- 如果server进程挂掉(比如被kill),client能不能感知?能,server端TCP会向client端发送FIN分节
- 如果server进程还没有启动,client就向server发数据会出现什么情况?server主机向client回应RST分节
- 进程间通信方式
- C++方面的问题,如何防止用户忘记调用delete、忘记解锁引起的问题?用对象管理资源,RAII,Bulabula。。。
- 说一说重载、覆盖、隐藏的区别
- 有一个日志流水账,有几亿行,每一行都是这种格式:uid=1223&money=1122&ts=xxx&aaa=xxx,uid表示用户id,money表示用户这一笔消费的金额,要求你统计出这个流水账中所有用户这个月的消费总额
成都腾讯MIG QQ浏览器团队 一面
1. 讲一下你负责的一个项目,主要分三部分来讲:功能,整体架构、各个模块,你具体负责的部分?(20分,下面的问题30分)
2. TCP的拥塞控制和快速重传;
3. TCP的 TIME_WAIT 状态;(有的网站不维护 TIME_WAIT 状态,为什么?)
4. HTTP状态码:200,301,302,404,500
5. 就HTTP协议层面来说,怎么实现断点续传?(需要设置哪个字段?)
6. HTTP协议的 Cache 字段。
7. poll 和 epoll 的区别?二者在使用、性能、实现原理上分别有什么区别?从实现原理上讲,epoll 为什么更高效?
8. 单例模式用过吗?单例模式最容易写错的是什么?(线程安全)
9. Linux下常用的进程间通信方式有哪些?
10. fork() 函数的特点;返回值?
11. C语言的 static 变量和普通变量的区别?
12. 在栈空间中声明变量时需要注意什么问题?(局部变量不要太大)
13. 这里面存在一个安全问题,缓冲区溢出漏洞的原理是什么?
14. 如何把你的跳转指令覆盖到那个特定的位置?
15. 这个问题 最根本、最根本 的原因是什么?(函数、程序员、操作系统。。。)为什么这么多年一直没有解决?(其实这是 Intel 的漏洞,栈是从高地址向低地址生长的,而局部变量的分配是从低地址向高地址分配的,它们是反的!)
成都腾讯MIG QQ浏览器团队 二面
1. 如何防止中间人攻击?(用HTTPS ,身份认证,单向认证或双向认证)
2. 你用到的这个开源项目Netfilter是做什么的?原理是什么?
3. 在保证数据一致性的前提下,多个线程如何访问一个共享变量?(加互斥锁)还有呢?(CAS)
4. 多线程同步都有哪些锁可以用?
5. 多线程访问一个共享变量,如何实现数据一致性,尽量高效,尽量不加锁?(百度去吧)
6. Linux的进程间通信方式有哪些?
7. 共享内存是怎么用的?
8. C里面的内存对齐,Linux里面默认的对齐是几字节?
9. 设计模式都熟悉吗?都用过哪些?(单例模式)单例模式的应用场景有哪些?有什么好处?
10. Linux的内存管理(讲了伙伴系统)
11. HTTP传文件,如何实现断点续传?(range头部字段,同时注意文件更新时间)
12. TCP的超时时间(指的应该是重传超时),Linux中默认是多少?
13. C++模板熟悉吗?模板的优缺点?
14. 讲一个你了解的行业内的一种最新的技术
15. 讲一讲你个人喜欢的技术方向,
16. 你的兴趣方向和职位不匹配,你有什么想法?(你愿不愿意做QQ浏览器客户端开发这个职位?)
17. 讲一讲安全领域最新的技术!
18. 现在后台都是用分布式做的,用分布式需要考虑哪些问题?
19. 什么是RPC?为什么要用RPC?
20. 分布式的好处是什么?
21. 讲一个你了解的当前业界的分布式框架
阿里云1面
1.time_wait
2.new跟malloc的区别
3.STL容器,智能指针
4.select,epoll
5.智能指针和智能指针的区别
6.选择排序和堆排序
7.select查询优化
远景能源1面
三次握手发什么报文。
为什么需要三次。
四次挥手状态变化。
timewait干啥的,为毛2msl。
vector 底层原理
vector 底层分配释放空间和构造析构对象的区别。
vector list 性能对比,应用场景和操作复杂度。
map 底层实现。
红黑树的删除操作描述。
一堆点和无向边,保证形成的是一棵树,找到合适的根的位置使树的深度最浅。算法复杂度多少。
腾讯IEG一面
1.项目中问用到什么技术
2.muduo库除了支持one loop per thread工作方式还支持其他工作方式吗?
3.解释一下死锁,给一个死锁的应用场景
4.线程间通信与同步方式
5.一个线程作为生产者往队列里面添加消息,一个线程作为消费者从队列里面取消息,除了CAS方法,还有其他方法lock-free的方法吗?
6.能对c++的对象使用memset清0吗?
7.一个struct A里面有一个string成员,这个string成员对象里面存了1W个字符,问sizeof(A)有多大?
8.了解过可靠的UDP吗?就说参考TCP的如何实现可靠传输,QUIC,UDT,ENET
8.你喜欢玩游戏吗,玩过什么游戏?
9.了解过游戏后台开发相关的技术吗?
10.mysql,为什么mysql的索引数据结构用的是b+树。
腾讯IEG二面
1.项目,问reactor,问文件断点续传怎么做的
2.无锁编程,我说cas,无锁队列,无锁队列怎么实现的
3.问生产者消费者模型,怎么做并发
4.map跟unordered_map的区别,哪个占用空间大
5.拥塞避免算法
6.c++程序内存布局
7.智能指针shared_ptr,怎么实现的,怎么解决循环引用
8.死锁的定义,怎么预防死锁
9.如果一直申请不到资源怎么做?可以设置超时,trylock,失败后放弃
10.hash的冲突解决方法
CVTE一面
C++如何实现面向对象?如何实现多态、封装、继承?方式有哪些?虚继承。
虚函数可以私有吗?应用场景
析构函数为什么要是虚函数?调用顺序
编译器帮一个空类自动生成哪些东西?
new在哪儿分配?
堆栈有什么区别?
用指针指对象
对象的内存布局
虚表放在什么地方?
多重继承的虚表指针
对象的大小受哪些因素影响?
容器用过哪些?
查找某个元素,vector有find方法吗?
某个容器有没有内置的find方法?
vector的实现原理?为什么是2倍增长?
map,红黑树的原理
B+树的原理,和红黑树的区别
两个队列实现一个栈
有哪些排序算法?时间复杂度?
归并排序怎么实现的?
动态规划的原理,举几个动态规划的例子
未来的规划。
CVTE 二面
1..单例模式
2.你们项目中c++多态的使用场景
3.单链表排序
3..求2017以内素数的平均值,优化
腾讯 TEG搜索 1面
1.最短路径算法
2.B+树
3.介绍linux文件系统,以及读写文件过程中,linux内核干了啥?
4.搜素引擎中基本数据结构 再一步步问如何优化 (倒排索引,优化:跳表?)
5.linux内核锁哪种锁效率最高,内核怎么实现的?
百度运维部 :
1. 态势感知系统中,具体都采集了哪些数据?采集来的数据都用来做什么?一一罗列出来!如何判断系统风险?除了流量突变还有什么?还有什么?还有什么......
2. 如何成为中间人?
3. 为什么会有syn flood?如何防御?还有什么防御方法?你说具体点,细节方面呢?
4. 修改TCP的包应该注意什么?怎样是失败的修改?(我不知道你到底想问什么!)
5. 上了HTTPS之后,如何做中间人攻击?(没办法),一点办法都没有?这个问题扯了好久...
6. 系统中出现大量 time_wait ,可能是什么原因?如何解决?主动关闭应该让谁来做?具体设置哪些参数?
7. 进程间通信方式都用哪些?
8. 多线程编程应该注意什么?举个具体的例子
9. 车内总线有什么特点?
10. 现在的车联网系统一般是怎么设计的?如果让你设计你会怎么做?画出来给我讲一讲!
11. 有没有研究过国外的车联网标准?
12. 车辆网的数据安全都涉及哪些?一一罗列出来
13. 有没有关注过车联网的安全事件?给我讲一讲
14. 有没有研究过一些具体的木马的源码?讲一讲原理
蚂蚁金服一面
1.自我介绍
2.介绍muduo库,reactor的应用场景,对比其他模式的什么有优劣。
3.epoll,LT和ET
4.怎么考虑设计高性能的服务器程序
5.linux怎么查看系统资源占用率之类的。
6.二分查找
7.提到RECVQ 跟sendQ,什么时候sendQ会很大,网络发生拥塞,说一下拥塞控制怎么做的
8.epoll什么时候触发socket可读事件
9.非阻塞connect怎么判断连接建立成功,我说可写,可写一定就成功?
10.一个cilent,连接3个server.机器资源充分的情况下,最多可以支持多少个连接?
11.网络内核参数调优?
12.如何设计一个高效的日志类
腾讯MIG 移动应用平台部 一面
1.项目
2.服务端code流程 bind->listen->accpet->close
3.线程池大小设定为多少合适,理由
4.进程和线程的区别
5.TCP和UDP的区别
6.TCP三次握手,四次挥手
7.gdb 怎么打印调用堆栈
8.判断一个数是不是2的幂次方。
9.怎么查指定cpu的负载,内存使用率
腾讯MIG 移动应用平台部 二面
1、reactor模式介绍
2、tcp状态转换图
3、滑动窗口
4、tcp慢启动
5、stl容器分哪几类,顺序容器和关联容器区别,map和set效率对比
6、介绍一个stl算法。
7、C++11有哪些新特性。
8、文件中有1000w手机号,统计重复最高的10个手机号码。
9、数据库了解么。
腾讯MIG 移动应用平台部 三面
1、proactor模式和reactor模式对比
2、定时器任务如何实现
3、服务端程序架构
4、如何管理reactor的事件回调
5、大端小端区别,怎么写程序检测大端小端
6、gdb基本命令
7、mysql如何优化查询
8、map和unordered_map区别
9、static作用
10、extern 作用
11、extern C作用
12、怎么求两个数组交集
13、位图怎么查找和计算
14、select 和 epoll 区别
15、(int)((int*)0 + 4)打出来是什么 16
百度系统部一面
1.reactor,muduo怎么做的,muduo库和libevent对比
2.python怎么创建进程,线程 threading.thread() os.fork()
3.python怎么创建一个httpserver SimpleHTTPServer.SimpleHTTPRequestHandler
4.python怎么加载动态链接库的CDLL("libc.so.6"),LoadLibrary
5.CLOSE_WAIT状态和TIME_WAIT状态
6.linux查网络情况的命令netstat ping traceroute
7.说说协程
8.进程和线程的区别
9.memcpy和strcpy的区别
10.netfilter几个结点,nat要改源IP应该在哪个结点,改目的IP在哪个结点
11.select和epoll区别
12.了解Nginx吗
13.DNS,说说dns做什么的,然后输入一个网址后,DNS怎么查的。反正关于DNS的详细说说
14.内核中SO_REUSEPORT的实现
15.主机字节序和网络字节序,怎么实现主机字节序和网络字节序的转换
百度系统部二面
1.信号量和条件变量的区别,条件变量怎么实现的?
2.为什么用vector而不用list
3.1个生产者,多个消费者怎么无锁
3.线程池大小应该设定为多少,你为什么设定为这么个值
4.vector,allocator ,内存池,内存碎片。为什么随机分配,连续分配不行吗?
5.文件传输断点续传
6.netfilter
7.项目相关。
百度 手机搜索
一面
1.TCP和UDP区别,
2.TCP三次握手四次挥手
3.HTTP状态码,
3.shell怎么查看监听指定端口的pid,怎么查看pid对应进程的路径
4.shell怎么查nginx的qps(理解错了,以为是shell怎么查任意服务的qps),怎么长期监控nginx的qps,
5.常用设计模式,Proxy***模式应用场景,单例模式的优点,
6.MySQL怎么查索引是否命中,索引原理,联合索引,联合合索引哪些情况下会命中
二面
1.问C++(stl的vector,allocater,面向对象的三个特征,多态实现原理),
2.网络编程select、poll、epoll比较,
3.线程进程区别
4.设计一个LRU缓存
5.TopK算法
6.还问了一个中间件的问题,用线程池和连接池实现就可以了
三面
就是聊人生,聊理想
问了三个问题,一个是一辆厢式货车,通过一个隧道,车顶比隧道高两厘米,怎么通过,第二个是工作中有没有让你特别愤怒的人和事,你是在怎么处理的;三个是你如果有offer怎么选择
百度 运维部 1面
1.海量数据的存储
2.查询求和,有比count()效率高的方法没?
3.hbase支持sql的语法不
4.mysql的负载,极限压力值
5.5个男生,3个女生,站成一排,求女生不相邻的概率
5.5个男生,3个女生,站成一个环,求女生不相邻的概率
网易 杭研 云计算网络
“我们是搞CDN的,主要问问你Linux和网络”
IP冲突如何检测?
PING不通,如何检查?
交换机没有ARP缓存表?
Python用过哪些第三方库?
说说协程
说说tcp传文件的过程,拥塞控制还有补充吗?还有吗?说说tcp,udp传文件的区别?还有呢?还有呢?
说说proc,它的功能是什么?它和其他目录有什么区别?还有呢?
创建子进程,Linux的fork为什么比Windows高效?
数组中,找到两个数,它们的差为k,给你5分钟,,,,,O(N)的算法
什么情况下会发生 段错误 或 栈溢出?
static
sizeof一个vector,vector的初始化
哪些公司在用http2.0?
HTTP2.0,多连接情况下,动态索引表
tap4fun
timewait
链表反转
数组取前K个最大的
reactor模式
C++内存管理
右值引用
tdd 测试驱动开发
protobuf源码看过吗(呵呵)
简述leveldb实现
leveldb和redis对比
leveldb文件组织形式
LOL所有玩家排行榜每20分钟更新一次,这个系统如何设计。
对游戏服务器的架构了解多少
tap4fun
1.自我介绍,为什么选择他们公司
2.说说reactor,提及proactor,问异步就一定不会阻塞吗?
3.写个冒泡排序
5.稳定排序?说说稳定排序的好处,快排为什么叫快排,跟堆排序对比?
6.select,epoll,为什么不用select,select的适用场景
7.说说归并排序
8.问了tcp3次握手和4次挥手,为什么3次握手,2次不行?为什么4次挥手
9.timewait状态,我自己提及的timewait的危害,第二个面试官就问我服务器主动断开连接好还是客户端好,怎么解决timewait的危害问题
10.问最近在学什么,我说数据库,redis,redis单线程还是多线程,mysql学了什么
11.innodb和myisam区别
12.联合索引,建索引abc,单独查b和c会用到abc索引吗?,查a和c呢,我说会用到联合索引的a,最左匹配
13.他们后台开发用的golang
14.协程,扯了下libco
15.有没有看到stl源码说了stl sort的实现
16.怎么估算一栋楼一天的用电量
tap4fun
各种排序的应用场景、优劣对比、时间复杂度、空间复杂度,再说说外排、归并思想,空间复杂度
各种排序的稳定性,为什么要考虑稳定性,应用场景有哪些?
tcp3次握手和4次挥手,为什么3次握手,2次不行?为什么4次挥手?
time_wait状态?持续多久?time_wait的危害?
各种IO模型、并发模型、什么是协程?如何调度协程?
阻塞、非阻塞、同步、异步的区别?
打印一个字符串的全排列、最长公共子序列