C++后台开发面试题集绵

2023-05-16

文章目录

    • 一、C++语言
        • 1、引用和指针的区别?
        • 3、C++中指针参数传递与引用参数传递?
        • 4、形参与实参的区别?
        • 5、static的用法和作用?
        • 6、静态变量什么时候初始化?
        • 9、指针和const的用法?
        • 11、extern用法?
        • 13、深拷贝与浅拷贝?
        • 14、C++模板是什么,底层怎么实现?
        • 15、C语言struct和C++的struct区别?
        • 34、介绍一下C++里面的多态?
        • 35、用C语言实现C++的继承?
        • 59、说说你对C和C++的看法,C和C++的区别?
        • 60、C/C++的内存分配,详细说一下栈、堆、静态存储区?
        • 61、堆与栈的区别?
        • 62、野指针是什么,如何检测内存泄漏?
        • 65、new和malloc的区别?
        • 85、hello world程序开始到打印到屏幕的全过程?
        • 86、模板函数与模板类的区别是什么?
        • 87、为什么模板类一般放在一个.h文件中?
        • 139、哪些函数不能是虚函数?
        • 154、虚函数与纯虚函数的区别在于?
        • 1、为什么会有虚函数?
    • 二、操作系统
        • 1、操作系统特点
        • 2、什么是进程
        • 2、什么是线程
        • 3、进程与线程的区别(均可并发执行)
        • 4、进程状态转换图
    • 三、网络
      • 1、物理层
      • 2、数据链路层
      • 3、网络层
        • 1、路由器的功能
        • 2、IP报文如何从下向上交付
        • 3、IP(MAC)地址有什么用?为什么需要IP(MAC)地址?
        • 4、ARP(地址解析)协议的作用?
        • 5、NAT的原理,外网与内网或内网之间的通信中如何区分不同IP的数据包?
        • 6、RIP路由协议?
        • 7、为什么使用IP地址通信?
        • 8、子网掩码有什么用?
        • 9、子网划分的方法?
      • 4、传输层
        • 1、TCP协议有几大计时器?
        • 2、详细说一下TCP协议,三次握手传输的内容,13种状态?
        • 3、TCP为啥挥手要比握手多一次?
        • 4、为什么一定要进行三次握手?
        • 5、TCP与UDP的区别、应用场景都有哪些?
        • 6、为什么UDP有时比TCP更有优势?
        • 7、UDP一个包的大小最大能多大?
        • 8、TCP粘包?
        • 9、传输层功能?
        • 10、TCP可靠性保证?
        • 11、拥塞控制?
        • 12、TCP流量控制?
        • 13、流量控制与拥塞控制的区别?
        • 14、time_wait与close_wait,time_wait状态持续多长时间、为什么会有time_wait状态?
        • 15、time_wait为什么是2MSL的时间长度?
        • 16、介绍一下ping的过程,分别用到了那些协议?
        • 17、socket编程?
      • 5、应用层
        • 3、讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程?
        • 4、http与https工作方式?
        • 5、http协议、http和https的区别?
        • 6、http状态码?
        • 7、http1.0与http1.1的区别?
    • 数据结构与算法
        • 1、常用查找算法?具体实现?时空复杂度?
        • 2、快速排序非递归如何实现?快排的优势?
        • 3、图的常用算法?

一、C++语言

1、引用和指针的区别?

1、引用只是变量的别名,不需要分配内存空间;指针是一个实体,需要分配内存空间。
2、引用在定义的时候必须进行初始化,且不能改变;指针在定义时不一定要初始化,且指向的空间可变。
3、引用访问一个变量是直接访问,而指针访问一个变量是间接访问
4、作为参数时:传指针的实质是传值,传递的是指针的地址;传引用的实质是传地址,传递的是变量的地址。

3、C++中指针参数传递与引用参数传递?

