当前位置 博文首页 > GhostLWB的博客:超全面的后端开发C/C++面经整理分享含详细参考

    GhostLWB的博客:超全面的后端开发C/C++面经整理分享含详细参考

    作者:[db:作者] 时间:2021-08-04 11:55

    本文为博主2020年秋招提前批的c/c++后端开发面经整理,包括C/C++语言基础,计网,数据库,linux,操作系统,场景题,智力题和hr常问题。面试问题来自前人的工作和博主面试时遇到的值得记录的问题,其中面试题答案多为博主自行解答(并且面试的时候也基本是这样回答的),回答中都附上了参考资料的链接,全文共七万余字,仅供大家作为面试准备材料的参考。

    希望大家在准备面试的时候都能建立一个属于自己的题库,自己从网上寻找问题,然后自己进行解答,并且记录下来,这样在面试的时候就能行云流水般的回答上来。因此我把这份面经的源文件 markdown格式分享给大家:网盘链接
    提取码:229s

    希望大家在这份面经上添砖加瓦或从头开始,建一个属于自己的面试题库!

    附上博主2020秋招进展:


    TP-LINK提前批 软开深圳:一面二面三面hr面 offer

    shopee 后端深圳:笔试一面二面hr面 offer

    快手提前批 客户端 深圳:一面二面三面hr面 offer

    腾讯提前批 c++ teg 深圳:一面二面hr面 offer

    百度提前批 c++ 北京:一面二面三面+hr面测评 offer

    阿里C++ 北京:笔试一面二面三面交叉面一面二面三面hr面 offer


    字节跳动提前批 后端深圳:一面二面 挂

    招银网络提前批 软开深圳:一面二面三面 挂

    京东提前批 后端 京东零售:简历 挂

    猿辅导 服务端:笔试 挂


    京东正式批 c++:笔试一面二面 放弃

    网易互娱 游戏研发广州: 笔试 放弃

    哔哩哔哩 后端上海:笔试 放弃

    虎牙提前批 后端广州:放弃

    拼多多提前批 后端:笔试 放弃


    目录

    • 写在前面
          • 关于实习
          • 关于简历
          • 关于投递
          • 关于面试准备
    • 1. 语言基础 (C/C++)
          • (0) 指针和引用的区别
          • (1)在函数参数传递的时候,什么时候使用指针,什么时候使用引用?
          • (2) 堆和栈有什么区别
          • (3)堆快一点还是栈快一点?(字节提前批一面)
          • (4) new和delete是如何实现的,new 与 malloc的异同处
          • (5)既然有了malloc/free,C++中为什么还需要new/delete呢?
          • (6) C和C\+\+的区别
          • (7)delete和delete\[\]的区别
          • (8) C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制)
          • (9)C++和python的区别
          • (10) Struct和class的区别
          • (11) define 和const的联系与区别(编译阶段、安全性、内存占用等)
          • (12) 在C\+\+中const的用法(定义,用途)
          • (13) C++中的static用法和意义
          • (14) 计算下面几个类的大小:
          • (15) C++的STL介绍(这个系列也很重要,建议侯捷老师的这方面的书籍与视频),其中包括内存管理allocator,函数,实现机理,多线程实现等
          • (16) STL源码中的hash表的实现
          • (17)解决哈希冲突的方式?
          • (18) STL中unordered_map和map的区别
          • (19) STL中vector的实现
          • (20) vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因。
          • (21)C++中vector和list的区别
          • (22) C++中的重载和重写的区别:
          • (23) C ++内存管理(热门问题)
          • (24) 介绍面向对象的三大特性,并且举例说明每一个。
          • (25) 多态的实现(和下个问题一起回答)
          • (26) C++虚函数相关(虚函数表,虚函数指针),虚函数的实现原理(热门,重要)
          • (27) 实现编译器处理虚函数表应该如何处理
          • (28) 基类的析构函数一般写成虚函数的原因
          • (29) 构造函数为什么一般不定义为虚函数
          • (30) 构造函数或者析构函数中调用虚函数会怎样
          • (31) 纯虚函数
          • (32) 静态绑定和动态绑定的介绍
          • (33) 深拷贝和浅拷贝的区别(举例说明深拷贝的安全性)
          • (34) 对象复用的了解,零拷贝的了解
          • (35) 介绍C++所有的构造函数
          • (36) 什么情况下会调用拷贝构造函数(三种情况)
          • (37) 结构体内存对齐方式和为什么要进行内存对齐?
          • (38) 内存泄露的定义,如何检测与避免?
          • (39) C++的智能指针有哪些
          • (40) 调试程序的方法
          • (41) 遇到coredump要怎么调试
          • (42) inline关键字说一下 和宏定义有什么区别
          • (43) 模板的用法与适用场景 实现原理
          • (44) 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?
          • (45) 用过C11吗,知道C11新特性吗?(有面试官建议熟悉C11)
          • (46) C++的调用惯例(简单一点C++函数调用的压栈过程)
          • (47) C++的四种强制转换
          • (48)string的底层实现
          • (49)一个函数或者可执行文件的生成过程或者编译过程是怎样的
          • (50)set,map和vector的插入复杂度
          • (51)定义和声明的区别
          • (52)typdef和define区别
          • (53)被free回收的内存是立即返还给操作系统吗?为什么
          • (54)引用作为函数参数以及返回值的好处
          • (55)友元函数和友元类
          • (56) 说一下volatile关键字的作用
          • (57) STL中的sort()算法是用什么实现的,stable_sort()呢
          • (58)vector会迭代器失效吗?什么情况下会迭代器失效?
          • (58)为什么C++没有实现垃圾回收?
    • 2. 计网相关
          • (1) 建立TCP服务器的各个系统调用
          • (2) 继上一题,说明socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?
          • (3) 对路由协议的了解与介绍。内部网关协议IGP包括RIP,OSPF,和外部网关协议EGP和BGP.
          • (4) UDP如何实现可靠传输
          • (5) TCP和UDP的区别
          • (6) TCP和UDP相关的协议与端口号
          • (7) TCP(UDP,IP)等首部的认识(http请求报文构成)
          • (8) 网页解析的过程与实现方法
          • (9) 在浏览器中输入URL后执行的全部过程(如www.baidu.com)重点、热门问题
          • (10) 网络层分片的原因与具体实现
          • (11) TCP的三次握手与四次挥手的详细介绍(TCP连接建立与断开是热门问题)
          • (12) TCP握手以及每一次握手客户端和服务器端处于哪个状态
          • (13) 为什么使用三次握手,两次握手可不可以?(重点,热门问题)
          • (14) TIME_WAIT的意义(为什么要等于2MSL)
          • (15) 超时重传机制(不太高频)
          • (16) TCP怎么保证可靠性?
          • (17) 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)?
          • (18) tcp滑动窗口协议
          • (19) 拥塞控制和流量控制的区别
          • (20) TCP拥塞控制,算法名字?(极其重要)
          • (21) http协议与TCP的区别与联系
          • (22) http/1.0和http/1.1的区别
          • (23) http的请求方法有哪些?get和post的区别。
          • (24) http的状态码 403 201等等是什么意思
          • (25) http和https的区别,由http升级为https需要做哪些操作
          • (26) https的具体实现,怎么确保安全性
          • (27) TCP三次握手时的第一次的seq序号是怎样产生的 (字节提前批)
          • (28) 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办?
          • (29) 对称密码和非对称密码体系
          • (30) 数字证书的了解(高频)
          • (31) 服务器出现大量close_wait的连接的原因以及解决方法
          • (32) 消息摘要算法列举一下,介绍MD5算法,为什么MD5是不可逆的,有什么办法可以加强消息摘要算法的安全性让它不那么容易被破解呢?(百度安全一面)
          • (33) 单条记录高并发访问的优化
          • (34) 介绍一下ping的过程,分别用到了哪些协议 (百度安全等)
          • (35) TCP/IP的粘包与避免介绍一下
          • (36) 说一下TCP的封包和拆包
          • (37) 一个ip配置多个域名,靠什么识别?
          • (38) 服务器攻击(DDos攻击)
          • (39)DNS的工作过程和原理
          • (41)OSA七层协议和五层协议,分别有哪些
          • (42)IP寻址和MAC寻址有什么不同,怎么实现的
    • 3. 数据库
          • (1) 关系型和非关系型数据库的区别(低频)
          • (2) 什么是非关系型数据库(低频)
          • (3) 说一下 MySQL 执行一条查询语句的内部执行过程?
          • (4) 数据库的索引类型
          • (5) 说一下事务是怎么实现的
          • (6) MySQL怎么建立索引,怎么建立主键索引,怎么删除索引?
          • (7) 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)
          • (8) 索引的底层实现(重点)
          • (9) B树和B+树的区别(重点)
          • (10) 索引最左前缀/最左匹配
          • (11) Mysql的优化(高频,索引优化,性能优化)
          • (12) MYSQL数据库引擎介绍,innodb和myisam的特点与区别
          • (13) 数据库中事务的ACID(四大特性都要能够举例说明,理解透彻,比如原子性和一致性的关联,隔离性不好会出现的问题)
          • (14)什么是脏读,不可重复读和幻读?
          • (15) 数据库的隔离级别,mysql和Oracle的隔离级别分别是什么(重点)
          • (16) 数据库连接池的作用
          • (17) Mysql的表空间方式,各自特点
          • (18) 分布式事务
          • (19) 数据库的范式
          • (20) 数据的锁的种类,加锁的方式
          • (21) 什么是共享锁和排他锁
          • (22) 分库分表的理解和简介
          • (23)
          • (24)数据库高并发的解决方案
          • (25)乐观锁与悲观锁解释一下
          • (26)乐观锁与悲观锁是怎么实现的
          • (27)对数据库目前最新技术有什么了解吗
    • 4. Linux
          • (1) Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别(超级重要)
          • (2) 文件系统的理解(EXT4,XFS,BTRFS)
          • (3) EPOLL的介绍和了解
          • (4) IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现?
          • (5) Epoll的ET模式和LT模式(ET的非阻塞)
          • (6) 查询进程占用CPU的命令(注意要了解到used,buf,代表意义)
          • (7) linux的其他常见命令(kill,find,cp等等)
          • (8) shell脚本用法
          • (9) 硬连接和软连接的区别
          • (10) 文件权限怎么看(rwx)
          • (11) 文件的三种时间(mtime, atime,ctime),分别在什么时候会改变
          • (12) Linux监控网络带宽的命令,查看特定进程的占用网络资源情况命令
          • (13)Linux中线程的同步方式有哪些?
          • (14)怎么修改一个文件的权限
          • (15)查看文件内容常用命令
          • (16)怎么找出含有关键字的前后4行
          • (17)Linux的GDB调试
          • (18)coredump是什么 怎么才能coredump
          • (19)tcpdump常用命令
          • (20) crontab命令
          • (21) 查看后台进程
    • 5. 操作系统
          • (1) 进程与线程的区别和联系(重点)
          • (2) Linux理论上最多可以创建多少个进程?一个进程可以创建多少线程,和什么有关
          • (3) 冯诺依曼结构有哪几个模块?分别对应现代计算机的哪几个部分?(百度安全一面)
          • (4) 进程之间的通信方法有哪几种 (重点)
          • (5) 进程调度方法详细介绍
          • (6) 进程的执行过程是什么样的,执行一个进程需要做哪些工作?
          • (6) 操作系统的内存管理说一下
          • (7) 实现一个LRU算法
          • (8) 死锁产生的必要条件(怎么检测死锁,解决死锁问题)
          • (9) 死锁的恢复
          • (10)什么是饥饿
          • (11) 如果要你实现一个mutex互斥锁你要怎么实现?
          • (12)线程之间的通信方式有哪些? 进程之间的同步方式又哪些?
          • (13) 什么时候用多进程,什么时候用多线程
          • (14) 文件读写使用的系统调用
          • (15) 孤儿进程和僵尸进程分别是什么,怎么形成的?
          • (16) 说一下PCB/说一下进程地址空间/
          • (17) 内核空间和用户空间是怎样区分的
          • (18) 多线程是如何同步的(尤其是如果项目中用到了多线程,很大可能会结合讨论)
          • (19) 同一个进程内的线程会共享什么资源?
          • (20) 异常和中断的区别
          • (21) 一般情况下在Linux/windows平台下栈空间的大小
          • (22)虚拟内存的了解
          • (23)服务器高并发的解决方案
          • (24)协程了解吗(高频)
          • (25)那协程的底层是怎么实现的,怎么使用协程?
          • (26)进程的状态以及转换图
          • (27)在执行malloc申请内存的时候,操作系统是怎么做的?/内存分配的原理说一下/malloc函数底层是怎么实现的?/进程是怎么分配内存的?
          • (28)什么是字节序?怎么判断是大端还是小端?有什么用?
    • 6. 场景题/算法题
          • (0) leetcode hot100至少刷两遍,剑指offer至少刷两遍 重中之重!!
          • (1) 介绍熟悉的设计模式(单例,简单工厂模式)
          • (2) 写单例模式,线程安全版本
          • (3) 写三个线程交替打印ABC
          • (4) 二维码登录的实现过程 场景题
          • (5) 不使用临时变量实现swap函数
          • (6) 实现一个strcpy函数(或者memcpy),如果内存可能重叠呢
          • (7) 实现快排
          • (8) 实现一个堆排序
          • (8) 实现一个插入排序
          • (9) 快排存在的问题,如何优化
          • (10) 反转一个链表(招银网络二面)
          • (11) Top K问题(可以采取的方法有哪些,各自优点?)(重点)
          • (12) 8G的int型数据,计算机的内存只有2G,怎么对它进行排序?(外部排序)(百度一面)
          • (13) 自己构建一棵二叉树,使用带有null标记的前序遍历序列
          • (14) 介绍一下b树和它的应用场景有哪些
          • (15) 介绍一下b+树和它的应用场景有哪些
          • (16) 介绍一下红黑树和它的应用场景有哪些
          • (17) 怎么写sql取表的前1000行数据(招银网络二面)
          • (18) N个骰子出现和为m的概率
          • (19) 海量数据问题(可参考左神的书)
          • (20) 一致性哈希
          • (21)希尔排序说一下/手撕
          • (22)Dijkstra算法说一下
          • (23)实现一个动态数组要怎么实现,说思路(腾讯teg一面)
          • (24)最小生成树算法说一下
          • (25) 海量数据的bitmap使用原理
          • (26) 布隆过滤器原理与优点
          • (27) 布隆过滤器处理大规模问题时的持久化,包括内存大小受限、磁盘换入换出问题
          • (28)实现一个队列,并且使它支持多线程,队列有什么应用场景(阿里三面)
    • 7. 智力题
          • (1) 100层楼,只有2个鸡蛋,想要判断出那一层刚好让鸡蛋碎掉,给出策略(滴滴笔试中两个铁球跟这个是一类题)
          • (2) 毒药问题,1000瓶水,其中有一瓶可以无限稀释的毒药,要快速找出哪一瓶有毒,需要几只小白鼠
          • (3)
          • (4) 先手必胜策略问题:100本书,每次能够拿1-5本,怎么拿能保证最后一次是你拿
          • (5) 放n只蚂蚁在一条树枝上,蚂蚁与蚂蚁之间碰到就各自往反方向走,问总距离或者时间。
          • (6) 瓶子换饮料问题:1000瓶饮料,3个空瓶子能够换1瓶饮料,问最多能喝几瓶
          • (7)在24小时里面时针分针秒针可以重合几次
          • (8) 有一个天平,九个砝码,一个轻一些,用天平至少几次能找到轻的?
          • (9) 有十组砝码每组十个,每个砝码重10g,其中一组每个只有9g,有能显示克数的秤最少几次能找到轻的那一组砝码?
          • (10)生成随机数问题:给定生成1到5的随机数Rand5(),如何得到生成1到7的随机数函数Rand7()?
          • (11) 赛马:有25匹马,每场比赛只能赛5匹,至少要赛多少场才能找到最快的3匹马?
          • (12) 烧 香/绳子/其他 确定时间问题:有两根不均匀的香,燃烧完都需要一个小时,问怎么确定15分钟的时长?
          • (13) 掰巧克力问题 N*M块巧克力,每次掰一块的一行或一列,掰成1*1的巧克力需要多少次?(1000个人参加辩论赛,1V1,输了就退出,需要安排多少场比赛)(快手提前批)
    • 8. 大数据
          • 1. 介绍一下Hadoop
          • 2. 说一下MapReduce的运行机制
          • 3. 介绍一下kafka
          • 4. 为什么kafka吞吐量高?/介绍一下零拷贝
          • 5. 介绍一下spark
          • 6. 介绍一下spark-streaming
          • 7. spark的transformation和action有什么区别
          • 8. spark常用的算子说几个
          • 9. 如何保证kafka的消息不丢失
          • 10. kafka如何选举leader
          • 11. 说下spark中的宽依赖和窄依赖
          • 12. 说下spark中stage是依照什么划分的
          • 13. spark的内存管理是怎样的
          • 14. spark的容错机制是什么样的
    • 9. HR面
          • 1. 自我介绍
          • 2. 项目中遇到的最大难点
          • 3. 项目中的收获
          • 4. 可以实习的时间,实习时长
          • 5. 哪里人
          • 6. 说一下自己的性格
          • 7. 你的优缺点是什么
          • 8. 有什么兴趣爱好,画的怎么样/球打的如何/游戏打的怎么样
          • 9. 看过最好的一本书是什么
          • 10. 学习技术中有什么难点
          • 11. 怎么看待加班
          • 12. 觉得深圳怎么样(或者其他地点)
          • 13. 遇见过最大的挫折是什么,怎么解决的
          • 14. 职业规划
          • 15. 目前的offer情况
          • 16. 你最大的优势和劣势是什么
          • 17. 介绍在项目里面充当的角色
          • 18. 介绍一下本科获得的全国赛奖项的情况
          • 19. 最有成就感的事情/最骄傲的一件事情
          • 20. 在实验室中担任什么角色,参加的XXX能聊聊吗
          • 22. 用两个词来形容自己
    cs
    下一篇:没有了