2024最新大厂C++校招面试真题合集,大厂面试百日冲刺 bay12

快手客户端

protobuf使用方法和底层原理?

使用方法:

  1. 定义消息结构: 在.proto文件中定义数据结构。
  2. 生成类: 使用protoc编译器生成对应语言的类。
  3. 序列化/反序列化: 使用生成的类对象进行数据序列化为二进制格式或从二进制格式反序列化数据。

底层原理:

  1. 键-值对编码: 数据被编码为键-值对,键包含字段编号和类型信息。
  2. 可变长度编码: 整数使用可变长度编码,减小数据大小。
  3. 前向后向兼容: 字段标识符确保消息结构的修改向前和向后兼容。
  4. 二进制格式: 紧凑的二进制格式用于高效的数据序列化和快速解析。

——————————————————————————————————

protobuf数据结构发生变动如何维护?

当protobuf数据结构发生变动时,应按照以下步骤维护:

  1. 保留字段编号:不要更改现有字段的编号。
  2. 避免重用编号:不要为新字段或不同类型的字段重用已删除字段的编号。
  3. 新增字段:为新增的字段指定新的编号。
  4. 可选字段:可以将字段设置为可选,这样新版本可以在没有这些字段的情况下解析老版本的数据。
  5. 默认值:对于新增的字段,可以设置默认值,确保在字段未设置时有合适的行为。
  6. 维护向前兼容性:确保新版本的.proto文件可以处理旧版本序列化的数据。
  7. 维护向后兼容性:确保通过旧版本的.proto文件序列化的代码可以忽略新版本中新增的字段。

——————————————————————————————————

两台机器基于http通信全过程,和socket通信的联系,ip寻址转发过程?

  1. 基于HTTP通信全过程:

    1. 建立连接:客户端向服务器发起TCP连接请求。
    2. 发送请求:客户端向服务器发送HTTP请求,包含请求方法、URL、协议版本、请求头和请求-body。
    3. 响应请求:服务器处理请求,并返回HTTP响应,包含状态码、响应头和响应-body。
    4. 断开连接:客户端接收到响应后,关闭连接。
  2. HTTP通信基于Socket通信:
    HTTP协议是应用层协议,其通信过程是基于TCP/IP协议的,而TCP/IP协议中的数据传输主要是通过Socket进行的。所以,HTTP通信实际上是基于Socket进行数据发送和接收的。

  3. IP寻址转发过程:

    1. 主机解析:主机通过DNS解析服务将目标主机名解析为IP地址。
    2. 数据发送:发送主机根据目标IP地址和网络掩码判断目标主机是否在同一子网内。
    3. 同子网通信:如果在同一子网内,直接通过ARP协议获取目标主机MAC地址,然后直接发送数据。
    4. 跨子网通信:如果不在同一子网内,那么数据发送到默认网关,由网关转发。
    5. 数据转发:数据在Internet中经过多个路由器转发后,最终达到目标主机。

——————————————————————————————————

介绍HmacSha256加密算法/介绍单项散列函数?

HmacSha256加密算法:

HmacSha256是一种基于密钥的哈希算法消息认证码(HMAC)结合了SHA-256散列函数。它用于同时验证消息的完整性和消息的真实性。HmacSha256使用一个密钥和一个消息,生成一个固定长度的哈希值作为消息认证码。相较于仅使用SHA-256,HmacSha256更难以遭受伪造攻击。

单向散列函数:

单向散列函数又称哈希函数,是一种从任意长度的消息计算出固定长度哈希值的函数。它具有几个关键特性:确定性(相同的输入产生相同的输出)、高效性(快速计算哈希值)、抗碰撞性(不同的输入难以产生同一哈希值)和原像难以找回(从哈希值难以还原原始输入)。SHA-256是单向散列函数的一个例子,它输出256位的哈希值。

——————————————————————————————————

消息加密中消息认证码机制的原理?