1、指针传递本质上是值传递,它传递的是一个地址值。值传递过程中:形参作为局部变量处理,会在栈中开辟内存空间以存放传递进来的实参,从而形成了实参的一个副本。值传递的的特点:形参指针变了,实参指针不会变。
2、引用传递过程中:形参也作为局部变量在栈中开辟了内存空间,但是该空间存放的是实参的地址;则被调函数对形参的任何操作都会被处理成间接寻址。其特点:形参引用变了,实参也会改变。
3、引用传递与指针传递是不同的。虽然他们都在被调函数栈空间上开辟一个空间作为局部变量,但是引用传递会通过间接寻址的方式直接改变相关变量;而指针传递虽然会改变实参指针所指向的变量的值,但他无法改变实参指针的值。 如果想要改变实参指针的值,那就要使用指向指针的指针或者指针引用
4、从编译的角度来讲,程序在编译时分别将指针和引用添加到符号表(记录变量名以及变量所对应的地址)上,符号表生成之后就不可更改:指针变量在符号表上对应的地址值为指针变量的地址值;而引用变量在符号表上对应的地址值为引用对象的地址值(与实参名字不同,地址相同)。 因此指针可以改变其指向的对象(指针变量的值可以改动),而引用对象则不可更改。

4、形参与实参的区别?

1、形参只有在被调用时才分配内存空间,调用结束时,即释放内存单元。因此,形参只在函数内部有效
2、实参应首先获得确定值。其次实参和形参在数量上,类型上,顺序上应严格一致。
3、形参的值改变,不会影响实参的值。
4、值传递:栈拷贝数据的过程,若值传递的对象是类对象或者是大的结构体对象,耗时较长,耗空较大。(传值);指针传递:栈拷贝数据的过程,但是拷贝的数据是一个固定为4个字节的地址。(传值,传递的是地址值);引用传递:栈拷贝数据的过程,但其是针对地址的,相当于为该数据所在地址起了一个别名。(传地址);效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递

5、static的用法和作用?

1、
2、
3、

6、静态变量什么时候初始化?

9、指针和const的用法?

11、extern用法?

13、深拷贝与浅拷贝?

14、C++模板是什么,底层怎么实现?

15、C语言struct和C++的struct区别?

34、介绍一下C++里面的多态?

35、用C语言实现C++的继承?

59、说说你对C和C++的看法,C和C++的区别?

60、C/C++的内存分配,详细说一下栈、堆、静态存储区?

61、堆与栈的区别?

62、野指针是什么,如何检测内存泄漏?

65、new和malloc的区别?

85、hello world程序开始到打印到屏幕的全过程?

86、模板函数与模板类的区别是什么?

87、为什么模板类一般放在一个.h文件中?

139、哪些函数不能是虚函数?

154、虚函数与纯虚函数的区别在于?

1、为什么会有虚函数?

二、操作系统

1、操作系统特点

并发性、共享性、虚拟性、不确定性

2、什么是进程

程序实例、资源分配、进程通信、基本状态、调度算法
1、一个应用程序一旦运行,便产生一个进程。进程可以看作是程序执行的一个实例。
2、进程是系统进行资源分配的最小单位,每个进程拥有独立的地址空间。
3、一个进程无法访问另一个进程的变量与数据结构,如果希望,需要进行进程间的通信。比如:管道、消息队列。
4、进程是程序的一次执行,该程序可以与其他程序并发执行。
5、进程有运行、阻塞、就绪三个基本状态。
6、进程调度算法:先来先服务、短作业优先、非抢占式优先、高响应比优先、时间片轮转法、抢占式优先。

2、什么是线程

1、线程是进程的一个实体,一条执行路径,比进程更小的独立运行的基本单位。
2、被成为轻量级进程,一个程序至少有一个进程,一个进程至少有一个线程。

3、进程与线程的区别(均可并发执行)

资源分配、健壮性、切换、独立性
1、同一进程的线程共享本进程的资源(地址空间),而进程之间的资源(地址空间)是独立的。
2、多进程比多线程健壮:一个进程崩溃,在保护模式下,不会对其他进程产生影响;但一个线程崩溃,整个进程崩溃。
3、涉及到频繁切换,使用线程要好于进程:进程切换,消耗资源大。
4、每个独立的进程都有一个程序入口和程序出口。但是线程不能独立执行,必须依赖于进程。

4、进程状态转换图

三、网络

1、物理层

2、数据链路层

3、网络层

1、路由器的功能

路由选择与分组转发

2、IP报文如何从下向上交付

