求职季真真切切的来啦,继续整理一些高质量的面经,查查漏补不缺吧!fighting!
不熟悉的地方:
1.tcp粘包分析
进程间通信 有用过管道吗 是单向还是双向 可以双向吗?
LINUX进程间通信(IPC)学习手记(与实例结合,很好)
3.数据库四大隔离级别?
参考:数据库事务四种隔离级别
面经:腾讯求职经历
1 TCP三次握手、四次挥手
2 TCP滑动窗口机制
3 TCP拥塞控制机制
4 socket模型
TCP(传输控制协议):
1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效流控,全双工操作(数据在两个方向上能同时传递),多路复用服务,是面向连接,端到端的传输;
2)面向连接:正式通信前必须要与对方建立连接。事先为所发送的数据开辟出连接好的通道,然后再进行数据发送,像打电话。
3)TCP支持的应用协议:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。TCP用于传输数据量大,可靠性要求高的应用。
UDP(用户数据报协议,User Data Protocol)
1)面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接发送,像短信,QQ),不能提供可靠性、流控、差错恢复功能。UDP用于一次只传送少量数据,可靠性要求低、传输经济等应用。
2) UDP支持的应用协议:NFS(网络文件系统)、SNMP(简单网络管理系统)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
总结:
TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
---
补充:由于TCP有确认机制和三次握手机制等,导致它容易被人利用,进行DOS/DDOS/CC攻击;UDP没有TCP的握手/窗口/确认/重传/拥塞控制等机制,被攻击者利用的漏洞相对较少些,但也是不能完全避免,如:UDP Flood攻击
C/C++相关
1 虚析构、模板和宏
2 虚函数实现机制
3 vector与list的区别,map是如何实现的,查找效率是多少
4 extern 关键字有什么用
5 malloc和new的区别,能否malloc(1.2G)
linux以及操作系统相关
1 内存池实现
2 进程间通信机制
3 Linux ps命令,以及看内存当前使用状态的命令
4 进程与线程的区别,共享的数据
5 进程的内存空间
算法与数据结构 (手写代码实现)
1 大整数加、减、乘、除、求模运算实现
2 很多整数,找其中出现次数最多的那个数
3 单链表翻转(两个指针如何实现)、查找、删除、插入以及双向链表、有序链表合并
4 判断一个整数是否是2的整数次幂.(n&(n-1))
5 二分查找(注意边界条件)
6 常见排序算法的实现以及稳定性(快排跟归并考的很多)
7 字符串翻转(O(n))、匹配(KMP算法)
8 最长递增子序列(nlogn的算法)
9 链表判断是否有环,环的入口,两个链表是否相交(快慢指针)。
10 指定一个数组,求2个数的和等于指定的和(某一个数),如果是3,4,5,n个等于个的和(某一个数)呢?(可以看作背包问题)
其他
1 红黑树的性质以及插入和删除
2 解析XML文件
3 千万级的用户,提供一个服务,该服务有很多模块,现在有一个底层模块需要优化,问怎么实现,在不影响其他服务模块以及用户体验的情况下。(面IEG)
4 卡特兰数以及公式推导(应多很多)
5 未知大小的文件,翻转整个文件
6 如果内存中有个cache存储qq号和最近登录时间问怎么样做hit和淘汰
7 检测短信敏感词
8 大数据问题
9 C++、java和PHP有什么本质区别
MQ的优点
参考:Python中线程的MQ消息队列实现以及消息队列的优点解析