百度C++一面面经总结

1、你知道网络编程服务端建立连接的流程吗?把用到的api说出来?

server:
1.socket()

int sockfd = socket(AF_INET, SOCK_STREAM, 0);

2.bind()

struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY; // 监听所有本地地址
serv_addr.sin_port = htons(PORT);       // 绑定的端口号
bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

3.listen()

listen(sockfd, backlog);

4.accept()

int newsockfd = accept(sockfd, (struct sockaddr *)&client_addr, &client_len);

5.read()/write()
6.close()

2、服务端需要设置端口号吗?客户端呢?端口号在哪个api中自动绑定的?端口号有什么作用?如果两个程序使用同一个端口号会怎么样?端口号的范围是多少?哪里限制了端口号的范围?

1.服务端需要显式设置端口号:bind
而客户端不需要显式设置端口号,自动分配临时的。

2.在bind()这个api中自动绑定的。

3.端口号主要为了区分主机上运行的不同服务。http用80,https用443,ssh用22。

4.用了同一段口,后一个程序将会“地址已在使用”错误。

5.有效端口号:0-65535
0-1023是知名端口号,非特权程序不能bind

6.端口号的范围是65535,就是16位整数,因为这是tcp/ip协议栈在os中定义的。最大值就是(2^16 - 1)

3、你知道linux用什么命令查找端口号吗?

netstat -tuln//老牌的网络工具
ss -tuln//显示所有正在监听的 TCP 和 UDP 端口。

4、UDP和TCP?TCP头部有哪些内容?TCP怎么保证可靠连接的?

1.连靠刘墉宿营

2.TCP头部有:
源端口号-目的端口号-序列号-确认号-数据偏移-保留位-控制位-窗口大小-校验和-紧急指针

3.保证可靠连接:

1.三次握手(Three-way Handshake):在建立连接时,TCP 使用三次握手确保双方确认彼此的存在,并同步初始序列号,避免早期的旧数据干扰。客户端发送 SYN 包(同步序列号)请求连接。服务器收到 SYN 后返回 SYN-ACK 包确认连接。客户端收到 SYN-ACK 后再发送 ACK 包,完成连接建立。2.确认应答机制(ACK):每个数据包在发送后,接收方会发送一个确认应答(ACK)包,告知发送方已成功接收。发送方只有在收到 ACK 后,才认为数据成功传送。
3.重传机制:如果发送方没有在预期时间内收到 ACK,TCP 会自动重传数据,确保丢失的数据段被重新发送。
4.序列号与重排序:每个数据包都有唯一的序列号,接收方根据序列号来重组数据,确保数据按正确顺序到达。
5.流量控制:通过窗口大小(Window Size)字段,TCP 控制数据传输速度,避免发送方发送过快导致接收方处理不过来。
6.拥塞控制:TCP 使用如慢启动、拥塞避免等算法来检测网络拥塞,并根据网络情况动态调整传输速度,确保不会因过载导致网络崩溃。
7.四次挥手(Four-way Teardown):TCP 连接结束时通过四次挥手过程来保证连接的可靠关闭,确保双方都有机会传输剩余的数据。

5、说一说网络的TCP/IP四层模型的作用?

物联网淑慧适用-七层
四层的:
应用层:HTTP FTP DNS SMTP
传输层:TCP UDP(加了tcp头)
网络层:IP (加了ip头)
网络接口层:链路级别 (加了帧头)

作用:
高内聚低耦合
模块化
标准化协议
互操作性

6、TCP是那一层的,IP呢?说一说DNS的工作流程是怎么样的?

传输层,网络层
DNS:将人类可读的域名解析成计算机可以处理的IP地址

在这里插入图片描述缓存-本地DNS-根-顶级-权威

7、你能介绍一下什么是重载吗?你知道重载和重写的区别吗?

允许在同一个作用域中定义多个同名的函数或方法,但这些函数具有不同的参数列表。编译器通过参数的个数、类型或顺序来区分这些函数调用。这种机制使得函数可以根据不同的参数类型或数量实现不同的功能。函数名相同,但参数类型、数量或顺序不同。

重写:则是继承中出现的子类重定义了方法,虚函数来实现,且需要在父类中声明为virtual。函数名、参数列表和返回类型必须与父类的虚函数一致。

