B--站搜索程序员老廖,有更多面试题分享。注:部分面试题分类不一定严格按类别分类。200+道常见面试题。大部分的面试题对于C++后端、桌面开发、嵌入式、音视频开发都是通用的。建议大家根据老廖整理的面试题整理答案,一定要自己整理答案才能把知识转化成自己的能力,只有通过动手动脑才能加深映像。C/C++常见问题:智能指针、多态、虚函数、stl原理。智能指针实现原理智能指针,里面的计数器何时会改变智能指针和管理的对象分别在哪个区(智能指针本身在栈区,托管的资源在堆区,利用了栈对象超出生命周期后自动析构的特征,所以无需手动delete释放资源。面向对象的特性:多态原理介绍一下虚函数,虚函数怎么实现的多态和继承在什么情况下使用除了多态和继承还有什么面向对象方法C++内存分布。什么样的数据在栈区,什么样的在堆区C++内存管理(RAII啥的)C++从源程序到可执行程序的过程一个对象=另一个对象会发生什么(赋值构造函数)如果new了之后出了问题直接return。会导致内存泄漏。怎么办(智能指针,raii)c++11的智能指针有哪些。weak_ptr的使用场景。什么情况下会产生循环引用多进程fork后不同进程会共享哪些资源多线程里线程的同步方式有哪些size_of是在编译期还是在运行期确定函数重载的机制。重载是在编译期还是在运行期确定指针常量和常量指针vector的原理,怎么扩容介绍一下const引用和指针的区别Cpp新特性知道哪些类型转换RAII基于什么实现的(生命周期、作用域、构造析构手撕:Unique_ptr,控制权转移(移动语义)      手撕:类继承,堆栈上分别代码实现多态unique_ptr和shared_ptr区别右值引用函数参数可不可以传右值参考c/c++堆栈实现自己的堆栈。要求:不能用stl容器。stl容器了解吗?底层如何实现:vector数组,map红黑树,红黑树的实现完美转发介绍一下 去掉std::forward会怎样?介绍一下unique_lock和lock_guard区别?C代码中引用C++代码有时候会报错为什么?静态多态有什么? 虚函数原理 虚表是什么时候建立的为什么要把析构函数设置成虚函数?map为啥用红黑树不用avl树?(几乎所有面试都问了map和unordered_map区别)inline 失效场景C++ 中 struct 和 class 区别如何防止一个头文件 include  多次lambda表达式的理解,它可以捕获哪些类型友元friend介绍move函数模版类的作用模版和泛型的区别内存管理:C++的new和malloc的区别new可以重载吗,可以改写new函数吗C++中的map和unordered_map的区别和使用场景他们是线程安全的吗c++标准库里优先队列是怎么实现的?gcc编译的过程C++ Coroutineextern C有什么作用c++ memoryorder/elf文件格式/中断对于操作系统的作C++的符号表C++的单元测试数据结构算法常见问题:链表、排序、二叉树数组和链表区别和优缺点快速排序堆排序是怎么做的冒泡排序二分查找(复杂度)hash表数据很大。rehash的代价很高,怎么办二叉树前序遍历非递归链表反转二叉树输出每一层最右边的节点千万级数组如何求最大k个数?(用最小堆反之最大堆)千万数据范围有限,0到1000,有很多重复的,按频率排序怎么处理?计算二叉树层高。给一个连续非空子数组,找它乘积最大的(动态规划)排序算法. 哪些是稳定的,哪些不稳定的树的深度和高度。一开始分别用了一个层序遍历和一个dfs,然后面试官问能否都在一个dfs里面呢,提示了一下在dfs是否可以传一个参数,然后解决了。布隆过滤器介绍为什么不用布隆过滤器.数据结构相关,图的种类,表示方法,图有哪些经典算法+描述算法求最大的k个数字,解法:优先队列(堆)或者快速排序一个大数问题,解法:转换为字符串解决,这题没写好,leetcode应该有很多类似的问题hash解决冲突 ( 开放定址法、链地址法、再哈希法、建立公共溢出区 ),四种方式详细的过程、思路链地址法和再哈希法之间的关联和区别,两者分别适用场景,两者底层的数据结构,关联和区别链表和数组的底层结构设计、关联、区别、应用场景死锁的概念,进程调度算法怎么解决死锁gdb/gcc/g++怎么debug,怎么看内存泄漏。gdb 使用 -> 多线程程序切换到某线程栈帧 -> 如何查看寄存器值怎么分析C++的core文件GDB有哪些命令gcc和g++的区别Linux下程序有问题,如何调试?(答GDB打开,打上Breakpoint进行调试)设计模式单例模式实现区别策略模式实现操作系统操作系统原理线程和进程的区别、应用场景。多线程中各种锁,读写锁,互斥锁内存池内存管理内存写漏如果频繁进行内存的分配释放会有什么问题吗?如果频繁分配释放的内存很大(>128k),怎么处理?虚拟内存以及堆栈溢出相关的问题,堆栈溢出怎么处理等等。分段和分页的区别进程间通信原理和方式fork()读时共享写时拷贝互斥锁+条件变量如果非堆内存一直在增长,可能哪个区域的内存出了问题(Java)堆和栈的区别。什么情况下会往堆里放fork函数返回值是怎么实现的用户级线程和内核级线程的区别线程池和线程开销线程切换的到底是什么线程同步共享怎么实现互斥同步的方法信号量和自旋锁的区别查看磁盘、cpu 占用、内存占用命令linux虚拟地址空间结构/动态库地址无关代码 top命令排查高占有率进程/top命令的占用率怎么算的谈谈进程创建后在Linux中的内存分布?(回答内存四区,虚拟地址空间,栈内存堆内存)在Linux系统下,使用for循环,一直进行new操作,会发生heap-overflow吗?如果不会,原因呢?(答应该不会,Linux系统可能会对此情况进行处理,面试官追问如果不用C++而用Java呢,答Java虚拟机等,胡扯了一些)死锁的概念,进程调度算法怎么解决死锁讲讲进程管理系统编程除了MQ和websocket之外,你还能想到什么异步通信的办法?为什么要用多线程。多进程可以吗(webserver的)为什么要用线程池,线程池中的线程是怎么运作的?生产者消费者,信号量的使用队列空时,消费者和生产者会发生什么线程池请求队列是用什么实现的?(链表).C++多线程并发问题(场景千万级数量级怎么处理)哪几种常见的 signal? SIGSEGV... -> 正常终止程序的信号?-> kill 进程,几号信号?什么情况下会使用静态变量多线程读写同一个静态变量你是怎么解决的用过无锁编程吗,知道原子量吗定时器小根堆定时器是怎么弄的。如果一次pop一个的话。高并发情况下会不会有问题心跳检测如何实现为什么用小根堆实现定时器网络网络原理为什么握手是三次而挥手需要四次tcp和udp的原理、区别、应用场景。TCP慢启动,拥塞控制实现HTTP是在OSI模型的哪一层HTTPS用到的是对称加密还是非对称加密?分别体现在哪里?http2和http1的区别http1.0 / 1.1 / 2 / 3get和post区别WebSockttcp/ip五层模型dns服务器用的是什么协议。ping命令 用的是什么协议。在哪一层。能详细讲一下有限状态机怎么解析http报文吗如果解析http请求的时候,用户一次性没传完数据,(如果头部都没传完,请求报文长度字段都没传完,怎么办)路由表说一下路由表为空怎么找到下一跳粘包拆包是什么,发生在哪一层TCP在什么情况下会出现大量time_wait,哪个阶段出现TCP 包头字段... 标志位-> 建立连接过程,终止连接过程-> TIME_WAIT, CLOSE_WAIT 分析,属于哪一方?TCP 建立连接过程 -> SYN + ACK 包能不能拆开来发讲讲quic/听说过哪些快速重传算法/timewait状态干啥用的提到了TCP,黏包怎么解决?(固定包头接收,指定内存长度)查看网络状况(以为是netstate,其实是ping、traceroute,紧张忘记说了)抓包工具?(wireshark,紧张又给忘了靠)TCP 2MSL说一下,为什么网络编程为什么要用epollepoll实现原理,epoll使用的哪种模式, 除了epoll,了解select/poll吗怎么理解多路复用机制的reactor和proactor的好处和坏处。为什么要用reactor而不用proactorselect怎么用。底层原理select为什么只能支持1024个。poll和epoll是怎么解决这个问题的。epoll 底层为什么用红黑树不用hashET和LT的区别、IO多路复用游戏中数据传输用啥协议(有没有改进的协议,基于UDP的可靠传输)项目架构(webserver)两种高并发模式(问的很细)除了Reactor模型,还有什么模型数据库MySQL有哪些引擎数据库的架构不同引擎对索引的支持InnoDB和MyISAM的区别隔离级别最左前缀原则MySQL的集群是用什么样的方式去增加并发量除了读写分离还有吗?mysql的隔离级别和锁。数据库delete和trancate区别(这个trancate没用过,没说出来)mysql索引(B+树)B树和B+树的区别B+树树高怎么算?树高为4能支持多少数据量数据库ACID怎么实现binlog记录的是什么mysql的ACLS(事务)mysql的mvccmysql锁,每个锁的应用场景什么情况下会照成死锁,举个例子事务安全(隔离级别)你的项目死锁怎么检测的数据库三大范式(忘了)如何加快数据检索的效率.注册登陆的用户名和密码存在哪里?(数据库)面试官灵魂4连问:乐观锁与悲观锁的概念、实现方式、场景、优缺点?哪几种常见的 signal? SIGSEGV... -> 正常终止程序的信号?-> kill 进程,几号信号?一千五百万行数据如何快速找到某一行数据,给出方案,设计数据库表结构sql优化事务什么情况下使用读已提交对于脏读的理解慢查询怎么看,怎么优化联合索引(a,b,c),where a, b, c和where b, a, c区别是否了解db底层redisredis有什么数据结构设计一个存储字符串kv对的数据结构,要考虑并发和持久化存储redis 基本数据结构... zset-> zset 底层实现?-> skiplist 和 red-black tree 对比?对于redis的理解redis在项目中进行怎么样的使用redis 为什么读取速度那么块 (io、单线程、内存)为什么redis单线程会快 (完全基于内存、单线程避免不必要的上下文切换、cpu消耗、加锁问题。。。)对于很多文件和数据,怎么进行数据的查找、排序,使用什么样的数据结构 (类似于TopK、这个主要是让你进行优化、类似于位图、hash、过滤器之类的)服务器开发用户认证和鉴权(jwt)从url下图片10000张图片(写了想法,代码没写出来,http的api忘了),10台机器并行下载,怎么实现(主线程给子线程分配下载任务,从线程池取(给自己挖坑))。雪花算法原理分布式锁redis和MySQL数据一致性相关设计长短连接的区别和应用场景RAII实现数据库连接池,怎么实现的http服务器,他的目标是什么,通过什么方式实现的负载均衡的一些场景问题为什么用vector实现缓冲区,有没有想过别的数据结构rpcgrpc怎么用的为什么grpc速度快rpc调用流程和机制,rpc超时计时器在什么位置,如果调用超时了怎么处理,当前连接还能继续使用吗开放性问题项目相关介绍自己的c++项目,遇到的难点,实现了那些功能看过源码嘛,轻量级服务器项目计算机基础知识是怎么去补滴,之后的技术/职业规划物联网有个简版的MQ协议叫做MQTT,你可以想一下扫码支付使用的机器,这些机器的服务器是怎么做到跟这千万级别的客户端通信的?你扫码支付完之后,服务器是怎么精准返回你这个客户端说它收到了多少钱?情景题。手机店。不同品牌的不同型号手机有不同的业务逻辑。怎么设计系统如果有两个服务器,一个服务器坏了,另一个服务器怎么判断并接手坏的服务器的用户数据(共用一个堆)服务器进行过压测么场景设计问题,UDP设计安全可靠的文件传输客户端资源下载到一半突然网络中断怎么办,有进行处理吗?有进行过压力测试吗?在学校里或者公司中最有成就感的事。井盖为什么是圆的音视频相关音视频的编解码和同步问题能讲一下吗你遇到过解码卡顿的情况吗参考文章部分参考文章:https://www.nowcoder.com/feed/main/detail/61c62b0d97974a93a77030aeb278f880https://www.nowcoder.com/discuss/501752554045308928https://www.nowcoder.com/feed/main/detail/a4bcfe4ed24247019cbdbd176c2cb0b8https://www.nowcoder.com/feed/main/detail/7b2e7b35e3ff4893aa2623b761103f15https://www.nowcoder.com/feed/main/detail/b11ab7e902324190a96bd33c79b1f8c1还有其他的文章太多了,如果侵权请告知删除。
点赞 43
评论 3
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务