1、物理层 》》 数据链路层 》》 网络层 》》 传输层 》》应用层(细分为:会话层、表示层、应用层)
2、二进制数据3 》》解出下一跳路由物理地址:数据3(MAC地址+数据2) 》》 解出ip地址:数据2(IP地址+数据1) 》》解出文件传输方式:数据1(TCP头+数据0) 》》应用层
3、高低电平信号 》》 PPP协议 》》IP协议 》》TCP/UDP协议 》》HTTP/FTP/DNS协议
其中:数据0(纯数据)<数据1<数据2 (仅数据量比较)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、IP(MAC)地址有什么用?为什么需要IP(MAC)地址?

1、IP地址是在网络上分配给每台网络设备的32位数字标识。在Internet上是唯一的。
2、IP地址是网络层的地址,如果IP地址不可达,接着转发。计算机的IP地址可以变动,在WAN里面,IP地址不是唯一的。
1、MAC地址是网络设备的物理地址,是48位的地址。一个网卡的MAC地址是唯一的。
2、MAC地址是数据链路层的地址,如果MAC地址不可达,直接丢掉。在LAN里面,MAC地址是唯一的。

4、ARP(地址解析)协议的作用?

1、为了获取mac地址。通过广播的形式
2、工作在数据链路层与网络层之间。
3、工作原理:当主机要发送一个IP包时,首先会检查它的ARP高速缓存表(IP-MAC地址对应表)。若不存在,那么主机就会向网络广播一个ARP请求包(包内含有带查询的IP地址);若某一主机发现自己符合条件,就会回应一个ARP应答包;源主机拿到ARP应答包后,会更新自己的ARP高速缓存表。源主机根据ARP高速缓存表准备好数据链路层的数据帧发送工作。

5、NAT的原理,外网与内网或内网之间的通信中如何区分不同IP的数据包?

1、公有IP地址:面向互联网,即外网。私有IP地址:面向局域网,即内网。
2、NAT全称网络地址转换(network address translation)。允许一整个机构局域网以一个公用IP地址出现在互联网上;顾名思义:它是把内部私有IP地址翻译成合法的互联网IP地址。有效解决公网IP地址不足的问题。
3、可以只申请一个I合法P地址,就把整个局域网中的计算机接入互联网。

6、RIP路由协议?

1、工作在网络层,属于动态路由。
2、每个路由表项目包括三个内容:目的网络、距离、下一跳路由器。
在这里插入图片描述

7、为什么使用IP地址通信?

全世界存在着各式各样的网络,它们使用不同的硬件地址。要使得这些异构网络能够相互通信,就必须进行非常复杂的硬件地址转换工作,这几乎不可能。

8、子网掩码有什么用?

1、用来指明一个IP地址所表示的主机处于哪个子网中。他必须结合IP地址一起使用。
2、将某个IP地址划分成网络地址和主机地址两部分。

9、子网划分的方法?

1、传统子网划分:IP地址 = 网络号+主机号
2、子网掩码
3、CIDR,减少了传统分发的IP浪费。

4、传输层

1、TCP协议有几大计时器?

1、重传计时器:
2、持续计时器:
3、保活计时器:
4、时间等待计时器:

2、详细说一下TCP协议,三次握手传输的内容,13种状态?

1、重传计时器

在这里插入图片描述

3、TCP为啥挥手要比握手多一次?

4、为什么一定要进行三次握手?

5、TCP与UDP的区别、应用场景都有哪些?

6、为什么UDP有时比TCP更有优势?

为什么一定要进行三次握手?

7、UDP一个包的大小最大能多大?

8、TCP粘包?

9、传输层功能?

10、TCP可靠性保证?

11、拥塞控制?

12、TCP流量控制?

13、流量控制与拥塞控制的区别?

14、time_wait与close_wait,time_wait状态持续多长时间、为什么会有time_wait状态?

15、time_wait为什么是2MSL的时间长度?

16、介绍一下ping的过程,分别用到了那些协议?

17、socket编程?

5、应用层

3、讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、http与https工作方式?

5、http协议、http和https的区别?

6、http状态码?

7、http1.0与http1.1的区别?

数据结构与算法

1、常用查找算法?具体实现?时空复杂度?

