TCP可靠性、面向对象与线程池原理解析

需积分: 0 0 下载量 27 浏览量 更新于2024-08-03 收藏 430KB PDF 举报
"面试题查漏补缺(update).pdf" 这篇文档包含了多个常见的IT面试知识点,主要涉及网络协议、编程范式、并发编程以及系统调用的区别。以下是这些知识点的详细解释: 1. TCP的可靠性体现在以下几个方面: - **连接管理**:TCP使用三次握手建立连接,确保双方准备好通信,并通过四次挥手释放连接,确保数据传输完成后安全断开。 - **确认机制**:TCP使用序列号和确认应答,确保每个发送的数据包都被正确接收。如果在规定时间内未收到确认,TCP会自动重发数据。 - **流量控制**:通过滑动窗口机制,TCP能动态调整发送方的发送速率,使其与接收方的处理能力相匹配,防止接收方被大量数据淹没。 2. **面向对象编程**是一种编程范式,强调将数据和操作数据的方法封装在一起,形成对象。其核心思想包括: - **封装**:隐藏对象内部的复杂性,只暴露必要的接口供外部使用。 - **继承**:允许创建新的类(子类)来继承已有类(父类)的属性和方法,实现代码复用。 - **多态**:同一消息可以被不同类型的对象响应,提供了灵活性和扩展性。 3. **线程池**的使用主要是为了提高效率和资源管理: - **资源优化**:线程池预先创建一定数量的线程,避免频繁创建和销毁线程的开销。 - **线程复用**:任务执行完毕后,线程不立即销毁,而是回到线程池等待下次使用,减少系统资源的消耗。 - **线程数量控制**:通过设置线程池大小,限制并发执行的任务数量,防止系统资源耗尽。 4. **避免死锁**的方法: - **避免循环等待**:设计时尽量减少对多资源的锁定,避免出现线程间的循环等待。 - **资源有序分配**:设定资源获取的全局顺序,所有线程都按相同顺序获取资源,从而消除死锁可能性。 - **超时和回滚**:设置加锁操作的超时时间,超时未获得锁则回滚操作。 - **死锁检测与恢复**:系统可以定期检测是否存在死锁状态,并采取相应措施解除。 5. **I/O多路复用技术的区别**: - **select**:支持的文件描述符数量有限,一般为1024个,适合小规模并发;轮询检查所有fd,效率较低。 - **poll**:克服了select的文件描述符限制,但同样存在轮询问题。 - **epoll**:基于事件驱动,高效且可扩展,支持水平触发和边缘触发两种模式,适用于大规模并发连接。 以上就是文档中的主要知识点,它们涵盖了网络、面向对象编程、并发控制和系统编程等多个领域,对于准备面试或提升技术能力都非常有帮助。