字节客户端C++面经

很恶心的八股,我一直试图把问题朝项目上引导,面试官根本不理。(可能我的项目不太垂直??

开局手撕,n阶12楼梯问题;

递归。

int f(int n){

if(n<=2) return n;

int x = f(n-1)+f(n-2);

return x;

}

1.虚拟内存

核心:外存扩充内存。

原理:动态调度内存空间,暂不执行的进程放在硬盘内。实际占用的碎片内存和硬盘空间映射为连续、完整的虚拟内存。

映射操作:虚拟页面通过页表映射物理页面。使用页面置换算法实现动态内存分配。

2.TCP和UDP,UDP通信原理,应用场景

TCP(传输控制协议):

特点:面向连接、可靠传输(通过确认应答、重传机制、流量控制、拥塞控制实现)、字节流、传输效率较低。

应用场景:需要高可靠性的场景,如网页浏览(HTTP/HTTPS)、文件传输(FTP)、邮件(SMTP)等。

UDP(用户数据报协议):

特点:无连接、不可靠(无确认机制、无重传)、面向报文(保留应用层报文边界)、传输效率高、首部开销小(8字节)。

通信原理:

无连接通信:发送端无需建立连接,直接将数据报(Datagram)发送至接收端IP和端口。

无状态传输:不维护连接状态,每个数据报独立处理,可能乱序或丢失。

差错检测:通过校验和(Checksum)检测数据错误,但无重传机制。

应用场景:

实时性要求高、可容忍部分丢包的场景:视频直播、语音通话(VoIP)、在线游戏。

简单请求-响应场景:DNS查询、SNMP网络管理。

广播/多播:如DHCP、路由协议(RIP)。

3.HTTP请求报文有哪些类型

HTTP/1.1定义的常用方法:

  • GET:获取资源(无请求体)。
  • POST:提交数据(有请求体),可能创建或修改资源。
  • PUT:替换指定资源的全部内容。
  • DELETE:删除指定资源。
  • HEAD:类似GET,但仅返回响应头(用于检查资源是否存在或获取元数据)。
  • OPTIONS:获取服务器支持的HTTP方法或跨域配置(CORS预检请求)。
  • PATCH:部分更新资源(非幂等,区别于PUT)。
  • CONNECT:建立隧道(如HTTPS代理)。
  • TRACE:回显请求(用于诊断,可能引发安全问题,通常禁用)。

4.get报文有什么特点

  • 参数传递:通过URL查询字符串(?key=value&key2=value2),长度受URL限制(浏览器通常限制2KB~8KB)。
  • 安全性:参数暴露在URL中,不适合敏感信息(如密码)。
  • 幂等性:多次相同GET请求应返回相同结果,无副作用(符合HTTP规范)。
  • 缓存:可被浏览器、CDN缓存(如GET请求的静态资源)。
  • 无请求体:数据仅通过URL传递,无HTTP消息体(Body)。

5.C++指针和引用有什么区别?使用场景

引用是一个变量的别名,不能为空

指针是存储地址的变量,可以为空;

引用可以直接改变主函数变量,指针需要使用指针引用

void Func2(int *x) {

(*x) = (*x) + 10;

}

int n = 0;

Func2(&n);

cout << "n = " << n << endl; // n = 10

6.结构体和类有什么区别?

默认访问权限public/private

继承方式public/private

凉经。

全部评论
都答上来了不至于凉吧 手撕也简单
3 回复 分享
发布于 07-18 20:17 江西
C++客户端是进去做Qt吗 佬
点赞 回复 分享
发布于 08-12 16:38 北京
很好的面经,使我的offer旋转试试我写的开源免费共建共享面经数据库:https://pinkprisma.com
点赞 回复 分享
发布于 08-01 20:15 上海
这都凉吗
点赞 回复 分享
发布于 07-19 20:29 重庆

相关推荐

08-15 17:27
已编辑
华南师范大学 C++
2025/8/14&nbsp;字节客户端一面:自我介绍项目10分钟在学习/项目中,最有挑战的事情是什么操作系统1.进程和线程的理解2.进程间的通信:管道,消息队列,信号/信号量计网:3.http和https的优缺点4.https建立连接的流程:TCP连接,最后发送密钥5.密钥是从哪里获取的6.数据传输时用的什么加密方式:对称加密7.为什么不用非对称加密:资源消耗,密钥发送安全性,面试官补充时效性?数据库:8.数据库索引有什么用,什么时候建立索引,建立在什么字段上,什么时候适用什么时候不适用?C++:9.C++和其他语言在设计上有什么区别?10.C++中没有interface字段,c++用什么来定义接口:应回答抽象类11.C++抽象类和普通类的区别12.虚函数和纯虚函数有什么区别在c++中,现有类A和类B,在A和B中声明了一个完全相同的虚函数,现有一个类c,c继承A和B,那么在c中能否调用A和B声明的哪个虚函数,如何确定调用的是A还是B的虚函数:(1)如果C没有覆盖该虚函数,直接调用会编译失败(歧义错误)(2)通过作用域解析运算符::显式指定调用哪个基类的版本(3)若C覆盖了该函数,调用c.func()会执行C的版本,但仍可通过作用域调用基类版本(4)通过基类指针调用时,行为由指针类型决定13.Std::move和普通的赋值语句有什么区别14.String&nbsp;A=“asdasd”&nbsp;string&nbsp;B=move(A)&nbsp;之后还可以访问A吗15.什么场景下会用到shared_ptr16.shared_ptr的循环引用怎么解决17.线程安全的问题会出现在什么场景下18.乐观锁和悲观锁:一个在循环检测,一个不循环检测19.除了c++还会用其他语言么20.平时会用AI去帮忙写代码么手撕,二叉树,判断是否存在一条路径,所有节点的和等于目标值,从根节点出发求求给个机会!&nbsp;8.15已挂
查看25道真题和解析
点赞 评论 收藏
分享
评论
6
52
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务