嵌入式大厂面经 11(持续更新中!)
这是一个嵌入式大厂面试题专栏,每天更新高频面试题。专栏将包含题目描述、详细解析、相关知识点扩展以及实际代码示例。内容涵盖操作系统、驱动开发、通信协议等核心领域,并结合实际项目经验进行分析。每道题目都会附带面试官可能的追问方向,帮助大家更好地准备面试!
1. TCP和UDP的区别
TCP(传输控制协议)和UDP(用户数据报协议)是传输层的两种主要协议,它们在以下几个方面有显著区别:
连接性
- TCP:面向连接的协议,通信前需要通过三次握手建立连接,通信结束后需要四次挥手释放连接。
- UDP:无连接协议,不需要建立连接就可以直接发送数据,也不需要维护连接状态。
可靠性
- TCP:提供可靠传输,通过序列号、确认应答、超时重传等机制确保数据完整无误地到达目的地。
- UDP:不保证可靠传输,数据包可能丢失、重复或乱序,应用层需要自行处理这些问题。
数据传输
- TCP:面向字节流,将应用层数据视为一连串无结构的字节流,TCP会将这些数据分段传输。
- UDP:面向报文,以报文为单位进行传输,保留应用层数据的边界。
传输效率
- TCP:由于需要建立连接、保证可靠性,传输效率相对较低,有较大的协议开销。
- UDP:没有连接管理、可靠性保证的开销,传输效率高,延迟低。
应用场景
- TCP:适用于对可靠性要求高的应用,如网页浏览、文件传输、电子邮件等。
- UDP:适用于实时性要求高、允许少量数据丢失的应用,如视频会议、在线游戏、流媒体等。
头部开销
- TCP:头部至少20字节,最多60字节(含选项)。
- UDP:头部固定8字节,开销小。
2. TCP的三次握手和四次挥手
三次握手(建立连接)
- 第一次握手:客户端发送SYN包(SYN=1, seq=x)给服务器,进入SYN_SENT状态。
- 第二次握手:服务器收到SYN包,回复SYN+ACK包(SYN=1, ACK=1, seq=y, ack=x+1),进入SYN_RCVD状态。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式面试八股文全集 文章被收录于专栏
这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。