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怎么增加系统的吞吐量