C++后台开发面试题总结(涉及C++基础知识、多线程多进程、TCP/IP网络编程、Linux操作、数据结构与算法)因巩固知识体系,面试,梳理以往看到过的知识点,故总结如下相关题目,题目答案请自行google baidu,这里只提供题目。一、C++基础知识面试题总结1、多态的实现2、说说C/C++的区别3、const关键字4、说说malloc/free 和 new/delete区别5、指针和引用的区别6、C++中堆和栈的区别7、关键字static8、在C++程序中调用被C语言修饰的函数,为什么要加extern “C”9、如何防止头文件被重复包含10、什么是内存泄漏?什么是野指针?什么是内存越界?如何避免?11、描述一下封装、继承、多态12、堆栈缓存方式的区别13、STL容器有哪些,常用的算法14、什么是面向对象15、用过的设计模式,简单举几个例子16、如何理解智能指针,什么时候改变引用计数17、share_ptr与weak_ptr的区别与联系18、表述下string的Copy-On-Write技术,写时copy19、描述下C++的浅copy,深copy,写时copy和引用计数的copy20、C++构造函数是否可以抛出异常21、是否在析构函数抛出异常22、构造函数中,成员变量一定要通过初始化列表来初始化的23、volatile的作用24、构造函数和析构函数可以调用虚函数吗25、内存对齐的原则26、内联函数有什么优点?内联函数和宏定义的区别27、数组与指针的区别与联系,函数指针,指针函数,指针数组,数组指针28、STL set 和 map都是基于什么实现的29、常见的内存错误及其对策30、三种内存对象的比较31、C++内存泄露及检测工具32、什么时候要用虚析构函数33、#include<a.h> 与#include”a.h”的区别34、什么是RTTI (Run-time type identification)35、引用作为函数参数有哪些特点36、在什么时候需要使用常引用37、将引用作为函数返回值类型的格式、好处和需要遵守的规则38、结构体和联合体的区别39、重载和重写的区别40、栈内存与文字常量区41、struct和class的区别42、如何判断浮点数是否相等,LONG呢43、不允许重载的5个运算符44、拷贝构造函数在哪几种情况下会被调用45、什么时候必须重写拷贝构造函数46、静态成员函数存在的意义47、流运算符为什么不能通过类的成员函数重载48、当一个类中没有任何成员变量和成员函数,这时sizeof(A)的A值是多少,49、如果不是零,请解释一下编译器为什么没有让他为零50、多态的作用51、什么函数不能声明为虚函数52、系统会自动和关闭的3个标准的文件是53、说出字符常量和字符串常量的区别,并使用sizeof 计算有什么不同54、Windows消息系统由哪几部分构成55、assert()的作用56、Windows的消息机制57、SendMessage和PostMessage的区别58、Dll和lib的区别59、多线程如何实现通讯,如何进行同步60、stl实现了那些排序算法61、一元、二元仿函数的区别和使用背景62、智能指针可以放到容器中么63、请简述Windows内存管理的方式64、strcpy和memcpy使用时的注意事项,strncpy、memncpy的区别65、const和static能同时修饰成员函数吗66、何时编译器会自动生成默认构造函数67、何时编译器会自动生成拷贝构造函数68、动态链接库和静态链接库的区别69、描述一下函数调用的整个过程70、C++ STL vector的实现机制71、面向对象是一种思想,如何使用C语言来实现72、C++有哪些数据类型,为什么long和int都是4字节73、Java和C++的区别是什么,分别用在什么场景比较好74、函数调用类型_cedecl,_stdcall,_fastcall75、什么是序列化和反序列化76、用预处理指令声美一个常数,用以表明1年终有多少秒77、strtok函数在使用上要注意什么问题78、char * const p ,char const * p, char const * const p区别79、介绍一下右值引用和移动语义和完美转发80、说说你使用的C++11的特性81、如何区分左值和右值82、为什么C++访问虚函数比访问普通函数慢83、为什么需要纯虚函数84、内联函数、构造函数、静态成员函数可以是虚函数么85、析构函数可以调用虚函数,构造函数为什么不可以调用虚函数86、析构函数可以是纯虚的么87、为什么需要虚继承,虚继承的实现原理88、迭代器和普通自指针有什么区别89、C++4种类型转换90、如何定义一个只能在堆上创建的类,如何定义一个只能在栈上创建的类91、标准库函数和系统调用的区别92、如何区分一段代码是C++还是C代码编写的93、什么是回调函数,回调函数的使用场景94、临时对象在什么时候会产生95、说一下C++的返回值优化96、protected,public,private在继承中的可见性97、C++中为什么用模板类98、子类不能继承父类的函数有哪些99、虚函数的内存结构,菱形继承的虚函数内存结构100、谈谈stl标准库的线程安全性101、成员函数里memset(this,0,sizeof(*this))会发生什么102、share_ptr的线程安全性103、vector资源释放C++后端面试八股文,不仅仅是面试题,刷完就业!二、线程进程面试题总结1、程序什么时候应该使用线程,什么时候单线程效率高2、惊群现象3、C++函数内的静态变量初始化以及线程安全问题4、C++线程安全的单例类5、多线程环境带有状态的对象的讨论6、C++多线程加volatile的错误认识7、并行编程中多进程和多线程,什么情况下多进程能解决的多线程无法解决8、如何证明一个数据结构是线程安全的9、lock-free的实现方式10、锁的实现方式11、多线程编程的时候,使用无锁结构会不会比有锁结构更加快12、linux线程是如何进行切换的13、Linux 开发,使用多线程还是用 IO 复用 select/epoll14、异步,多线程和并行的区别15、Linux 下多线程和多进程程序的优缺点,各自适合什么样的业务场景16、开发多线程的程序应该注意哪些问题17、如何测试线程池的性能18、死锁的原因和避免19、如何理解互斥锁,条件锁,读写锁以及自旋锁20、互斥锁,同步锁,临界区,互斥量,信号量,自旋锁之间联系是什么21、pthread_cond_wait 为什么需要传递 mutex 参数22、多线程网络编程中如何合理地选择线程数23、malloc和free是线程安全的吗,在多线程开发时用这两个函数应该注意什么24、僵尸进程和孤儿进程有什么区别、如何处理25、Linux系统中 进程 、线程 、时间片的关系26、在Linux系统中,对于用户创建的进程(线程)来说,CPU分配时间片的单位是线程还是进程27、内核级调度和用户级调度28、Linux中进程具有父子层次结构,Windows中没有进程层次,这两种设计各有什么优劣29、linux用户级进程跟内核线程(进程)有什么差别30、为什么要区分用户态和内核态31、从用户空间到内核空间有以下触发手段32、进程的内存空间布局33、进程间通信(IPC)方式34、进程空间和内核空间对内存的管理不同35、虚拟内存的作用36、虚拟内存的实现37、Linux的slab层38、fork与vfork区别39、exit()与_exit()区别40、Linux是如何避免内存碎片的41、共享内存的实现原理42、银行家算法43、linux中断响应机制44、如何实现守护进程45、32位系统一个进程最多有多少堆内存46、线程安全和不安全的讨论47、可重入函数与线程安全的区别与联系48、双重检查锁定模式(DCLP)的风险49、内存屏障详解50、原子操作原理51、Linux有内核级线程么52、使用线程是如何防止出现大的波峰53、操作系统中进程调度策略有哪几种54、线程与进程的区别和联系 线程是否具有相同的堆栈 dll是否有独立的堆栈55、读者-写者问题56、哲学家进餐问题57、进程状态的切换图视频讲解:面试高频技术:专为性能而生,linux c/c++开发必学的几个高性能组件(线程池、内存池、自旋锁、互斥锁、原子操作、定时器、内存泄漏、分布式锁)三、TCP/IP网络编程面试题总结1、网络体系结构2、TCP和UDP有什么区别3、编写socket套接字的步骤4、TCP三次握手和四次挥手,以及各个状态的作用5、Http协议和TCP的区别6、同步IO和异步IO的区别7、什么是IOCP8、什么是网络套接字(Socket)?流套接字(SOCK_STREAM)基于什么协议9、IP首部、TCP首部、UDP首部、以太网首部10、TCP和UDP的应用场景11、如何实现可靠的UDP12、详细说明TCP状态迁移过程13、2MSL是什么状态?作用是什么14、三次握手为什么不是两次或者四次15、TCP重发机制16、说说Nagle算法17、TCP拥塞控制18、TCP的滑动窗口19、域名解析的过程20、ARP的机制21、RARP的实现22、http/https 1.0 1.1 2.0的特点和区别23、Get/post的区别24、Http返回状态码25、Http协议相关头26、浏览器中输入一个URL发生什么,用到那些协议27、五种IO模型28、select,poll,epoll的区别29、UDP中一个包的大小最大能多大30、Time_wait,close_wait状态产生的原因,keeplive31、列举你所知道的TCP选项32、Connect会阻塞检测及防止,socket什么情况下可读33、如果select返回可读,结果只读到0字节,什么情况34、socket什么情况下可读35、Keepalive是什么东西,如何使用36、UDP使用connect的好处37、各层对应的网络设备(路由器、交换机、网关、网桥、集线器等),各层对应的协议38、数据链路层的CSMA/CD协议39、IP地址的分类,子网划分40、TCP精髓问题:停止等待协议、连续ARQ协议41、HTTP缓存机制(cache-control、Expires之类的一系列请求与相应的报头字段42、session和cookied 区别,禁用cookie后怎么办43、常用协议的端口44、三层交换机和路由器的区别45、什么是TCP的自连接,如何解决46、单播、多播(组播)和广播的区别47、当应用程序调用Send之后怎么判断对方是否成功接收48、静态路由和动态路由各自的优缺点49、路由器和交换机的不同之处有哪些50、为什么有时ping服务器第一包丢失51、tcp 阻塞socket send recv需要注意的操作52、TCP封包和拆包53、怎样理解阻塞非阻塞与同步异步的区别54、epoll:EPOLLLT和EPOLLET的区别55、epoll事件驱动框架使用注意事项56、Linux-socket的close和shutdown区别及应用场景57、TCP带外数据58、网桥的作用59、防火墙的端口防护60、有哪些私有保留地址61、Ping命令使用的那种报文62、两台笔记本电脑连起来后ping不通,你觉得有哪些问题造成的63、Vlan的特点64、ICMP是属于什么协议,处于那一层65、IP组播有什么好处66、DNS欺骗的方式67、reactor和proactor的区别68、两台机器A-B进行TCP通讯,进程崩溃会怎么样进程死锁会怎么样进程或机器过载,反应变慢会怎么样进程死循环,拼命发消息会怎么样机器重启会怎么样机器死机会怎么样机器网卡抽风,丢包严重会怎么样交换机或路由器坏了或过载会怎么样路由器过热重启会怎么样A和B之间的带宽被别的服务占用了会怎么样如何诊断以上这些情况。如果A和B之间有防火墙,还会出哪些情况。69、Linux 中每个 TCP 连接最少占用多少内存70、TCP 能否发送0字节的数据包71、tcp 协议中为什么syn会消耗一个序号72、tcp/ip数据包在互联网传输过程中,有哪些头会保持不变73、linux/unix socket编程并发时什么时候用进程(fork),什么时候用线程(池)74、如何测量网络发送速度75、如果将同一个listening socket加入多个epoll, 是不是一种合理的设计?76、Tcp客户端的正确关闭方式77、对一个已经关闭了的socket 的Server 调用write操作78、怎样实时判断socket链接状态79、socket套接字在多线程发送数据时要加锁吗80、TCP中已有SO_KEEPALIVE选项,为什么还要在应用层加入心跳包机制81、TCP 协议下 socket 有可能丢包吗82、如何理解 TCP/IP, SPDY, WebSocket 三者之间的关系83、为什么每台电脑都要设置子网掩码84、为什么以太网无法接收大于1500字节的数据包85、OSI七层模型中,每一层的数据包都是谁生成和解包的86、为什么网关与主机可以不在同一个网段87、NAT和DHCP 的区别是什么88、OSI模型中,一个协议应该属于哪一层是以什么为标准划分的101、TCP三次握手的过程,seq的变化是一直都是加1吗102、使用Linuxepoll模型,水平触发模式;当socket可写时,会不停的触发socket可写的事件,如何处理视频讲解:3天学会linux c/c++高性能网络编程,多案例解析,附面试网络八股文!!(socket、tcp/ip、udp、epoll、网络io、协程...)四、Linux操作面试题1、与CPU、内存、磁盘相关的命令(top free df fdisk)2、与网络相关的命令netstat , tcpdump等3、sek,awk,grep三个强大的命名,分别用与格式化修改,统计,和正则查找4、ipcs和ipcrm命令5、查找当前目录以及字母下以.c结尾的文件,且文件中包含”hello world”的文件的路径6、创建定时任务7、gdb用法8、linux的内存管理机制9、/proc存在哪里10、Linux状态分析:CPU(top)、内存(top和free,注意buffer和cache区别)、磁盘(fdisk和df)、IO(iostat)等11、shell脚本12、Linux目录结构13、linux中断响应机制14、linux文件系统结构和启动流程15、防火墙iptables16、轮询任务调度和抢占式任务调度的区别17、查看进程ps ps aux18、删除进程kill -919、查看进程树pstree20、查看占用端口的进程netstat netstat -anp | grep port21、正则表达式grep printf awk22、管线指令 ls -al /etc | less23、sort 进行排序24、双向输出重定向25、打包压缩26、目录的 inode 与 block27、实体链接与符号链接28、文件系统的组成29、文件与目录的基本操作30、文件属性以及权限的修改31、分区32、内核模块的位置在哪里33、SMTP, DNS, FTP, DHCP, SSH 和 squid 使用的默认端口号是哪些34、Linux中不同的网络绑定模式有哪些35、如何检查默认路由以及路由表36、在Linux 中什么是平均负载37、请描述Linux系统优化的12个步骤38、描述Linux下软链接和硬链接的区别39、描述Linux下文件删除的原理40、给出正确的关机和重启服务器的命令41、请简述修改/etc/sudoers配置文件的注意事项42、如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤43、请简述Linux启动过程中几个重要配置文件的执行过程44、请输出你知道的20 个LINUX 命令及作用45、企业中Linux服务器系统分区标准是什么46、某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤47、某一天误操作,执行了rm-rf* ,会有哪些情况发生?请举例48、一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件49、Linux内核引导时,从哪个文件中读取要加载的文件系统50、Linux文件系统中每个文件用 i节点 来标识51、简述网络文件系统NFS,并说明其作用52、简述DNS进行域名解析的过程53、简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程54、nfs 协议用于实现Unix(/linux)主机之间的文件系统共享55、欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数56、进程的运行有两种方式,即独立运行和使用父进程运行57、vi编辑器具有两种工作模式命令模式和输入模式58、vi的使用59、内核分为进程管理系统内存管理系统I/O管理系统和文件管理系统等四个子系统60、安装Linux系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区视频讲解:深入剖析linux内核,B站最通俗易懂的linux内核教程,不烧脑,真正帮你透彻理解linux内核!五、数据结构与算法1、单链表的逆置2、常见排序算法和稳定性,效率分析3、静态链接和动态链表的区别4、海量数据处理的知识点5、AVL树和R-B树的查找,插入,删除的效率,区别 //数据结构的内容6、判断一个链表是否存在循环7、寻找最大的K个数8、统计数组中出现最多的数9、字符串匹配10、二分查找11、实现Strcpy12、实现快速排序13、建堆,建堆的时间复杂度14、HASH策略常见的有哪些15、HASH表实现16、二叉树结构,二叉查找树的实现17、二叉树的六种遍历18、二叉树的按层遍历19、编写简单的String类20、编写strcpy、strcat、strcmp、memcpy、memmove21、求二叉树的深度22、判断一棵二叉树是否是平衡二叉树23、求二叉树第K层节点个数24、求二叉树中两个节点的最大距离25、判断一棵二叉树是否为完全二叉树26、重建二叉树,依据前序遍历结果和中序遍历结果27、实现简单的智能指针28、实现stl::string的写时copy29、什么是大小端模式,编写代码区分大小端30、链表的插入删除、单向链表、双向链表31、反向打印链表32、打印倒数第K个节点33、链表是否有环34、冒泡、选择、插入、快速、归并、堆排序、希尔、桶35、背包问题36、深度优先、广度优先、单源最小路径、任意两点最小路径37、最大堆、最小堆、堆如何调整38、两个有序数组求中位数39、最长上升子序列40、海量数据排序41、链表翻转42、最长公共子序列43、海量数据topk问题44、蓄水池抽样算法45、排序算法性能比较,时间复杂度、稳定性、比较46、1-100之间所有素数之和47、队列的实现48、字符串匹配49、数组存储超大数50、回文字符串51、判断两个数组是否有相同的数字52、大数据中找中位数53、B树、B+树、红黑树、AVL树54、单链表排序55、查找链表中间节点56、删除无头非尾节点57、约瑟夫环58、如何从100万个数中找出最大的前100个数59、找出数组中重复的数字60、计算斐波那契数列61、滑动窗口的最大值62、0~n-1 中缺失的数字63、连续子数组的最大和64、删除链表中重复的节点65、矩阵中的路径66、调整数组顺序使奇数位于偶数前面67、最长不重复子串68、天平不平衡找假币问题69、栈的逆序70、数组的逆序对71、二叉搜索树的第K个节点72、树上最远距离73、折纸问题74、根据前序和中序遍历求后序75、完全二叉树判断、平衡二叉树判断、二叉查找树判断76、荷兰国旗问题77、字符串-全排列问题78、无环链表判断相交79、用两个栈实现队列80、最大连续数列和81、矩阵取值问题82、最大和子矩阵83、最长公共子序列和最长递增子序列84、最小编辑代价85、动态规划和递归-魔术索引86、确定字符串互异87、基本字符压缩88、空格替换89、确定两个字符串乱序同构90、A+B问题91、尾部的零92、第K大元素93、有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序,来求出一共有多少种走法。94、一个有getMin功能的栈95、从上往下打印二叉树的每个节点,同层节点从左到右96、最长单词(Lintcode)97、单例(Lintcode)98、Fizz Buzz问题(LintCode)99、二分查找100、N皇后问题视频讲解:**********************************************************************
点赞 16
评论 1
全部评论

相关推荐

牛客10001:G了+1,被前端/客户端给捞起来了,不太想面
投递美团等公司6个岗位 美团求职进展汇总
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-08 19:53
已编辑
AAA不喝拿铁:海投吧,感觉项目写的可以了,能cover住提问就行。我根据真实面经整理得到的最全(高/中/低频)面试题,适合面试前短期突击&长期提高补充,需要的牛u可以关注一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务