稳定算法:插入排序、选择排序、冒泡排序、归并排序。
不稳定算法:希尔排序、堆排序、快速排序。
在这里插入图片描述

2、快速排序非递归如何实现?快排的优势?

3、图的常用算法?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++后台开发面试题集绵 的相关文章

  • UCOSII-信号量与信号量集

    文章目录 一 前言1 任务间的同步2 事件 二 信号量1 信号与信号量介绍2 信号量常用函数3 信号量使用流程 xff08 互斥信号量和信号量两种 xff09 4 互斥型信号量使用5 使用一般信号量做任务同步 三 信号量集 事件标志组 1
  • UCOSII-消息邮箱与消息队列

    文章目录 一 事件控制块及事件处理函数1 等待任务列表2 事件控制块的结构3 操作事件控制块的函数4 空事件控制块列表 二 消息邮箱1 消息邮箱介绍2 消息邮箱操作步骤 三 消息队列1 消息指针数组2 队列控制块3 消息队列的操作流程 四
  • float型数据与4字节之间的转换

    文章目录 一 前言二 地址指针转换的方法三 共用体的方法 xff08 注意要定义全局变量数组s xff0c 即地址要分配为固定地址 xff09 一 前言 在与上位机之间进行数据收发 xff0c 要将float型数据转换成字节进行传输 xff
  • USB虚拟串口实现多字节数据接收,基于stm32h743

    文章目录 一 USB虚拟串口原理简介二 接收函数实现源码三 小结 一 USB虚拟串口原理简介 USB 虚拟串口 xff0c 简称 VCP xff0c 是 Virtual COM Port 的简写 xff0c 它是利用 USB 的 CDC 类
  • EC20/EC25 4G模块AT指令开发总结

    文章目录 一 EC25 20 4G模块简介二 AT指令总结1 通用AT指令2 建立TCP UDP连接相关AT指令 三 TCP传输数据流程四 UDP传输数据流程五 总结 一 EC25 20 4G模块简介 EC25 是一系列带分集接收功能的 L
  • C语言实现socket网络编程及多线程编程

    文章目录 一 概述二 TCP socket网络编程1 server端程序实现 xff08 tcp server cpp xff09 2 client端程序实现 xff08 tcp client cpp xff09 3 编译与执行 三 UDP
  • 基于openssl实现https双向身份认证及安全通信

    文章目录 一 概述二 代码设计2 1 ssl server c程序设计2 2 ssl client c程序设计 三 测试 一 概述 https基于SSL TLS提供安全的通信信道 xff0c 基于证书认证技术实现服务器和客户端之间的身份认证
  • ubuntu的不同版本

    ubuntu是现在最流行的Linux安装包 xff0c 本文介绍了ubuntu的各种版本 一 Ubuntu 每个ubuntu的版本都包含一个版本号 xff08 version number xff09 和一个代码名 xff08 code n
  • Linux下通过service服务管理用户进程

    文章目录 一 service配置介绍1 1 service配置文件1 2 配置文件的区块1 3 修改配置文件后重启1 4 服务管理 二 设计一个可执行程序三 设计一个service管理 home ubuntu test servicetes
  • c++中多态调用场景下基类析构函数的virtual声明

    文章目录 一 基类析构函数未加virtual声明的情况1 1 基础示例演示1 2 进阶示例演示 二 基类析构函数添加virtual声明的情况三 总结 一 基类析构函数未加virtual声明的情况 在多态场景中 xff0c 可通过基类的指针指
  • protobuf协议原理及实现,基于c++

    文章目录 一 protobuf协议简介1 1 protobuf协议简介1 2 数据交互xml json protobuf格式比较1 3 关于 ProtoBuf 的一些思考 二 protobuf库安装三 protobuf库使用第一步 xff0
  • OLED显示屏驱动:8080并口,IIC,SPI三种驱动方式

    本文介绍了对OLED的几种驱动方式 xff0c 8080并口 xff0c IIC xff0c SPI三种驱动方式 xff0c 采用的单片机是STM32F407 文章目录 一 OLED驱动原理介绍二 8080并口驱动方式三 IIC驱动方式四
  • ROS2学习笔记(1)ROS2+docker的配置方法

    ROS2学习笔记 xff08 1 xff09 ros2 43 docker的配置方法 1 前言2 安装docker2 1 docker的发展史2 2 什么是docker2 3 docker的思想2 3 1 集装箱2 3 2 标准化1 运输方
  • ubuntu之更改ubuntu和windows双系统启动顺序

    ubuntu之更改ubuntu和windows双系统启动顺序 背景方法 背景 安装好ubuntu和windows双系统后 xff0c 一般grub引导默认选择第一个为启动项 xff0c 在公司打工还好 xff0c 毕竟要进ubuntu挣钱
  • 【lightDM】组件理解

    前言 LightDM xff08 Light Display Manager xff09 是轻量级 Linux 桌面显示管理器 其目的是成为 X org 的 X Server 的标准显示管理器 LightDM 负责启动 X servers
  • 【机器人学中的状态估计】第一讲

    1 什么是状态估计 xff1f 通过获得传感器的观测值 xff0c 建立观测值到状态量的模型 xff0c 估计出状态量 2 概率密度函数 后验概率 p x y
  • VScode环境下使用git与github远程操作要点记录

    部分内容来源于网络 xff0c 外加了自己的实践 xff0c 记录了一下 文章目录 一 windows上使用git1 官网下载git https git scm com download win 2 创建本地仓库 二 git远程连接gith
  • 【千律】C++基础:TXT文件的创建、写入和读取

    include lt fstream gt include lt iostream gt using namespace std int main 初始化 ifstream iread txt 初始化输入流 ofstream write t
  • Matlab计算福利彩票的中奖概率

    Quez1 计算福彩双色球一等奖的中奖概率 福彩双色球的玩法如下 从编号1 33的红球里任选6个 另外在编号1 16的蓝球里再任选1个 如果选择的红球和蓝球和当期的开奖结果完全一致 顺序可不同 则中一等奖 Analysis 这是一个组合问题
  • 【千律】OpenCV基础:基于梯度的模板匹配

    环境 xff1a Python3 8 和 OpenCV 内容 xff1a 基于梯度的模板匹配 主要关注边缘信息 xff0c 能够较好的识别不同颜色的目标 实现步骤 xff1a 1 给定原图像I和模板T 2 指定差异度 xff08 相似度 x

