春招十面(c++)
深信服 一面(40min)(C++ 研发实习)
第一次面试。比较紧张。
视频面试临时改成电话面试了。
自我介绍
项目介绍
知道我们是做什么的吗(回答了安全和云计算,面试我的是安全部门的)
项目遇到最难的问题怎么解决的
使用了什么线程同步机制(互斥锁,读写锁,条件变量)
有没有遇到死锁,怎么解决的
(项目答了快 20 min,讲了很多废话哈哈)
数组和链表的区别
#define 宏定义
结构体内存对齐
c++ 命名空间
tcp 和 udp 的区别
tcp 拥塞控制
IP 包多少个字节(这个忘了)
网页上输入一个百度网址后发生了什么(这个出了一点纰漏,怎么找 ip 地址的 mac 地址,使用 arp 缓存或者广播寻找)
爬楼梯动态规划
状态转移方程是怎么回事
最早什么时候实习
反问:为什么没怎么问 C++(毕竟是 c++ 研发岗位不问 c++ 我还以为想挂我了,说是项目用 c++ 做的不错然后就没问了)
深信服 二面(40min)(C++ 研发实习)
自我介绍
项目介绍
(10min,废话一堆)
c++ 多态
有没有用过strcpy,memcpy,memomve,区别是什么?
异步日志怎么做的?
异步日志有没有压测过?
项目压测结果怎么样?
局域网内通信流程
路由器和交换机的区别
数据链路层 mac 地址有没有变
缓存表里面没找到地址怎么办
交换器广播寻找的报文是怎么样的?
(数据链路层这里凉了,没怎么准备,哭,面试官一直安慰我说没事没事,我就问一下;问题也记得不是很清,是真的不太懂)
之后让我好好实践操作一下,抓一下包,看看mac地址是怎么变的
反问:
你们部门是做什么的,技术栈是什么?
(说是做路由器的,怪不得狂怼数据链路层)
怎么提升我个人的技术水平?
阿里巴巴国际技术部一面 (C++)(50min)
大学做过什么项目
(之后狂怼项目,问了很多,可能快 30 min,项目一定要了如指掌呀!)
gdb 怎么调式的
怎么检查内存泄漏
valgrind 怎么用的?最后的报表是怎么样的?
怎么看一个进程的资源使用情况?
epoll et 和 lt
进程和线程区别,协程呢
(很多问题掺着项目问了,记不太清)
c++ 11特性
追问了智能指针,右值引用
c++ 多态
两道算法很简单
数组建立一颗二叉树;
bfs 一颗二叉树;
反问:
1.技术栈是什么
2.需要加强什么技术(让了解深度学习)
阿里巴巴国际技术部二面 (C++)(55min)
自我介绍;
项目,嵌入式项目,问有没有了解 cpu指令集;(???)
rpc 框架,消息格式,json,protobuf,
http 协议对比一下 json
(这里没 get 到面试的意思,答得很挣扎,导致说我对项目理解不深入。。。)
vector,存储和扩容,销毁
map 底层存储
看这个能不能过编译
template <typename... TArgs> void Dummy(const TArgs &...args){ } #define DUMMY(...) Dummy("Hello", ##__VA_ARGS__); int main(){ DUMMY(); }
智力题,赛马问题;
三数之和
反问
结束
阿里巴巴云原生高可用架构 C++ 一面(56min)
c++ 多态
运行一个main函数的过程
从预处理开始讲,到栈帧的处理;
预处理怎么去掉注释的(??)
编译器做了什么事情?
静态链接和动态链接
栈帧的细节是什么,具体保存了什么东西?
(前面答的太尴尬了,自告奋勇说了异常的处理机制;)
每一步都要讲细节,使用什么数据结构,算法,处理方式
(也就是源码层面上回答,直接崩溃,面试官说我讲的太宽泛了,不够细节)
(编译原理确实不太熟悉呀)
STL map 的存储原理,扩容原理
红黑树和B树、234树、avl树 的区别
new 和 malloc的区别,malloc 底层是怎么样的?
具体的操作过程是怎么样的?
(说了 brk 和 mmap,面试官说这只是系统调用,具体逻辑是怎么样的)
有没有看过源码?(哭,谁看了 malloc 源码??)
日志的设计,宕机了怎么处理的?数据丢失掉了怎么办?怎么优化?
智能指针怎么管理内存?
怎么检查内存泄漏,怎么解决?
io 模型的优劣,为什么用 epoll,逐个分析
线程上下文切换原理,切换了什么?
影响线程数量的原因?
为什么用红黑树管理定时器
还有什么其他方式?
分析各个方法管理定时器的优缺点?
能不能想出一个更优方案。
为什么使用 json 做序列化方案?还有其他方案吗?
项目里面最难的地方是什么?
线程数等于核心数就一定最好吗?
觉得自己最大的优点是什么?
最大的技术长处是什么?
反问:
你们部门是做什么的?(容器)
需要学习什么技术提升个人?
自我介绍
一个 cpp 文件运行的过程(编译过程、栈帧处理过程)
类和结构体的区别
怎么用 c 语言去实现面向对象
内存管理,段页式存储
内存页设置大了或者小了会怎么样
进程和线程的区别
中断
进程上下文和线程上下文
分析八大排序算法
osi 7层,每一层的协议
输入一个 url 发生了什么
tcp 三次握手为什么是三次,四次挥手为什么是四次
拥塞控制
quic 协议
https tls 握手
epoll 和 select
redis 分布式的实现
redis 的框架
为什么用 json
protobuf 为什么快
动态和贪心的区别
合并排序链表
有效的括号字符串(差了一点,一个 case 忽略了,哭)
还做过什么项目
腾讯会议 c++ 二面 (1个小时)
用过哪些 stl 容器;
tcp 三次握手,能不能减少一次,能减少的话可以减少哪一次,如果不能为什么?
new 和 malloc 的区别
多进程和多线程的应用场景
为什么使用 json 作为序列化的方式;
双缓冲日志是怎么设计的
挑战杯参赛的项目是怎么样的?
之后在聊天了,讲了很多关于腾讯会议的发展方向的内容。
反问:
腾讯会议团队目前的产品线和技术栈是怎么样的?
腾讯会议目前面临的挑战是什么?
我不懂客户端开发,需要再学习什么技术?
字节跳动 c++客户端 一面(1个小时)
自我介绍
挺多问题都追问了一些细节,但记不太清
操作系统:
进程和线程的区别,进程的内存分配,栈和堆,线程调度,linux 线程调度,cfs 完全公平调度,实时系统,线程同步手段,锁、条件变量 api
计算机网络:
tcp/ip 四层模型的每一层协议,socket 的选项,tcp 流量控制的手段,http 和 https,tls 握手,实现可靠 udp 的方法,ip 协议,mac 帧大小
c++:
多态的实现,new 和 malloc,c++ 11新特性,右值引用,智能指针、引用技术、环状引用的问题和解决;
项目:
双缓冲的实现手法,线程安全以及线程同步手法,项目设计模式,框架
算法:
合并有序链表
反问
字节跳动 c++客户端 二面(40 min)
自我介绍
项目问题
进程和线程
一个线程在什么时候挂掉会影响整个进程
输入一个 url 之后的过程
数组和链表 ?
一个链表奇数位升序,偶数位降序,将其变为升序链表
反问
二面异常简单,有点奇怪,还有些其他问题记得不太清除了
字节跳动 c++客户端 三面 (58 min)
做题,给定一个 N 叉树,一个目标节点,需要求出遍历到这个目标节点的概率;
自我介绍
给了一段代码,探讨多态的使用和原理
介绍项目,探讨了一些服务逻辑和可以优化的点
udp 的优化使用
设计一个分布式的文件系统(这里文件系统的内容忘的差不多了,答的很挣扎)
反问
春招找实习也到此结束了;
春招实习一共面试 4 家公司,经历 10 次面试,阿里补笔试把我挂了,哭,没机会享受福报了,其他也都顺利通过了;