TCP可靠性、面向对象与线程池原理解析
需积分: 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**:基于事件驱动,高效且可扩展,支持水平触发和边缘触发两种模式,适用于大规模并发连接。
以上就是文档中的主要知识点,它们涵盖了网络、面向对象编程、并发控制和系统编程等多个领域,对于准备面试或提升技术能力都非常有帮助。
2022-06-20 上传
2024-04-06 上传
2023-11-14 上传
2022-06-21 上传
weixin_51148382
- 粉丝: 0
- 资源: 1
最新资源
- Candle-Apps:在全球多个LED上运行的OOH交互式应用程序的Candle Apps Dashboard。 使用Laravel和VueJS构建
- vue3 初学,用 vue3 + vite + vue-route 写的一个练手项目.zip
- dspic30f4011-uart2-INT-ok.rar_单片机开发_C/C++_
- MERN_twitter
- react-memory-card-game
- cuid24:没有'c'前缀且长度为24个字符的cuid
- imdb actor age reader-crx插件
- 秋色园QBlog 3.0
- 参考资料-26年成本核算模板表.zip
- 仅限pmh:自述文件:)
- p20420387-10205-MSWIN-x86-64
- RSA.zip_加密解密_HTML_
- ts node项目,cheerio node项目.zip
- matlab转换java代码-rgb2map:在Matlab中将RGB颜色转换为索引的颜色图颜色
- Cart:一个基于Vue3.0的移动端购物H5
- tsunhua.github.io:欢迎访问我的博客「一叶扁舟」