随机推荐

  • golang使用SM2(SM2withSM3)签名、验签数据

    golang使用SM2签名 验签数据 场景标准密钥签名算法 Start依赖公钥转base64私钥转hex私钥生成公钥生成密钥对Hex私钥转私钥对象base64公钥转公钥对象签名验签 测试 场景 对接招行支付 标准 密钥 私钥 xff1a H
  • 树莓派与pixhawk串口通信

    一 Pixhawk部分 1 读取数据测试 步骤 xff1a 在Firmware src modules中添加一个新的文件夹 xff0c 命名为rw uart在rw uart文件夹中创建CMakeLists txt文件 xff0c 并输入以下
  • 关于pixhawk波特率修改的两种方法

    一 QGC地面站修改 将pixhawk与地面站相连接进入参数设置界面 xff0c 搜索SYS COMPANION参数设置需要的波特率保存设置 二 终端 xff08 Terminal xff09 修改 打开终端 xff0c 进入源码所在Fir
  • gazebo仿真环境搭建

    主要内容 xff1a 安装gazebo配置gazebo运行gazebomavros控制飞机 1安装gazebo 如果已经安装MAVROS可以直接在终端上输入gazebo查看是否已经拥有gazebo xff0c 因为MAVROS中含有gaze
  • Intel Realsense D435i标定详细步骤

    主要介绍Inter D435i深度相机的IMU 相机和IMU与相机外参数标定的过程 其中 IMU使用的是realsense官方文档的教程 相机和外参数使用的是Kalibr的标定方法 本文所介绍过程的所有代码和生成文件资源放在Kalibr工具
  • 在Ubuntu、NVIDIA_TX2下查看CPU/GPU/内存使用率

    一 Ubuntu 1 cpu 内存 1 使用top命令 top 2 更直观的工具htop sudo apt get install htop htop 2 gpu 用nivida smi命令 xff0c nvidia smi 这个命令只能显
  • 基于RT-Thread OS的 迷你时钟项目

    基于RT Thread OS的 迷你时钟项目 近期在自学RT Thread OS 这是一个国内团队开发的实时物联网操作系统 xff0c 具有组件完整丰富 高度可伸缩 简易开发等优点 RTOS官网 参考学习文档 作品演示 基于RT Threa
  • C++_namespace命名空间

    catalog 内嵌enum class namespace命名冲突多个同名namespace的原理开头 变量 函数前命名空间前 规范写法作用域Base定义顺序 内嵌 c 43 43 17后 支持 namespace A B C 写法 en
  • c++_exception异常,try和catch,noexcept,throw

    catalog noexcept 函数base自定义异常类noexcept 和 throw noexcept 函数 bool f 61 noexcept func 判断 func 函数 是否有标记noexcept base throw 是
  • SQL4种匹配规则

    SQL提供了四种匹配模式 xff1a 1 表示任意0个或多个 字符 如下语句 xff1a Select FROM user Where name LIKE 39 三 39 将会把name为 张三 xff0c 三脚猫 xff0c 唐三藏 等等
  • SDN的HUB实验

    SDN的hub实验 首先需要搭建ryu控制器环境和mininet环境 使用winscp将hub的py代码上传到服务器啊贝云 使用命令搭建拓扑环境 mn topo 61 single xff0c 3 controller 61 remote
  • CSDN上代码块背景颜色的设置

    CSDN上代码块背景颜色的设置 今天发博客的时候发现代码块背景的颜色是白色的 xff0c 我想要改成黑色的 xff0c 于是就研究了一下怎么修改代码块背景的颜色 xff0c 修改代码块的背景颜色只要4步 1 点击个人头像打开管理博客 2 在
  • 模拟电路和数字电路PCB设计的区别

    本文就旁路电容 电源 地线设计 电压误差和由PCB布线引起的电磁干扰 EMI 等几个方面 xff0c 讨论模拟和数字布线的基本相似之处及差别 工程领域中的数字设计人员和数字电路板设计专家在不断增加 xff0c 这反映了行业的发展趋势 尽管对
  • k8s部署资源服务的注意事项

    前言 为了k8s的资源服务能够高效 稳定 健康的运转 xff0c 需要对其进行相应的设置 资源类别 声明每个Pod的resource 在使用k8s集群时 xff0c 经常会遇到 xff1a 在一个节点上调度了太多的Pod xff0c 导致节
  • OCR中有见解的评论

    一 关于人脑与计算机识别的区别 电脑识别最主要是依赖简单的线性分类问题 把20 20个像素直接展成400维向量 xff0c 分类之 虽然现在的算法越来越常见地引入了非线性 xff0c 但是这种非线性的复杂度还是远没法和人脑相比 人脑则是多层
  • 梯度响应图——针对无纹理目标的检测

    题目 xff1a Gradient response maps for real time detection of textureless objects amp emsp xff1b gt amp ensp xff1b gt amp n
  • 深度学习技术在语义分割中的应用综述

    论文题目 xff1a A Review on Deep Learning Techniques Applied to Semantic Segmentation 博客园上的翻译 知乎上的提取 CSDN上的总结1 CSDN上的总结2
  • A Survey on Optical Character Recognition System 光学字符识别系统综述

    论文题目 xff1a 2017 A Survey on Optical Character Recognition System 摘要 光学字符识别 xff08 OCR xff09 是近年来研究的热点 它被定义为将文档图像数字化为其组成字符
  • 数据结构算法与解析(STL版含源码)

    文章目录 第1章 线性表1 1 顺序存储结构1 1 1 顺序表1 1 2 vector线性表 STL的顺序存储结构 1 2 链式存储结构1 2 1 单链表1 2 2 双向循环链表1 2 3 list线性表 STL的链式存储结构 1 3 静态
  • C++后台开发面试题集绵

    文章目录 一 C 43 43 语言1 引用和指针的区别 xff1f 3 C 43 43 中指针参数传递与引用参数传递 xff1f 4 形参与实参的区别 xff1f 5 static的用法和作用 xff1f 6 静态变量什么时候初始化 xff