c++实习面经
毫末智行
一面 3.16
1.RPC 和GRPC相比优势
2.为什么选择Zookeeper
3.function和函数指针的区别
4.线程和进程区别
5.介绍几种自己比较熟的容器
算法题:任务调度和斐波那契数列
二面
主要是项目
柠檬微趣
一面 3.22
项目
- buffer缓冲区
 - 线程池怎么实现得(手写线程池)
 - 单例模式
 - 定时器得实现
 
c++
- std::move
 - 线程和进程那个切换快,虚拟空间由什么不同
 - 虚拟空间和物理空间区别
 - 访问不存在得虚拟空间会发生什么
 - 介绍排序算法时间复杂度、空间复杂度、稳定性(建堆自顶向下,自下向上得时间复杂度)
 
二面 3.27
- tcp和udp的区别
 - udp传输数据的过程
 - 计算B+树层高
 - 大文件寻找中位数
 - 两数之和
 
WIND
一面 3.22
- sizeof类的大小(类中只含有一个静态变量)
 - 多态
 - string s1 = "abc", string s2 = s1,区别,如果自己实现怎么实现s1,直接开辟内存然后初始化
 - 介绍Reactor,Reactor具体是什么
 
淘天
一面(电话面) 4.8
- 智能指针,解释什么时循环引用
 - TCP、UDP
 - 微信聊天选哪个、视频会议选择哪个、下载选什么协议
 - TCP编程步骤
 - UDP编程步骤
 - TCP 和UDP的区别
 - 怎么使用udp实现可靠传输
 - 在网页输入网址的通信过程
 - socket参数都有哪些
 - 线程多线程中join和detach区别
 - 香农定理和奈奎斯特定理
 
手撕:
- 二叉树的建立
 - 层序遍历二叉树
 - 两个线程分别读取文件text1, text2第一行然后读取完后再主线程输出成功(join())
 - 两个线程分别读取文件text1, text2第一行,主线程输出成功(detach())
 
Momenta
一面 4.9
- 指针引用区别
 - 左值和右值
 - 智能指针
 - c语言struct和c++struct区别
 - 重载和重写
 - 介绍项目
 - 为啥做rpc
 
二面 4.10
- 怎么比较float
 - 为什么要这样比较
 - 内存对齐,为什么进行内存对齐
 - 口撕单例模式
 - 手撕 判断一个地址是不是IPV4
 
腾讯
天美 一面 4.10
- TCP和UDP,王者荣耀用到的协议
 - c++多态
 - 虚函数,虚函数表
 - 虚析构函数
 - 构造函数为什么不能是虚函数
 - 虚函数表属于类还是属于对象
 - 模板编程,放在哪个文件中(.h)
 - 多路IO复用
 - new和malloc区别
 - rpc框架的实现, 日志怎么实现的,知不知道无锁队列
 - muduo的定时器怎么实现的,线程池怎么工作的
 
ACM模式
- 反转指定范围链表
 - 搜素二维矩阵
 
天美 二面 4.11
- 项目的相关
 - linux查看cpu
 - b+树
 - zookeeper崩溃咋办
 - mysql主从同步
 - 分布式一致性
 - new和malloc区别
 - 进程之间的通信方式
 - select、poll、epoll
 
无手撕
天美 三面 4.16
- 面向对象、面向过程
 - 查看端口状态
 - 怎么判断链表有环
 - new 和 malloc的区别
 - 常见的排序算法
 - 内存泄漏
 - 进程之间的通信方式
 - 怎么调试,然后怎么快速定位死循环
 - socket使用Tcp怎么增加系统的吞吐量
 
查看22道真题和解析

