以下汇总C++后台开发面试题与知识点,还有其他岗位的相关题库和资料,想要什么岗位的可以留言哦~
附面试题目:
一、基础知识
1、基本语言
说一下C++和C的区别说一下C++中static关键字的作用说一说c++中四种cast转换请说一下C/C++中指针和引用的区别?给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码怎么判断一个数是二的倍数,怎么求一个数中有几个1,说一下你的思路并手写代码请你说一下你理解的c++中的smartpointer四个智能指针:请回答一下数组和指针的区别请你回答一下野指针是什么?请你介绍一下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++类内可以定义引用数据成员吗?
4、面向对象与泛型编程
请你回答一下什么是右值引用,跟左值又有什么区别?
5、编译与底层
请你来说一下一个C++源文件从文本到可执行文件经历的过程?请你来回答一下include头文件的顺序以及双引号””和尖括号的区别?请你回答一下malloc的原理,另外brk系统调用和mmap系统调用的作用分别是什么?请你说一说C++的内存管理是怎样的?请你来说一下C++/C的内存分配请你回答一下如何判断内存泄漏?请你来说一下什么时候会发生段错误请你来回答一下什么是memoryleak,也就是内存泄漏请你来说一下共享内存相关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)机制,以及互斥锁和读写锁的区别请回答一下进程和线程的区别请你说一说进程状态转换图,动态就绪,静态就绪,动态阻塞,静态阻塞Aa=newA;a-i=10;在内核中的内存分配上发生了什么?给你一个类,里面有static,virtual,之类的,来说一说这个类的内存分布请你回答一下软链接和硬链接区别请问什么是大端小端以及如何判断大端小端请你回答一下静态变量什么时候初始化请你说一说用户态和内核态区别请问如何设计server,使得能够接收多个客户端的请求死循环+来连接时新建线程的方法效率有点低,怎么改进?请问怎么唤醒被阻塞的socket线程?请问怎样确定当前线程是繁忙还是阻塞?空闲的进程和阻塞的进程状态会不会在唤醒的时候误判?请问就绪状态的进程在等待什么?请你说一说多线程的同步,锁的机制两个进程访问临界区资源,会不会出现都获得自旋锁的情况?假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得?windows消息机制知道吗,请说一说C++的锁你知道几种?说一说你用到的锁请你说一说死锁产生的必要条件?请你说一说什么是线程和进程,多线程和多进程通信方式请你说一说内存溢出和内存泄漏进程和线程的区别,你都使用什么线程模型请你来说一说协程系统调用是什么,你用过哪些系统调用请你来手写一下fork调用示例请你来说一说用户态到内核态的转化原理请你说一下源码到可执行文件的过程请你来说一下微内核与宏内核你说一下僵尸进程请问GDB调试用过吗,什么是条件断点请你来介绍一下5种IO模型请你说一说异步编程的事件循环请你回答一下操作系统为什么要分内核态和用户态请你回答一下为什么要有page\,操作系统怎么设计的page\server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?请问如何设计server,使得能够接收多个客户端的请求死循环+来连接时新建线程的方法效率有点低,怎么改进?就绪状态的进程在等待什么?请你说一下多线程的同步,锁的机制两个进程访问临界区资源,会不会出现都获得自旋锁的情况?假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得?请问怎么实现线程池Linux下怎么得到一个文件的到行请你来说一下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状态请你来说一说