面试真题 | 百度C++研发工程师面经
文章目录
- 你认为RPC框架由哪几部分构成
- 面试官可能进行的追问及建议的回答
- protobuf有那些优点,项目当中是如何调试二进制字符流的
- Protobuf的优点
- 项目中调试二进制字符流的方法
- 面试官可能进行的追问及建议的回答
- 负载均衡是如何做的
- 负载均衡的实现方式
- 负载均衡的优势
- 面试官可能进行的追问及建议的回答
- C++的内存管理,有哪些可能导致内存泄露的地方
- 面试官可能进行的追问及建议的回答
- 介绍一下智能指针
- 面试官可能进行的追问及建议的回答
- 手撕shared_ptr
- 简化的shared_ptr实现
- 面试官可能提出的深入问题及其答案
- 手撕strcpy(),说明有什么漏洞
- 手写`strcpy()`函数
- 漏洞说明
- 面试官可能进行的追问及建议的回答
- 手撕二叉树的遍历,用迭代法,求最大深度,最大路径代价
- 二叉树的遍历(迭代法)
- 求二叉树的最大深度
- 求二叉树的最大路径代价
- 面试官可能的追问及回答
- 反问
一面:0808 50min
你认为RPC框架由哪几部分构成
RPC(Remote Procedure Call)框架是一种实现远程过程调用的技术框架,它允许一个程序在不同的地址空间中调用另一个程序中的函数或方法,就像调用本地函数一样。在C++环境中,RPC框架通常由以下几个核心部分构成:
-
客户端(Client):
- 服务请求方,负责发起远程调用请求。
- 客户端存根(Client Stub):作为客户端和服务端之间的中间层,负责将客户端的请求参数打包成网络消息,并通过网络发送给服务端。同时,它还负责接收服务端返回的结果,并将其反序列化为客户端可以理解的格式。
-
服务端(Server):
- 服务的提供者,负责处理来自客户端的请求。
- 服务端存根(Server Stub):接收客户端发送的请求消息,进行解码(反序列化),然后调用本地服务进行处理。处理