8、你了解虚拟内存吗?进程间的通信方式有哪些你了解吗?

物理内存和磁盘存储的结合,为每一个进程都提供独立连续的地址空间。提高稳定性,利用率。(不够用就内存扩展,隔离为虚拟地址,还可以简化内存管理,不用关心物理内存了 交给os)

虚拟内存主要是通过os的页表将虚拟地址转换为物理地址,如果不在物理内存,就会页面置换,不常用的页面写入磁盘,所需页面从磁盘加载到内存。

管道 消息队列 共享内存 信号量 socket 信号 文件 等等。

9、用户态和内核态的区别是什么,用户态怎么转到内核态,是自动转换的吗?

不同的CPU执行模式

用户态:受限的权限,无法访问内核内存,限制系统资源的访问,出现错误也不会导致系统崩溃

内核态:最高权限,可以访问全部内存

不是自动转换 不是自动转换 不是自动转换
机制:
1.系统调用
2.中断
3.异常
但是内核态回到用户态通常自动的

10、C++与C相比有什么好处?

面向对象
标准模板库
类型安全
函数重载
运算符重载
命名空间

11、C++11有哪些新特性?

1.auto关键字:自动推导
2.范围for:简化遍历
3.智能指针:用于管理动态分配的内存,帮助防止内存泄漏。
4.lambda表达式:函数内部定义匿名函数 提高灵活性
5.nullptr:替代了传统NULL
6.强制类型转换 更安全
7.右值引用和移动语义 提高对临时对象的处理效率。
8.新的容器 unordered_map set
9.原生支持多线程

12、你了解智能指针吗?

std::shared_ptr:引用计数为0就释放
多个指针共享同一块内存:

std::shared_ptr<int> sharedInt = std::make_shared<int>(42);
std::shared_ptr<int> anotherSharedInt = sharedInt; // 共享同一块内存

std::unique_ptr:单一所有权
std::weak_ptr:协助shared_ptr避免循环引用
其中多个shared_ptr互相引用,导致内存泄漏。
std::auto_ptr是个辣鸡 不用了

13、类的缺省函数有哪些?(就是自己不写也会有默认的函数)

  1. 缺省构造函数

    作用:无参数构造函数,用于创建类的实例时不传递参数。
    特征:如果类中没有定义任何构造函数,编译器会自动提供一个缺省构造函数。

  2. 拷贝构造函数

    作用:用于通过另一个同类型对象来初始化一个对象,即复制对象。
    特征:如果类中没有定义拷贝构造函数,编译器会自动提供一个。默认的拷贝构造函数执行逐成员复制。

  3. 移动构造函数

    作用:用于将一个对象的资源“移动”到另一个对象,避免不必要的复制。
    特征:当类中没有定义移动构造函数时,编译器会提供一个默认实现,通常会将资源的所有权转移给新对象。

  4. 赋值运算符

    作用:用于将一个对象的值赋给另一个已存在的同类型对象。
    特征:如果类中没有定义赋值运算符,编译器会提供一个默认实现。默认赋值运算符执行逐成员复制。

  5. 移动赋值运算符

    作用:用于将一个对象的资源“移动”到另一个已存在的对象,避免不必要的复制。
    特征:当类中没有定义移动赋值运算符时,编译器会提供一个默认实现。

  6. 析构函数

    作用:在对象生命周期结束时自动调用,用于清理资源(如动态内存、文件句柄等)。
    特征:如果类中没有定义析构函数,编译器会提供一个默认的析构函数,该函数会自动释放所有成员的资源。

14、构造函数是先执行基类构造还是子类构造?析构函数呢?

先执行基类的构造:保证基类在子类的重写之前被正确初始化。
析构函数是先析构子类的,保证安全清理基类。

15、Windows创建线程的函数是什么,创建进程的呢?pthread_create有哪些参数,分别有哪些作用?父线程的pthread_create返回值是什么,pthread_detach()函数的作用?

就是CreateThread、CreateProcess

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

参数说明:

pthread_t \*thread:用于存储新线程的 ID 的指针。
const pthread_attr_t \*attr:指向线程属性对象的指针,可以为 NULL,表示使用默认属性。这个参数可以用于设置线程的栈大小、调度策略等。
void \*(\*start_routine)(void \*):线程的起始例程,线程运行时将调用这个函数。该函数必须返回 void * 类型的值,并接收一个 void * 类型的参数。
void \*arg:传递给线程起始例程的参数,可以是任意类型的指针,在线程内部可以通过强制转换来访问。

