c++服务器笔试题编程_史上最全!C++后端开发⾯试题与知识
点汇总(附答案)
以下汇总C++后台开发⾯试题与知识点,还有其他岗位的相关题库和资料,想要什么岗位的可以留⾔哦~
附⾯试题⽬:
⼀、基础知识
bootstrap的开发者是1、基本语⾔
说⼀下C++和C的区别说⼀下C++中static关键字的作⽤说⼀说c++中四种cast转换请说⼀下C/C++ 中指针和引⽤的区别?给定三⾓形ABC和⼀点P(x,y,z),判断点P是否在ABC内,给出思路并⼿写代码怎么判断⼀个数是⼆的倍数,怎么求⼀个数中有⼏个1,说⼀下你的思路并⼿写代码请你说⼀下你理解的c++中的smart pointer四个智能指针:请回答⼀下数组和指针的区别请你回答⼀下野指针是什么?请你介绍⼀下C++中的智能指针请你回答⼀下智能指针有没有内存泄露的情况请你来说⼀下智能指针的内存泄漏如何解决请你回答⼀下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数请你来说⼀下函数指针请你来说⼀下fork函数请你来说⼀下C++中析构函数的作⽤请你来说⼀下静态函数和虚函数的区别请你来说⼀说重载和覆盖请你说⼀说strcpy和strlen请你说⼀说你理解的虚函数和多态请你来回答⼀下
++i和i++的区别请你来写个函数在main函数执⾏前先运⾏请你来说⼀下智能指针shared_ptr的实现请你来说⼀下C++⾥是怎么定义常量的?常量存放在内存的哪个位置?请你来回答⼀下const修饰成员函数的⽬的是什么?如果同时定义了两个函数,⼀个带const,⼀个不带,会有问题吗?请你来说⼀说隐式类型转换说说你了解的类型转换请你来说⼀说C++函数栈空间的最⼤值请你来说⼀说
extern“C”请你回答⼀下new/delete与malloc/free的区别是什么请你说说你了解的RTTI请你说说虚函数表具体是怎样实现运⾏时多态的?请你说说C语⾔是怎么进⾏函数调⽤的?请你说说C语⾔参数压栈顺序?请你说说C++如何处理返回值?请你回答⼀下C++中拷贝赋值函数的形参能否进⾏值传递?请你回答⼀下malloc与new区别请你说⼀说select请你说说fork,wait,exec函数请你回答⼀下静态函数和虚函数的区别
2、容器和算法
请你来说⼀下map和set有什么区别,分别⼜是怎么实现的请你来介绍⼀下STL的allocaotr请你来说⼀说STL迭代器删除元素请你说⼀说STL中MAP数据存放形式请你讲讲STL有什么基本组成请你说说STL中map与unordered_map请你说⼀说vector和list的区别,应⽤,越详细越好请你来说⼀下STL中迭代器的作⽤,有指针为何还要迭代器请你说⼀说epoll原理n个整数的⽆序数组,到每个元素后⾯⽐它⼤的第⼀个数,要求时间复杂度为O(N)请你回答⼀下STL⾥resize和reserve的区别请你说⼀说stl⾥⾯set和map怎么实现的
3、类和数据抽象
请你来说⼀下C++中类成员的访问权限请你来说⼀下C++中struct和class的区别请你回答⼀下C++类内可以定义引⽤数据成员吗?
execute方法作用4、⾯向对象与泛型编程
请你回答⼀下什么是右值引⽤,跟左值⼜有什么区别?
5、编译与底层
请你来说⼀下⼀个C++源⽂件从⽂本到可执⾏⽂件经历的过程?请你来回答⼀下include头⽂件的顺序以及双引号””和尖括号的区别?请你回答⼀下malloc的原理,另外brk系统调⽤和mmap系统调⽤的作⽤分别是什么?请你说⼀说C++的内存管理是怎样的?请你来说⼀下
C++/C的内存分配请你回答⼀下如何判断内存泄漏?请你来说⼀下什么时候会发⽣段错误请你来回答⼀下什么是memory leak,也就是内存泄漏请你来说⼀下共享内存相关api请你来说⼀下reactor模型组成请⾃⼰设计⼀下如何采⽤单线程的⽅式处理⾼并发请你说说C++如何处理内存泄漏?请你说说select,epoll的区别,原理,性能,限制都说⼀说请你说⼀说C++ STL 的内存优化、6、C++11
请问C++11有哪些新特性?请你详细介绍⼀下C++11中的可变参数模板、右值引⽤和lambda这⼏个新特性。
⼆、操作系统
你说⼀下进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各⾃⼜是怎么同步的你说⼀说Linux虚拟地址空间你说⼀说操作系统中的程序的内存结构你说⼀说操作系统中的缺页中断你回答⼀下fork和vfork的区别问如何修改⽂件最⼤句柄数?你说⼀说并发(concurrency)和并⾏(parallelism)问MySQL的端⼝号是多少,如何修改这个端⼝号你说⼀说操作系统中的页表寻址请你说⼀说有了进程,为什么还要有线程?请问单核机器上写多线程程序,是否需要考虑加锁,为什么?请问线程需要保存哪些上下⽂,SP、PC、EAX这些寄存器是⼲嘛⽤的请你说⼀说线程间的同步⽅式,最好说出具体的系统调⽤请你说⼀下多线程和多进程的不同请你说⼀说进程和线程的区别游戏服务器应该为每个⽤户开辟⼀个线程还是⼀个进程,为什么?请你说⼀说OS缺页置换算法请你说⼀说进程和线程区别请你说⼀下多进程和多线程的使⽤场景请你说⼀说死锁发⽣的条件以及如何解决死锁请问虚拟内存和物理内存怎么对应请你说⼀说操作系统中的结构体对齐,字节对齐请问进程间怎么通信请你说⼀下虚拟内存置换的⽅式请你说⼀下多线程,线程同步的⼏种⽅式请你讲述⼀下互斥锁(mutex)机制,以及互斥锁和读写锁的区别请回答⼀下进程和线程的区别请你说⼀说进程状态转换图,动态就绪,静态就绪,动态阻塞,静态阻塞A a = new A; a->i = 10;在内核中的内存分配上发⽣了什么?给
你⼀个类,⾥⾯有static,virtual,之类的,来说⼀说这个类的内存分布请你回答⼀下软链接和硬链接区别请问什么是⼤端⼩端以及如何判断⼤端⼩端请你回答⼀下静态变量什么时候初始化请你说⼀说⽤户态和内核态区别请问如何设计server,使得能够接收多个客户端的请求死循环+来连接时新建线程的⽅法效率有点低,怎么改进?请问怎么唤醒被阻塞的socket线程?请问怎样确定当前线程是繁忙还是阻塞?空闲的进程和阻塞的进程状态会不会在唤醒的时候误判?请问就绪状态的进程在等待什么?请你说⼀说多线程的同步,锁的机制两个进程访问临界区资源,会不会出现都获得⾃旋锁的情况?假设临界区资源释放,如何保证只让⼀个线程获得临界区资源⽽不是都获得?windows消息机制知道吗,请说⼀说C++的锁你知道⼏种?说⼀说你⽤到的锁请你说⼀说死锁产⽣的必要条件?请你说⼀说什么是线程和进程,多线程和多进程通信⽅式请你说⼀说内存溢出和内存泄漏进程和线程的区别,你都使⽤什么线程模型请你来说⼀说协程系统调⽤是什么,你⽤过哪些系统调⽤请你来⼿写⼀下fork调⽤⽰例请你来说⼀说⽤户态到内核态的转化原理请你说⼀下源码到可执⾏⽂件的过程请你来说⼀下微内核与宏内核你说⼀下僵⼫进程请问GDB调试⽤过吗,什么是条件断点请你来介绍⼀下5种IO模型请你说⼀说异步编程的事件循环请你回答⼀下操作系统为什么要分内核态和⽤户态请你回答⼀下为什么要有page \,操作系统怎么设计的page \server端监听端⼝,但还没有客户端连接进来,此时进程处于什么状态?请问如何设计server,使得能够接收多个客户端的请求死循环+来连接时新建线程的⽅法效率有点低,怎么改进?就绪状态的进程在等待什么?请你说⼀下多线程的同步,锁的机制两个进程访问临界区资源,会不会出现都获得⾃旋锁的情况?假设临界区资源释放,如何保证只让⼀个线程获得临界区
资源⽽不是都获得?请问怎么实现线程池Linux下怎么得到⼀个⽂件的100到200⾏请你来说⼀下awk的使⽤请你来说⼀下linux内核中的Timer 定时器机制三、计算机⽹络
你的研究⽅向是⽆线传感器⽹络,请问怎么确保节点传输存储的可靠性请你说⼀下TCP怎么保证可靠性,并且简述⼀下TCP建⽴连接和断开连接的过程请你说⼀说TCP的模型,状态转移请回答⼀下HTTP和HTTPS的区别,以及HTTPS有什么缺点?请你说⼀说HTTP和HTTPS的不同请你说⼀说HTTP返回码请你说⼀说IP地址作⽤,以及MAC地址作⽤请介绍⼀下操作系统中的中断请回答OSI七层模型和TCP/IP四层模型,每层列举2个协议请你说⼀说TCP的三次握⼿和四次挥⼿的过程及原因搜索baidu,会⽤到计算机⽹络中的什么层?每层是⼲什么的请你说⼀说TCP拥塞控制?以及达到什么情况的时候开始减慢增长的速度?请问TCP⽤了哪些措施保证其可靠性请你说说TCP/IP数据链路层的交互过程请你说说传递到IP层怎么知道报⽂该给哪个应⽤程序,它怎么区分UDP报⽂还是TCP报⽂请问你有没有基于做过socket的开发?具体⽹络层的操作该怎么做?(其实就是⽹络编程的基本步骤)请问server端监听端⼝,但还没有客户端连接进来,此时进程处于什么状态?请问TCP三次握⼿是怎样的?请问tcp握⼿为什么两次不可以?为什么不⽤四次?请你来说⼀下TCP拥塞控制?TCP和UDP的区别和各⾃适⽤的场景请你来说⼀下TCP三次握⼿四次挥⼿的过程,为什么tcp连接握⼿需要三次, time_wait状态请你来说⼀说http协议请你来说⼀下GET和POST的区别请你来说⼀下socket编程中服务器端和客户端主要⽤到哪些函数请你来说⼀下数字证书是什么,⾥⾯都包含那些内容请你来介绍⼀下UDP的connect函数
全套android 基础教程请你讲述⼀下TCP三次握⼿,四次挥⼿,以及为什么⽤三次握⼿?请你说⼀下阻塞,⾮阻塞,同步,异步请你讲述⼀下Socket编程的send() recv() accept() socket()函数?请你说⼀下http协议会话结束标志怎么截出来?请你说⼀说三次握⼿请你说⼀说四次挥⼿请你说⼀说TCP/IP数据链路层的交互过程四、数据库
1、数据库基础
加入域管理怎样启用本地管理员请你说⼀下数据库事务以及四个特性请你说⼀说数据库的三⼤范式请你介绍⼀下数据库的ACID特性请你说⼀说数据库索引请你说⼀说数据库事务请你说⼀说数据库事务隔离请你说⼀说inner join和left join请你聊⼀聊数据库事物的⼀致性请你说说索引是什么,多加索引⼀定会好吗k-v存储中,key有哪些要求?介绍数据库中的WAL技术
2、Mysql
请你说⼀说mysql的四种隔离状态请你介绍⼀下mysql的MVCC机制请问SQL优化⽅法有哪些请你说⼀下MySQL引擎和区别
3、Redis
请你回答⼀下mongodb和redis的区别请你说⼀下mysql引擎以及其区别请你来说⼀说Redis的定时机制
怎么实现的请你来说⼀说Redis是单线程的,但是为什么这么⾼效呢?请问Redis的数据类型有哪些,底层怎么实现?请问Redis的rehash怎么做的,为什么要渐进rehash,渐进rehash⼜是怎么实现的?请你来说⼀下Redis和memd的区别请问Redis怎么实现的定期删除功能请你说⼀说Redis对应的命令和数据类型...五、算法与数据结构
1、树
请你来说⼀说红⿊树和AVL树的定义,特点,以及⼆者区别请你聊⼀聊哈夫曼编码请你回答⼀下map底层为什么⽤红⿊树实现请你介绍⼀下B+树请你说⼀说map和unordered_map的底层实现请你回答⼀下map和unordered_map优点和缺点请你回答⼀下epoll怎么实现的请你说⼀说C++两种map请问红⿊树了解吗请你说⼀说红⿊树的性质还有左右旋转请你说⼀说红⿊树的原理以及erase以后迭代器的具体分布情况?请你实现⼆叉树的层序遍历并输出⼿写代码:⼆叉树序列化反序列化
2、堆与栈
请说⼀说你理解的stack overflow,并举个简单例⼦导致栈溢出请你回答⼀下栈和堆的区别,以及为什么栈要快⼿写代码:两个栈实现⼀个队列请你来说⼀下堆和栈的区别请你说⼀说⼩根堆特点
3、数组
请你回答⼀下Array&List, 数组和链表的区别⼀个长度为N的整形数组,数组中每个元素的取值范围是[0,n-1],判断该数组否有重复的数,请说⼀下你的思路并⼿写代码
4、排序
请你来⼿写⼀下快排的代码请你⼿写⼀下快排的代码请问求第k⼤的数的⽅法以及各⾃的复杂度是怎样的,另外追问⼀下,当有相同元素时,还可以使⽤什么不同的⽅法求第k⼤的元素请你来介绍⼀下各种排序算法及时间复杂度请你说⼀说你知道的排序算法及其复杂度请问海量数据如何去取最⼤的k个请你说⼀说Top(K)问题请问快排的时间复杂度最差是多少?什么时候时间最差请问稳定排序哪⼏种?请你介绍⼀下快排算法;以及什么是稳定性排序,快排是稳定性的吗;快排算法最差情况推导公式
5、哈希
请你来说⼀说hash表的实现,包括STL中的哈希桶长度常数。请你回答⼀下hash表如何rehash,以及怎么处理其中保存的资源请你说⼀下哈希表的桶个数为什么是质数,合数有何不妥?请你说⼀下解决hash冲突的⽅法请你说⼀说哈希冲突的解决⽅法
6、动态规划
请你⼿写代码:最长公共连续⼦序列⼿写代码:求⼀个字符串最长回⽂⼦串⼿写代码:查最长回⽂
⼦串
7、链表
请你⼿写代码,如何合并两个有序链表⼿写代码:反转链表判断⼀个链表是否为回⽂链表,说出你的思路并⼿写代码请你⼿写链表反转什么是单向链表,如何判断两个单向链表是否相交
7、⾼级算法
如果让你做⾃然语⾔理解(NLU),在处理语⾔规则的时候⼤概会⽤到什么算法请问加密⽅法都有哪些什么是LRU缓存请你说⼀说洗牌算法
8、字符串
给你⼀个字符串,出第⼀个不重复的字符,如“abbbabcd”,则第⼀个不重复就是c
六、项⽬相关
请你回答⼀下git中Merge和rebase区别
七、设计模式
请问你⽤过哪些设计模式,介绍⼀下单例模式的多线程安全问题请问你了解哪些设计模式?请问如何保证单例模式只有唯⼀实例?你知道的都有哪些⽅法?请你说⼀说OOP的设计模式的五项原则请你说说⼯⼚模式的优点?请你说⼀下观察者模式请你介绍⼀下单例模式单例模式中的懒汉加载,如果并发访问该怎么做?装饰器模式和单例模式,使⽤单例模式应该注意什么⼋、场景题
mysql面试题sql优化>湖南永州零陵区疫情变码给你两个球,100层楼,每个球在⼀定⾼度扔下去会碎,怎么⽤最少的次数给判断是⼏层楼能把求摔碎?
九、分布式与架构
分布式缓存和分布式存储的设计
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论