2019秋招c++个人面经集合
包含cvte,bigo,老虎,网易,拼夕夕等
简介:
以个人面试时间为顺序,尽可能还原面试问题。
8.19 腾讯提前批 客户端开发
- 手撕kmp算法
给定一个字符串数组,和一个子串,求字符串中是否存在子串,如果存在则返回首个匹配到的索引位置,否则,返回-1。不能调用库函数。例如: 字符串数组:“Integrity Procative Collaboration Innovation” 子串:”tegri” 返回:2 int IndexOfSubstr(const char* const raw_str, const char* const sub_str) { }
- 函数传值的方式
- 引用和拷贝的区别
- 引用的优缺点和拷贝的优缺点
8.24 深信服优招 c++研发(物联网方向)
- c++内存分区,未初始化的全局变量放在哪,如果编译了在二进制文件里会有他的位置吗?
- 野指针是什么,有什么工具可以检测吗?
- 进程间通信方式,知道互斥锁和什么锁(没听过)
- 一个结构体,能够用memcpy判断两个结构体存的东西是不一样的吗?
- 知道哈希表吗,怎么解决冲突,如果只有32个槽,怎么存放几千个数据。
- 路由器和二层交换机的区别
- 用过shell脚本吗
- 知道二叉树有哪些遍历的方式吗
- 后序遍历的实现
- 假设4个人过河,每个人的过桥时间为1,2,5,8。只有一个手电筒,一次最多过两个,怎么过桥速度最快
- 如果是n个人怎么计算他的过河时间
- arp协议的功能干嘛用的
- 快速排序的思想
8.26 老虎正式批 windows开发一面
- c和c++的区别
- 你对多态的理解
- 冒泡函数
- 快速排序的思想
- 学习了哪些数据结构
- 你对mfc的印象
- 用过哪些ui界面
- 用过qt吗
8.26 360提前批 软件开发
- 手撕strcpy
- 如何判断大小端,手写代码
- 讲一下tcp的拥塞控制
- 左值引用和右值引用的区别
- 四种cast强制类型转换的区别和使用
- 讲一下智能指针
- 做了哪些面向对象编程的工作
- 了解完美转发吗
- future和thread了解吗
- tcp/ip四层模型和osi七层模型具体是哪些
- 进程间消息通讯方式
- 进程和线程的区别
8.26 老虎正式批 windows开发二面
- 讲windows下消息的机制
- 系统集和用户集
- c++的内存管理
- stl是线程安全的还是不安全的
- windows出现了内存泄漏怎么办
- 怎么删除链表第n个结点
- tcp,udp的区别
- tcp怎么确定可靠传输
- 用户点下鼠标到控件响应的过程,怎么实现的
9.5 bigo正式批 客户端开发一面
- 项目
- 单例模式线程安全手撕代码
- 观察者模式的应用场景和工作方式
- 知道责任链设计模式吗
- 流量控制与拥塞控制
- tcp,udp应用的场景
- 讲一下红黑树
- 哪些排序算法是稳定的
- c++有哪些创建线程的方法
- 用过oracle和mysql吗
- join有哪几种方式
- 讲一下左连接和右连接
- 了解过移动开发的架构实现吗
- 除了c++还用过什么,java用过吗
- 有什么想问我的
9.8 高德地图正式批 c++研发一面
- 你对面向对象的理解
- 继承有什么原则
- 虚函数的工作方式
- 虚函数表和虚表指针是一个对象一个还是
- 抽象类可以实例化对象吗
- 公有继承,私有继承,保护继承的使用场景,和你的判断使用哪种的原则
- c#中有接口的概念,那么在c++中你觉得哪种行为体现了接口的特性
- 重写和重载的区别
- 类函数哪些需要设置成虚函数,你怎么判断一个函数需要声明为虚函数
- 基类指针操作基类对象,和基类指针操作派生类对象,和派生类指针操作基类对象,和派生类指针操作派生类对象,操作同名函数时的表现
- 如果同名函数为虚函数又是怎么样的
- c++的虚拟内存分布
-
const int i=1024 char *str =”"hello" 在全局范围和局部范围声明时在内存的分布情况
-
int i=1024 static int i=1024 在全局声明使用的区别和局部声明的区别
- 你了解过stl容器中的哪些容器,以及使用的场景和区别
- vector中扩容的原理和具体实现方式
- map和unordered map的底层实现和性能区别,获取元素和删除增加元素。
- 了解过哪些排序算法,可以讲一下吗。在什么场景使用什么算法
- 归并排序了解吗
- 设计数据库表有哪些原则,你如何设计一个表
- 怎么增加数据库的i/o速度
- 在多线程有过实践吗,或者你对多线程有什么了解
- 了解过范式吗
- 以后想要往什么方向走
- 了解过大数据和图像处理吗
- 了解过二叉树的遍历方式吗,二叉树有哪些遍历方式,是什么个遍历顺序,非递归是怎么实现的
- 有什么兴趣爱好
- 读过什么c++的书
- 英语的水平怎么样
- 工作地点在北京有什么不方便的吗
反问
-
你们认为应届生是基础重要还是应用重要
基础更重要,面试官更看重的是你的潜力,应用的话是第二考量,有实践经验最好,但是每个学校并不是都有实践的机会。所以基础更加重要 -
对于应届生学习有什么意见
如果选定了一个专业领域,那么就应该学习对应领域的知识,去做对应领域的实践,知识的落地是非常重要的。
9.9 cvte正式批 c++软件开发一面
- c++的三大特性
- 什么是多态
- 虚函数的工作原理
- 如果是多重继承只有一个虚表指针吗
- 使用过类模板吗
- 函数模板和类模板的区别
- 用过stl吗,用过哪些
- vector的一个扩容原理
- 如果让你实现vector动态删除然后容量缩小你会如何设计
- 了解过类型萃取吗
- 了解过c++11特性吗
- c++有哪些创建线程的方式
- 了解过智能指针吗
- 智能指针怎么解决内存泄露
- weak ptr怎么解决循环引用的问题
- tcp滑动窗口的原理
- tcp和udp的区别
- 为什么tcp不能是两次了解
- 为什么四次挥手不能是三次
- 怎么解决tcp粘包的问题
- 手撕算法:怎么判断一个链表是否有环
9.9 cvte正式批 c++软件开发二面
- 怎么解决tcp粘包问题(一面答的不好又问了一次)
- tcp怎么保证可靠传输
- tcp的停止等待协议是为了什么
- 线程同步的方式
- 线程之间怎么传递信号
- c++怎么传递信号
- 什么是内存泄露
- 如果我new了一个内存,然后在delete之前这个进程被系统杀死了。那这样是内存泄露吗
- linux 755指的是什么权限
- wine是使windows程序能够在linux下使用,你觉得他是怎么解决的
- 系统调用和函数调用的区别
- dll是什么文件
- 静态库和动态库的区别
- 什么情况下会发生dll缺失
- 怎么解决内存泄露的问题
- 你觉得这些定位开源定位内存泄露的工具是怎么实现的
- c++下的可执行文件和linux下的可执行文件是什么后缀
- windows下c++有哪些文件的后缀,干嘛用的
- 如果在调试过程中,出现了需要循环很多次才出现的错误应该怎么调试
- 最近在编程上遇到了什么问题
- 手撕单例模式线程安全写法
- 如果多个线程同时判断到当前对象未创建,应该怎么解决
- c++11中可以用什么特性替换单例模式中的static写法
- git和svn的区别
- git和github的区别
- 讲一下stl中map
- map和unordered map的区别
9.10 拼多多正式批 服务端工程师一面
全程就问了我两道算法题,让我理思路让我写
- 第一题是笔试题中的一道题,记得不太清楚了
- ```
给定一个字符串,其中包含 数字(0-9)、字母(a-z,A-Z)、小数点(.),要求从中找出子串,该子串需满足 - 是一个合法的 十进制 数字,如是一个整数、浮点数
- 是符合1的条件里的所有子串里长度最长的,小数点也算在长度里,但是不影响大小的前导或者末尾0不算在长度里,如123.45的长度是6,00123的长度是3,123.4500的长度是6,123.046的长度是7
如果同时符合1和2的子串有多个,按数值大小从大到小全部输出
输入 123.456abc789.678.23500
输出 789.678 678.23500 123.456
```
9.11 bigo正式批 客户端开发二面
- tcp和udp的区别
- 如何基于udp实现tcp
- 构建哈弗曼数的思路
- 什么情况用栈什么情况用队列
- 什么情况发生内存泄露
- 空指针和野指针的区别
- 什么情况下产生野指针
- 什么情况会发生栈异常
- 手撕算法:判断一个整数是不是回文数。用不同的方法,考虑时间复杂度和空间复杂度。写出用最少辅助空间的算法
- 做过哪些项目
- 如何估算一片绿化占当前区域的比例
9.11 bigo正式批 客户端开发三面--手撕算法
- 完成二叉树的列遍历,同一列的节点按照根左右的顺序输出
- 给定金币,要你求最小的组合硬币数。
- top(k)问题,怎么求第k大的数。小根堆的执行过程。画图
9.16 网易正式批 客户端开发一面
- c++三大特性
- 继承,封装,多态讲一下
- public,protect,private讲一下
- 共有继承,保护继承,私有继承的区别。
- 既然私有继承,派生类不能够访问,为什么又要继承
- 如何访问其他类的私有成员
- 既然私有成员就是不想让外界访问,为什么又设计了友元的方式去能够访问私有成员
- 函数重载和函数模板的区别
- 函数模板是怎么去调用到对应的重载版本
- 函数模板在二进制文件中是存放了全部重载版本吗,还是怎么
- 函数重载max。是直接比较大小吗
- 函数重载max传递的类对象,想通过直接比较的方式怎么实现
- 重载运算符<有哪些需要注意的点
- 虚函数表是谁维护的
- 虚函数表存放的是什么
- 基类有一个虚函数fun,派生类有虚函数fun。用基类指针指向派生类对象调用的是哪个函数
- 派生类虚函数表的具体结构
- 基类指针怎么动态的知道自己指向的动态对象
- 讲一下抽象类
- 抽象类可以有成员变量吗
- 场景题:0-10000的数。已有500个数,可重复,判断某个数是否存在。如何设计
- 了解windows下的消息机制吗
- 数据库多次增删改,如何保证安全
- 了解事务吗
- tcp如何实现可靠传输
- c的struct和c++struct的区别
- 平时自己有封装的经验吗
- 你觉得算法题除了对付公司的笔试,在自己的工作中有什么帮助
9.16 高德地图正式批 c++研发二面
- const 的作用,函数前面和函数后面有什么不一样
- struct和class的区别,什么时候用struct,什么时候用class
- struct字节对齐的方式,字节对齐有什么好处
- c++内存管理
- 反转二叉树,递归和非递归做法
- 冒泡排序和快速排序的时间复杂度
- 求站点a到站点b的所有可达路径的方式,考虑查询
- 有了解过A*算法吗
- 类型萃取的实现
- 没打算考研吗?
9.18 拼多多正式批 服务端工程师二面
- 疯狂怼项目
- 了解过A*寻路算法吗
- 多线程和多进程的区别,什么时候用多线程,什么时候用多进程
- 一个类对象数据的初始化顺序
- tcp和udp的区别
- 什么时候用tcp什么时候用udp
- tcp三次握手为什么三次
- 重传为什么重传,什么情况重传
- 滑动窗口了解吗
- 计算一个马从左下角到右下角的路径数量(象棋的马)。
- 如果是是不规定从左下角到右下角。规定从a到b。你怎么确定它要前进的方向呢
- 红黑树添加一个数据,它是怎么实现平衡的
- 二叉树的遍历方式。什么时候用前序,后序,中序,和层次
- 怎么判断一个链表是否有环
- 快慢指针的方式要走多少步
9.19 老虎正式批 windows开发三面
三面可能就走个过场,基本没问啥问题,就问了个逆波兰式和智能指针和一个算法题
传面经,攒人品,希望大家拿到自己心仪的offer
# C++ 工程师面经及答案汇总
最近专栏更新中,有需可关注