返回值:成功就是0,不成功就是错误代码。

pthread_detach(pthread_t thread) 用于将线程设置为“分离状态”,使得线程在结束时自动释放其资源,而不需要被其他线程调用 pthread_join 来回收。避免资源泄漏,适用于那些不需要等待线程结束结果的情况。

16、如果子线程退出,父线程没有捕捉子线程的信息会有什么影响?那如果父线程先退出呢,子线程会怎么样?

父线程用pthread_join() 获取子线程的返回值
如果没有捕捉到
那么子线程的资源不会被释放,资源泄漏。
子线程僵尸状态,等待join()

如果父线程退出了,如果子线程独立的话,那就不影响。如果依赖的话,那就导致不确定状态,尤其是子线程依赖父线程的某些资源。

talk is cheap show me the code。

给你一个3* 3的正方形,数字1-9,要求每行每列以及每个对角线的和都一样,打印出这个正方形?拓展:给你一个n * n的正方形,数字1-n*n,打印出这个正方形。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148598.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter发送邮件:详细步骤与功能配置指南?

jmeter发送邮件如何设置&#xff1f;怎么配置JMeter以发送邮件&#xff1f; Apache JMeter作为一款强大的性能测试工具&#xff0c;不仅可以用于测试Web应用的性能&#xff0c;还可以通过插件扩展其功能&#xff0c;实现诸如发送邮件等操作。AokSend将详细介绍如何使用JMeter发…

HarmonyOS鸿蒙开发实战( Beta5.0)Web组件预览PDF文件实现案例

鸿蒙HarmonyOS开发实战往期必看文章&#xff1a;&#xff08;持续更新......&#xff09; HarmonyOS NEXT应用开发性能实践总结&#xff08;持续更新......&#xff09; HarmonyOS NEXT应用开发案例实践总结合集&#xff08;持续更新......&#xff09; 一分钟了解”纯血版&…

线程1(重点知识)

线程 1.线程的概念: 线程是进程中的⼀个执行单元&#xff0c;负责当前进程中程序的执行&#xff0c;⼀个进程中至少有⼀个线程 ⼀个进程中是可以有多个线程 多个线程共享同一个进程的资源&#xff0c;每个线程参与操作系统的统一调度 可以简单理解&#xff1a; 进程 进程资源…

平衡二叉树(AVL树):原理、常见算法及其应用

目录 引言 AVL树的基本概念 常见算法 插入节点 查找节点 删除节点 AVL树的应用场景 1. 数据库索引 2. 符号表 3. 字典和词汇表 4. 动态集合 5. GPS导航系统 6. 计算机辅助设计&#xff08;CAD&#xff09; 结论 引言 平衡二叉树&#xff08;Balanced Binary Tre…

【JAVA开源】基于Vue和SpringBoot的甘肃非物质文化网站

本文项目编号 T 042 &#xff0c;文末自助获取源码 \color{red}{T042&#xff0c;文末自助获取源码} T042&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

英飞凌TC3xx -- Bootstrap Loader分析

目录 1.Bootstrap Loaders作用 2.CAN BSL详解 2.1 CAN BSL的时钟系统 2.2 CAN BSL流程 3.小结 英飞凌TC3xx的Platform Firmware章节里&#xff0c;提供了多种启动模式&#xff1a; Internal start from Flash&#xff1a;b111Alternate Boot Mode&#xff1a;b110Generic …

MySQL 数据库安装(详细教程)

文章目录 一、前言二、下载 MySQL2.1 安装包方式2.2 压缩包方式&#xff08;推荐&#xff09; 三、安装 MySQL3.1 解压 MySQL 文件3.2 配置环境变量3.3 初始化 data 目录3.4 安装 MySQL 服务3.5 开启 MySQL 服务3.6 修改 MySQL 密码 四、卸载 MySQL4.1 停止 MySQL 服务4.2 删除…

项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

MongoDB-索引的使用和索引类型

目录 简介创建索引的方式索引的种类单列索引复合索引&#xff08;多列索引&#xff09;多键索引地理空间索引文本搜索索引Hash索引 索引属性 简介 MongoDB的索引种类还是不少的&#xff0c;因为它是个文档数据库&#xff0c;存储的数据种类杂七杂八的&#xff0c;针对MongoDB的…