消息认证码(MAC)机制的原理是通过使用密钥和消息本身,经过特定的加密函数,生成一段固定长度的字符串。发送方将这个字符串(MAC)附加在原始消息后面一同发送给接受方。接收方在收到消息时,使用同样的密钥和加密函数对接收到的原始消息进行处理,如果生成的MAC与接收到的MAC一致,说明消息在传输过程中未被篡改且发送者是可认证的,确保了消息的完整性和认证性。

——————————————————————————————————

可逆加密和不可逆加密介绍?

可逆加密(又称对称加密或非对称加密)是指加密过程可以被逆向操作,即通过对应的解密过程和密钥可以还原出原始数据。对称加密算法(如AES、DES)和非对称加密算法(如RSA、ECC)都属于可逆加密。这类加密方法通常用于数据的保密传输和存储。

不可逆加密(又称哈希函数或散列算法)是指加密过程不可逆,无法从加密后的数据恢复原始数据。哈希函数(如SHA-256、MD5)通常用于生成数据的唯一指纹,常见应用包括密码存储、文件完整性验证等。不可逆加密的特点是其抗篡改性,保证数据的完整性和一致性。

——————————————————————————————————

c++如何实现单例模式?

C++实现单例模式的办法通常包含以下步骤:

  1. 将类的构造函数设为私有(private),以阻止外部直接创建对象。
  2. 创建一个静态(static)的私有对象。
  3. 提供一个静态(static)的公开(public)方法获取单例对象。

——————————————————————————————————

单例模式存在的问题及解决方法?

单例模式存在以下几个问题:

  1. 全局状态:单例创建了一个全局的对象,这可能导致代码之间的紧密耦合和难以测试。
  2. 线程安全:在多线程环境中,为保证只有一个实例需要对单例实例的初始化进行额外的同步处理。
  3. 生命周期管理:C++中,单例的析构时机不可控,可能导致程序的退出顺序问题。

解决方法:

  1. 全局状态:避免过渡依赖单例。对于需要全局访问的资源,考虑使用依赖注入或者上下文传递的方式。
  2. 线程安全:C++11后,可以使用局部静态变量的方式,静态变量的初始化是线程安全的。如果使用C++11之前的版本,可以使用锁机制避免并发初始化。
  3. 生命周期管理:在单例类中管理所有的资源,确保在单例析构的时候正确释放所有资源,以控制生命周期。或者使用智能指针自动管理资源。

——————————————————————————————————

static关键字介绍?

在 C++ 中,static 关键字具备多种用途:

  1. 静态局部变量:在函数内部,static 修饰的变量仅初始化一次,并在函数调用结束后仍保持其值,直到下次调用该函数。
  2. 静态类成员:在类内部,static 可用于声明静态成员变量和静态成员函数,这意味着无需对象实例即可访问,且静态成员为所有对象共享。
  3. 静态全局变量:在全局或命名空间范围内,static 可以限制变量或函数的链接范围(可见性)仅限于定义它的文件内,从而防止其他文件的访问。

——————————————————————————————————

post和get的区别?还有哪些请求方法?

  • GET请求用于请求数据,它将请求参数附加在URL后面,通过URL传输数据,对数据大小有限制,且安全性较低,因为发送的数据会显示在URL中。
  • POST请求用于提交数据给服务器,比如表单数据。它将数据包含在请求体中,不会显示在URL中,因此安全性更高,也没有数据大小限制。

其他几种HTTP请求方法:

  • PUT:用于上传文件或内容到指定URI。
  • DELETE:用于请求服务器删除指定URI的资源。
  • HEAD:与GET类似,但不返回消息正文,常用于检查URI的有效性以及资源更新的日期时间等。
  • OPTIONS:用于获取目标资源所支持的通信选项。
  • PATCH:用于对资源进行部分修改。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。

——————————————————————————————————

收集整理了一份2024年最新C++开发学习资料,既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C++开发知识点,真正体系化!
包含大厂面经、学习笔记、实战项目、大纲路线、讲解视频 领取 君羊739729163 或者
https://docs.qq.com/doc/DR2N4d25LRG1leU9Q
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值