后端面试必备:TCP握手、数据流与UDP、const原理等解析
需积分: 41 27 浏览量
更新于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
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析