写在前面的话。
C++,两年半专硕,投了好些家,完结撒花,专心搞毕设了。(牛客真的蛮灵,3月27日发了第一篇面经后,开始变得顺起来)(大伙不要喷我,我的本意不是“面霸”,只是希望有位爸爸能够收留)
B站
2020/1/3-电话面
- 用户态和内核态的区别
- 用户态和内核态切换的代价
- 环形缓冲区的好处
- 如果多个用户读同一个缓存环
- 互斥锁
- TCP四次挥手
- Alloc,c语言内存管理
- Springboot依赖注入
- 快速排序:只有1、2的数组,将1都放在左边,2都放在右边
2020/1/9-现场面
- 一个网站搜索所经历的过程
- DNS服务器与提供内容的服务器的区别
- 为了B站视频加载更快,可以怎么做
- 对称加密和非对称的区别
- 非对称加密有哪些
- AES的过程
- TCP三次握手和四次挥手
- Springboot的一个model怎么做的
- 数据库注入过程,如何防范
- 安全攻击有哪些
- DDOS有哪些,如何防范
- 有没有见过现实生活中的DDOS攻击
- 虚拟机逃逸过程
- Openstack明文存储的好处
- IP地址跳变时,若有服务正在使用怎么办
- CDN了解吗,有什么好处
- 为什么不做安全,要搞开发
- React用过?
- 金融沙箱那个项目,为什么用mysql进行存储
- 存的数据包用了什么索引
- 规则匹配,大流量下会不会漏掉
- 了解dpdk吗
- Pf_ring的公司,ntop,其他工具有使用过吗
- Webpack
- C语言链接的一些库,lpthread?
- 动态链接和静态链接
复兴
2020/2/8-电话面
- 网卡字节流->用户interface,内核干了什么:内核负责运输层以下的部分。
- Swift用户的接口协议?
- 对象存储了解多少?
- NFS
- 存储冗余,一个节点down了,如何恢复,能否恢复?
- Swift的算法,存储算法
- Pf_ring内核加载到释放经历了什么
- 用户http请求,从客户端到服务器端,经历了什么
- Tomcat之类软件的用处
- Web网上书店:偏工程的项目
Vmware
2020/2/12-视频面
- 进程和线程的区别
- 进程哪些资源线程可以用
- 系统中一个程序只能运行一次,别人不能运行
- 单链表反转
- Libpcap内核驱动?
- 数据包从网卡到用户
- 系统调用、过程
- 进程通信方式
- Core dump发生了什么
字节跳动-1、2
2020/2/21-视频面
- C++的多态
- C语言的内存机制
- 单链表的交点
- 最近公共祖先
- 复杂度!!!
- 进程和线程
- 系统调用
- 线程通信
- 进程通信
- http和https
- tcp和udp
- define的宏定义过程
- extern、static
- ssl协议
- 内核和用户的切换
- 粘包和分包
2020/2/21-视频面
- 快速排序的复杂度,最优和最差
- 死锁、场景
- 小数点保留
- mmap是什么
- c++的虚函数
- c++和c近几年的机制变化
- DNS,什么协议
- http和https,能否解密
- 公钥和私钥
- 项目中的异常检测?
- 段、页
- 散列函数
微软(上海)-1、2、3
2020/3/5-视频面-1、2、3
- 什么是内核???
- 写一个class,buffer拷贝的过程
- 抓取的是哪一层的数据包
- 抓取的是什么协议的数据包
- 抓取数据包的过程
- 可变环的性能
- 谁能用到这个抓包工具呢
- 这个抓包工具在什么情况下性能更优
- 有序数组中位数
- 直方图,最大矩形面积
- 山谷积水的坑数量:例如,(0,7,6,8,5,7,4,8,0),有两个坑:dp[i]表示从0开始的最大值
阿里-1
2020/3/19-电话面 10:00-11:20
- 四次挥手,S->C后C是否需要等待2MSL
- TCP和UDP区别,使用场景
- TCP如何保证可靠
- 子网掩码作用
- 流量控制和拥塞控制,简述
- 进程和线程
- 高并发,单进程多线程、多进程单线程
- 进程通信方式、命名管道
- 二层、三层交换机
- Buffer和cache,服务器宕机后,buffer数据还存在吗
- B树/B+树
- 冒泡、快排、堆排序的空间复杂度、过程、优化方案
- http和https过程、加密方法、性能
- 银行家问题
- 判断链表有环
- 数组和链表区别
- Python底层
- Code:冒泡排序/快排/层序遍历/之字形遍历/用锁实现交替输出
腾讯-0
2020/3/19-电话面 16:00-17:00
- 缓存环、多线程、线程冲突、性能优化
- Sbrk、mmap
- Linux指令
- Shell指令、source、./
- Sizeof
- 为什么三次握手、四次挥手、2MSL
- Static全局变量、extern、头文件
- Struct中两个线程访问不同变量,CASS
- Map、hashmap的结构、原理
- 虚构造函数、虚析构函数、申请、释放顺序
- Struct内存对齐
- 判断质数优化?
- 进程通信、socket和管道区别
- 线程锁
- 类中增加函数是否增加位置
- 内存拷贝函数memcpy、strcpy原理
- 为什么用红黑树
- 动态链接和静态链接发生了什么
腾讯微信-1
2020/3/24-电话面 15:00-16:00
- free和delete
- 有序链表数组合并
- New和malloc,申请了可以直接用吗
- Tcp 3和4,为什么四次,不用三次
- Seq为什么用x不用0
- Vector取内存,第五个位置的值,不断push,安全吗
- 静态和全局
腾讯微信-2
2020/3/26-电话面 11:00-11:30
- delete / delete[]
- map / unordered_map,空间,效率,底层
- 三次握手
- 100000个数,取出最小的10个
- 多线程并发
美团-1
2020/3/27-视频面 14:00-15:30
- 一个不知大小的数组,遍历一次,如何保证遍历过程中每个数字是否取出是等概的。
- 一个数组中,只有一个单个元素,其余都是成双成对的,如何快速找出那个单独的。
- 一个数组,遍历一遍就找出出现topk个的那个数。
- 质数 优化
- 最大公约数 优化
- 平时怎么学习的 最近学的映像最深刻的
- 职业规划 优势和劣势 c++的难点
- 多线程并发 线程和进程 如何切换 进程通信
- 内核和用户态区别 如何切换
- 如何抓取加密数据包
- http网址加载过程 http和tcp的区别
- http和https的区别 加密过程
- 零拷贝什么思想 为什么零拷贝 节省了什么
- 有什么方法实现
- tcp三次握手 四次挥手 为什么 三次
- tcp flooding攻击 如何防范
- 中间人攻击 如何防范
- 缓存了解吗
- 数据库索引 什么时候不能用索引
- b+树和红黑树 为什么
- mysql如何实现可重复读
- 死锁 解决方法
- 消息队列使用
- tcp保证可靠的方法 拥塞避免
- 如何实现可靠的udp
- tcp粘包
招行笔试
N个木棍,长度为ai,重量为bi,给这N个木棍排序,若后一个的ai和bi都大于等于前一个,则算其权重为1,否则为0,第一根木棍权重为1,求最小权重和。
字节跳动-1、2
2020/3/29-视频面 10:30-11:30
- 进程和线程、上下文切换了什么、共享了什么
- 线程独占什么、切换时候内核做了什么
- 七层模型、协议有哪些、arp、rarp
- 为什么要有ip和mac、mac地址是如何来的
- C++多态、继承、重载
- Map的种类
- 数据库语句!!!count(*)、count(1)、count(字段)
- group by、order by、distinct
- 一条sql语句,数据库做了什么?
- 缺页了怎么办,物理内存如何分配的
- 虚拟内存和物理内存,为什么
- B+树和红黑树
- 红黑树和一般的平衡二叉树,增、删、改、查的过程和效率、时间复杂度
- 有序数组,找出和为k的数对
2020/3/29-视频面 18:00-18:40
- 数据库组合索引,最左前缀,为什么
- 数据库事务特性
- 隔离机制有哪些,分别避免了什么
- http1.x的新特性、状态码
- 长连接和短连接,什么时候会出现
- 长连接是如何维持的,心跳机制,如果一直想要连接着怎么办
- 输入一个url发生了什么
- 二叉树各层节点数,递归、非递归,时间、空间复杂度
- 静态多态和动态多态
- 重载和覆盖
- 聚簇索引和非聚簇索引,实现区别,索引存在哪里了
- 主键索引存放
- 死锁是什么,死锁发生了怎么办
- 什么叫字节流,什么叫数据报
腾讯微信-3
2020/3/30-视频面—初面 14:15-15:25
- 判断一个int是否为回文数,回文数定义为首位置和末尾一样,如1234321,123321,要求10分钟内完成。bool check(int num);
- 判断二叉树是否为平衡二叉树,要求10分钟内完成。
struct Node
{
struct Node * left;
struct Node * right;
int value;
};
bool IsBalance(Node* root);
- 请实现LRU缓存类,实现Get、Set接口
class LruCache
{
public:
LruCache();
// value返回key对应的数据,成功返回0,如果不存在,返回1
int Get(int key, std::string& value);
// 成功返回0,是吧返回-1
int Set(int key, const string& value);
private:
//请定义必要的存储参数
}
key=1,value=tom
key=2,value=cat
key=3,value=jerry
使用频率:key=2,key=1,key=3
存储只能放三个key,那新插入一个,淘汰key=3
- vector<int> vec;
map<int, int*> int_map;
for (int i = 0; i < kMaxNum; ++i)
{
vec.push_back(i);
int_map[i] = &vec.back();
}
代码有什么问题。
- 项目简单介绍
- 内存泄漏的场景、处理方法
- New 和 malloc的区别
- 为什么基类的析构函数要是虚函数
- 为什么要有虚函数
- 拥塞控制
- Vector的实现机制
- IO复用、区别
- 建议:多看源码、最优方法
阿里-2
2020/3/30-电话面 21:00-22:00
- 部门SRE?
- 实现一个栈、死锁?
- 描述堆排序
- 双向链表删除一个节点
- Sql语句!!!
- 数据包如何实现校验和
- C语言如何实现对象
- Post数据包的结构
- 死锁?
- C++加锁
- TCP和UDP的区别,数据包结构
美团-2
2020/3/31-视频面 18:00-18:45
- 项目介绍
- 合作的项目,与别人交互,交互检查,合作中有没有遇到因为需要合作带来的问题
- 以后的学习计划、怎么学
- 面试到哪个阶段、偏向哪个公司
- 三年内的人生计划
- http状态码
- url输入到展示全过程
- redis了解?分布式缓存
- 反向代理了解?
- 内核和用户态区别
- Tcp和udp区别
- 流量控制的方法
- 流量控制的udp?
- C++面向对象的三个特性
阿里-3
2020/3/31-视频面 21:00-21:45
主要聊项目
字节跳动-3
2020/4/2-视频面 14:00-14:40
- 项目简单介绍
- 用过java?springboot、aop什么东西
- 跳格子:[3,5,0,7,1,2,4,2,1],最少步数
- Dpdk
- C++11,右值引用、智能指针
- 编程写智能指针,区别
好啦,下面是我的碎碎念,别看了,真的很碎。。。。。。
人生中第一次找工作(实习),一开始的时候真的是屡屡受挫,也是因为自己基础还没打牢。天真地觉得会写几个题,会背一些常见的面试题就会有公司要我了,too naïve。
微软真的是我抱着最大的希望去面的,面微软前两个周一直在刷题,别的啥也没干,确实,微软就是简单聊聊项目,然后做题,lc上的hard题,虽然都做出来了,可是没能是最优解,就是nlogn不行,需要n的那种,能进上海微软的一定是很厉害很厉害的人了。面完第二天就问了hr,大概知道了结果,丧了好些天,最想去的公司去不了了,不知道下面该怎么办。
还是要看基础知识的,操作系统、计算机网络、编程语言,甚至计算机组成原理,后来面试过程中发现,只要你基础过硬,面试官的问题都能答上来,即便项目不太行,结果也还是理想的(字节除外)。字节也是我的一个痛了,先投了日常实习,二面凉了,后又投了暑期实习,一二面都很顺利,刚面完就通知下一面了,三面约了4天后,因为对项目中使用的框架不了解,基本上是一问三不知,面试官兴致显然也不高,惨兮兮。我感觉我的面试状态很大程度上取决于面试官的兴致,这样很不好的,这样一定抗不过压力面的呀。
腾讯就像之前说的“腾讯虐我千百遍,我待腾讯如初恋”,真的是被腾讯捞了拒,拒了捞。可是腾讯的面试官都很好,你不会的问题,他会给你讲明白。
阿里投递了SRE岗,介于运维和开发之间的一个岗位,可能也是简历中的项目与他们比较对口,就还算不太曲折地进了三面(然后就没有然后了)。前两面都是聊基础知识,二面深度会加大一些。第三面就是视频面了,面试官很和蔼,带着口罩,但是看他眼睛是在笑的,虽然我没有通过,但是面试体验非常好hhh。三面就在聊项目、聊人生、聊理想了。但是被提到说笔试成绩不高,这,emmmm,是的。
美团可能因为笔试还行,一面基础知识答得还行,二面结束就hr面了。有朋友说他面了三轮才到的hr,但是我面两轮总时间和他是一样一样的,一面50分钟基础知识几乎把我会的都问到了,从操作系统到计算机网络到数据结构,还问了些网络安全,最后再来40分钟做了5道题目,加油!坚持住,可以的!
中间几度觉得自己可能找不到实习了,每周还要抽出时间来搞毕设,但是怎么办呢,还是要继续找下去呀,你不找你不面,公司难道会主动送上门来嘛?不努力是永远找不到的,学习不是蛮有意思的嘛,慢慢学习,慢慢进步,实习总会有的,毕业也是可以顺利的~
在面试过程中收获了很多,感觉特别是到二面三面的时候,面试官应该是人生阅历更加丰富了,我总会被问到有关职业规划、人生规划的问题,其实原本我想的不多,只是现在身边大家都在找实习,那我也得找呀,又不乐意考公务员。有位在微软实习的朋友也在找实习,因为不喜欢安逸的生活,她被问到,安逸不好吗?我也不知,可能以后会想要安逸,但是年轻还是可以多闯闯的,毕竟还是希望自己6、7年学习的计算机能有用武之地嘛。6、7年了欸,即便一开始没有感情也该日久生情了呀。
我也会问到,“女程序员的出路如何”,面试官说,有很多女工程师也可以走得很高,很远,可能在乎自己,看自己到了那个年纪还愿不愿意继续动脑筋、继续努力学习与工作了。也有被安慰到,没有人是什么都会的啊,人都是有优点的啊,呜呜呜,我是碰到了多么温柔的面试官呀。
幸运,加油,不负所望,未来可期~