MySQL学习笔记(持续更新中)

1、Mysql概述 1.1 数据库相关概念 三个概念&#xff1a;数据库、数据库管理系统、SQL 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase&#xff08;DB&#xff09;数据库管理系统操纵和管理数据库的大型软件DataBase Mangement System&#xf…

输电线塔目标检测数据集yolo格式该数据集包括2644张输电线塔高清图像,该数据集已经过yolo格式标注,具有完整的txt标注文件和yaml配置文件。

输电线塔目标检测数据集yolo格式 该数据集包括2644张输电线塔高清图像&#xff0c;该数据集已经过yolo格式标注&#xff0c;具有完整的txt标注文件和yaml配置文件。 输电线塔目标检测数据集 数据集名称 输电线塔目标检测数据集&#xff08;Transmission Tower Object Detecti…

网页设计html心得

一&#xff0c;认识网页 说到网页&#xff0c;其实大家并不陌生 1.1网页究竟是什么&#xff1f; 网页主要由文字、图像和超链接等元素构成。当然&#xff0c;除了这些元素&#xff0c;网页中还可以包含音频、视频以及Flash等。 1.2网页是如何形成的呢&#xff1f; 1.特殊的…

Spring Boot 中的拦截器 Interceptors

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 Spring Boot中的拦截器&#xff08;Interceptor&#xff09;是一种用于拦截和处理HTTP请求的机制&#xff0c;它基于Spring MVC框架中的HandlerInterceptor接口实现。拦截器允许在请求到达控制器&#…

git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样

git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净&#xff0c;像刚clone下来一样 code review! 文章目录 git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净&#xff0c;像刚clone下来一样1.实现该功能的 Bash 脚本示例2.改进版&#xff1a;增加了gi…

微软宣布弃用面向企业的WSUS更新服务 仍然保留该服务但不再添加任何新功能

Windows Server Update Services 是微软面向企业推出的一项更新服务&#xff0c;该服务已经存在很多年&#xff0c;允许 IT 管理员控制内网设备的更新节奏。今年早些时候微软宣布将在 2025 年 4 月 18 日开始弃用 WSUS 驱动程序同步功能&#xff0c;因为大约只有 1/3 的 IT 管理…

大模型榜单汇总整理

大型语言模型&#xff08;LLM&#xff09;评估榜单提供了对不同模型性能的标准化比较&#xff0c;涵盖了从通用能力到特定领域应用的多个方面。这些榜单专注于评估模型在特定领域的应用能力&#xff0c;有助于开发者了解模型的优势和局限性&#xff0c;推动语言模型的发展和优化…

前端html+css+js 基础总结

​​​HTML 行级元素 标签分为行级元素与块级元素 行级元素占据区域由其显示内容决定&#xff0c;如span&#xff0c;img(图片)&#xff0c;<a></a>基本格式: <a href"链接" target"_blank"></a>用于跳转到其他网站&#xff0c…

镭射限高防外破预警装置-线路防外破可视化监控,安全尽在掌握中

镭射限高防外破预警装置-线路防外破可视化监控&#xff0c;安全尽在掌握中 在城市化浪潮的汹涌推进中&#xff0c;电力如同现代社会的生命之脉&#xff0c;其安全稳定运行直接关系到每一个人的生活质量和社会的整体发展。然而&#xff0c;随着建设的加速&#xff0c;电力设施通…

论文写作中的常见错误及规避策略

写论文&#xff0c;这个让无数学生闻风丧胆的挑战&#xff0c;可真是让人头大。 不管是初出茅庐的本科毕业论文&#xff0c;还是折腾得人头发都少了的硕士、博士论文&#xff0c;写作过程中的各种翻车场景简直就是论文写作的日常。 别慌&#xff0c;今天我就来当大家的论文救…

基于Python+SQLServer实现(界面)书店销售管理管理子系统

书店销售管理管理子系统 一、设 计 总 说 明 现在社会随着计算机技术迅速发展与技术的逐渐成熟&#xff0c;信息技术已经使人们的生活发生深刻的变化。生活中的各种服务系统也使人们在生活中的联系日常销售活动方式发生了很大的变化&#xff0c;让效率较低的手工操作成为过去…