每天一套面试题Day11-腾讯高频(2)
11.TCP 与 UDP 的 10 大核心区别是什么?
TCP面向字节流,UDP面向用户数据报。 TCP首部20-60字节,UDP8字节 TCP三次握手建立连接,四次挥手释放连接.TCP有连接,UDP无连接.所以TCP只支持单播,但是UDP支持组播. TCP可靠,滑动窗口ACK,重发,UDP不可靠。 TCP是有序的,UDP不保证顺序。 所以TCP可以用于准确性要求高的,如FTP,HTTP,UDP支持实时性好的。比如视频流。 TCP有拥塞控制,UDP无。
12.说说 TCP 的三次握手
两方都要确保对方可收可发,并且同步序列号seq。一,客户端发,SYN=1,发起建立连接请求,seq=a,二,服务器发,ACK=1,ack=a+1,seq=b。三,客户端发,ACK=1,ack=b+1,seq =a+1。服务器收到,服务器就知道了,对方收到了我之前发的包,并且对方的序列号是a+1,对方期望我发的字节序列号从b+1开始。
13.TCP 协议如何保证可靠传输?
滑动窗口(序号+累积 ACK+超时重传) 保证 数据不漏、不乱。 校验和保证 数据不损坏。 滑动窗口与流量控制 保证 不超过接收方的能力。 拥塞控制 保证 网络不被压垮。 我的博客
14.如何在 UDP 之上实现可靠传输?
我猜,在用户数据报上面加上一些其他的信息?
15.什么是进程和线程?进程和线程的区别
进程是操作系统分配资源的基本单位,线程是CPU调度的基本单位。 线程共享进程的内存。 通信方式不同,进程之间用IPC通信,有,管道,共享内存,消息队列。 切换开销不同,切换线程的代价比切换进程要小很多。
16.进程间通信方式有哪些?
管道(父子进程之间),共享内存,消息队列
命名管道(FIFO)(可以在无亲缘关系的进程间)套接字(网络通信)
17.为什么 MySQL 采用 B+ 树作为索引?
MySQL把数据存到了磁盘中,IO操作很费时,所以尽可能的减少IO操作。 B+树索引节点没有值,只有叶子节点有,因为页的大小有限,这让中间的索引节点能存放更多,让B+树更矮胖,减少了IO次数。 B+树叶子节点双向链表,有利于排序,范围查询。
18.如何监控并优化慢 SQL?
- 开启SQL慢查询日志
- 分析查询计划
- 优化索引
- 调整查询结构:首选:把 SELECT * 改成明确的列。检查:WHERE 子句中的字段是否被函数包裹,导致索引失效。尝试:用 JOIN 改写复杂的子查询。考虑:将过于复杂的查询拆分成多个简单查询。
19.事务隔离级别有哪些?
读未提交,读已提交,可重复读,串行化
#面试真题#记录刷过的面试真题