后端面试必备:TCP握手、数据流与UDP、const原理等解析
需积分: 41 173 浏览量
更新于2024-09-09
1
收藏 16KB DOCX 举报
"这篇内容是关于后端面试的题目总结,涵盖了网络协议、编程语言特性、数据结构与算法等多个方面。"
1) TCP三次握手是一个建立可靠连接的过程。在这个过程中,客户端首先发送SYN包,服务器响应SYN+ACK,然后客户端再次发送ACK来确认连接。accept函数是在三次握手完成后调用,用于接受已完成连接的请求。
2) TCP和UDP的主要区别在于,TCP提供的是面向连接、有序且可靠的字节流服务,而UDP则是无连接、无序且不可靠的数据报服务。TCP的数据无明确边界,可以想象成一个连续的流;而UDP每个数据包都是独立的,有明确的起点和终点。
3) 在C/C++中,const关键字用于声明常量,表示变量的值不应被修改。编译器会检查对const变量的写操作,试图修改时会报错。在某些情况下,编译器可能会对const变量进行优化,将其替换为常量。
4) volatile关键字用于指示变量的值可能在编译器无法察觉的情况下发生变化,例如硬件中断或多线程环境。它告诉编译器不要对这类变量做优化,每次访问都需要从内存中读取。
5) OFFSETOF宏通常用于获取结构体中某个成员相对于结构体起始位置的偏移量。示例中的定义利用了C语言的类型转换和指针运算来计算偏移量。
6) 求解100亿个数中最大的1万个数,可以使用大顶堆数据结构。初始时将前1万个数构建为堆,之后每新加入一个数,如果比堆顶元素大,则替换堆顶并下沉调整,确保堆始终保持最大1万个数。时间复杂度为O(n log k),n为总元素数量,k为需要找到的最大元素数量。
7) 洗牌算法通常采用Fisher-Yates(或称为Knuth)洗牌算法,随机性较高且效率良好。该算法通过遍历数组,每次选择一个随机位置与其当前位置的元素交换。在实现中,大约需要进行n/2次交换,其中n为数组长度。由于涉及随机操作,时间复杂度为O(n)。
这些面试问题涵盖了网络协议基础、并发控制、数据结构和算法等核心后端开发知识点,对于准备后端面试的人来说是很好的参考资料。
2017-06-11 上传
2017-12-06 上传
2022-12-17 上传
2022-04-06 上传
点击了解资源详情
点击了解资源详情
luckboyfirst
- 粉丝: 7
- 资源: 4
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析