CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

最全C—C++软开、嵌入式软开高频面试题整理-免费源码丞旭猿

一、关于本书

获取方式在文末!!!

关于《最全C_C++及嵌入式软开面试题宝典.pdf》

1、简介

本书内容整理自本人及身边同学在2021秋招提前批阶段遇到的频率较高的笔试面试题以及网上博客、面经、微信公众号、个人网站等。

本书在写的过程中如果出现较大篇幅的引用,会在旁边附上来源。整个提前批、秋招过程及本书的整理都离不开以前撰写面经分享、资料整理的同学。

1.本书为了尽量缩小篇幅,部分内容未展开,但给出了链接,都整理得比较清晰有条理。

2.部分问题只给出了答案,多思考底层原理,弄明白。

3.相信我,耐心把文中提到的知识点都弄明白,C/C++软开、嵌入式软开、部分前、后端岗位都没啥问题。

2、面向对象

这本书整理的知识点及⾯试题的主要涉及C、C++、STL标准库与算法、操作系统、Linux、计算机网络、数据结构、常用刷题算法、数据库、设计模式、多线程编程以及常见智力题,由于作者是通信专业,所以文末携带了一点点通信相关的和OFDM知识。本书适合对最基本知识概念有基础,但是⼜不怎么扎实,或者知识点串不起来的同学。本书最适合在准备实习、提前批、秋招面试的同学,很适合用来做⾯试突击。本文至少包含了上述岗位百分之九十的知识点。

3、阅读方式

这不是教科书,肯定没有专业相关书籍全面系统,仅仅是⼀本为了面试、巩固所学的资料。如果你还不是到即将⾯试的时间点,建议多花时间系统学习底层知识,同时扩充知识⾯,才是⻓久之计。这个时间你需要的是加速度,⽽不是速度。阅读的顺序可以不⽤从头读到尾,你可以根据你想要了解的知识点,去看哪个章节的⽂章就好,可以随意阅读任何章节的⽂章。

4、  校正勘误

由于本书整理在提前批、秋招期间,时间仓促,难免出现内容错误或是错别字。如果在阅读期间发现错误或是建议或是补充,以及其他疑惑,都可以通过下方邮件联系我。

2417677728@qq.com

二、本书目录

获取方式在文末

由于目录过长,滑动可查看全部目录!

本书目录

一、       关于本书

1、        简介

2、        面向对象

3、        阅读方式

4、        校正勘误

二、        C++

5、        引用和指针的区别?

6、        从汇编层去解释一下引用

7、        C++中的指针参数传递和引用参数传递

8、        形参与实参的区别?

9、        static的用法和作用?

10、     静态变量什么时候初始化

11、      const?

12、     const成员函数的理解和应用?

13、     指针和const的用法?const 修饰指针如何区分?

14、     C++⾥是怎么定义常量的?常量存放在内存的哪个位置?

15、     mutable

16、     extern用法?

17、     int转字符串,字符串转int?strcat,strcpy,strncpy,memset,memcpy的内部实现?

18、     深拷贝与浅拷贝?

19、     C++模板是什么,底层怎么实现的?

20、     静态绑定和动态绑定的介绍

21、     C语言struct和C++struct区别

22、     虚函数可以声明为inline吗?

23、     介绍 C++ 所有的构造函数

24、     什么情况下会调用拷贝构造函数

25、     为什么拷贝构造函数必须是引用传递,不能是值传递?

26、     何时需要合成构造函数

27、     何时需要合成复制构造函数

28、     C++类的虚函数表和虚函数在内存中的位置

29、     同一个类,实例化多次,是否共享虚函数表?

30、     编译器处理虚函数表应该如何处理

31、     类成员初始化方式?构造函数的执行顺序?为什么用成员初始化列表会快一些?

32、     成员列表初始化?

33、     何时需要成员初始化列表?过程是什么?

34、     构造函数为什么不能为虚函数?析构函数为什么要虚函数?

35、     析构函数的作用,如何起作用?

36、     构造函数和析构函数可以调用虚函数吗,为什么

37、     构造函数析构函数可以调用虚函数吗?

38、构造函数的执行顺序?析构函数的执行顺序?构造函数内部干了啥?拷贝构造干了啥?

39、     虚析构函数的作用,父类的析构函数是否要设置为虚函数?

40、     构造函数析构函数可否抛出异常

41、     类如何实现只能静态分配和只能动态分配

42、     如果想将某个类用作基类,为什么该类必须定义而非声明?

43、     什么情况会自动生成默认构造函数?

44、     构造函数的扩展过程?

45、     程序员定义的析构函数被扩展的过程?

46、     构造函数的执行算法?

47、     哪些函数不能是虚函数

48、     虚函数的调用机制

49、     什么是类的继承?

50、     什么是多继承

51、     什么是组合?

52、     抽象基类为什么不能创建对象?

53、     纯虚函数定义

54、     虚函数与纯虚函数的区别在于

55、     类什么时候会析构?

56、     为什么友元函数必须在类内部声明?

57、     C++ ⾯向对象的三⼤特征是:封装、继承、多态。

58、     介绍一下C++里面的多态?

59、     C++ 中重载和重写,重定义的区别

60、     虚函数的代价?

61、     用C语言实现C++的继承

62、     继承机制中对象之间如何转换?指针和引用之间如何转换?

63、     C++四种类型转换

64、     为什么要用static_cast转换而不用c语言中的转换?

65、     组合与继承优缺点?

66、     左值右值

67、     总结左值和右值的概念

68、     移动构造函数

69、     C语言的编译链接过程?

70、     vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素

71、     STL vector的实现,删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间?

72、     容器内部删除一个元素

73、     STL迭代器如何实现

74、     set与hash_set的区别

75、     hash_map与map的区别

76、     map、set是怎么实现的,红黑树是怎么能够同时实现这两种容器?为什么使用红黑树?

77、     如何在共享内存上使用stl标准库?

78、     map插入方式有几种?

79、     STL中unordered_map(hash_map)和map的区别,hash_map如何解决冲突以及扩容

80、     vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间?

81、     map[]与find的区别?

82、     STL中list与queue之间的区别

83、     STL中的allocator,deallocator

84、     STL中hash_map扩容发生什么?

85、     map如何创建?

86、     vector的增加删除都是怎么做的?为什么是1.5倍?

87、     C++ sort排序算法底层

88、     函数指针?

89、     C与C++的联系与区别

90、     C++中NULL和nullptr的区别

91、     C/C++内存分配

92、     c/c++的内存分配模型,详细说一下栈、堆、静态存储区?

93、     野指针是什么?如何检测内存泄漏?

94、     悬空指针和野指针有什么区别?

95、     内存泄漏

96、     内存溢出定位

97、     什么是内存对齐

98、     为什么内存对齐

99、     内存对齐规则

100、   字节对齐有什么作用?

101、   C语言中pragma用法

102、   new和malloc的区别?

103、   malloc/calloc/realloc三者之间的区别?

104、   delete p;与delete[]p,allocator

105、   new和delete的实现原理,delete是如何知道释放内存的大小?

106、   malloc申请的存储空间能用delete释放吗

107、   函数参数入栈的顺序

108、   堆和栈区别

109、   堆与栈的优点和缺点

110、   内核空间虚拟内存管理

111、   malloc与free的实现原理?

112、   malloc、realloc、calloc的区别

113、   __stdcall和__cdecl的区别?

114、   手写字符串函数 strcat,strcpy, strncpy, memset, memcpy实现

115、   使用智能指针管理内存资源,RAII

116、   手写实现智能指针类

117、   结构体变量比较是否相等

118、   位运算

119、   函数调用过程栈的变化,返回值和参数变量哪个先入栈?

120、   怎样判断两个浮点数是否相等?

121、   宏定义一个取两个数中较大值的功能

122、   define、const、typedef、inline使用方法?

123、   printf实现原理?

124、   include 的顺序以及尖括号和双引号的区别

125、   lambda函数

126、   模板类和模板函数的区别是什么?

127、   为什么模板类一般都是放在一个h文件中

128、   C++中类成员的访问权限和继承权限问题。

129、   cout和printf有什么区别?

130、   重载运算符?

131、   函数重载函数匹配原则

132、   定义和声明的区别

133、   全局变量和static变量的区别

134、   static函数与普通函数有什么区别?

135、   静态成员与普通成员的区别

136、   说一下理解 ifdef endif

137、   隐式转换,如何消除隐式转换?

138、   虚函数的内存结构,那菱形继承的虚函数内存结构呢

139、   多继承的优缺点,作为一个开发者怎么看待多继承

140、   迭代器++it,it++哪个好,为什么

141、   C++如何处理多个异常的?

142、   模板和实现可不可以不写在一个文件里面?为什么?

143、   在成员函数中调用delete this会出现什么问题?对象还可以使用吗?

144、   三个智能指针

145、   智能指针怎么用?智能指针出现循环引用怎么解决?

146、   智能指针的作用

147、   auto_ptr作用

148、   class、union、struct的区别

149、   动态联编与静态联编

150、   动态编译与静态编译

151、   动态链接和静态链接区别

152、   在不使用额外空间的情况下,交换两个数?

153、   strcpy和memcpy的区别

154、   简述strcpy、sprintf与memcpy的区别

155、   strcpy函数和strncpy函数的区别?哪个函数更安全?

156、   执行int main(int argc, char *argv[])时的内存结构

157、   volatile关键字的作用?

158、   讲讲大端小端,如何检测(三种方法)

159、   查看内存的方法

160、   空类

161、   空类会默认添加哪些东西?怎么写?

162、   标准库是什么?

163、   const char* 与string之间的关系,传递参数问题?

164、   char * 与char[]

165、   sizeof 和strlen 的区别

166、   针对char*和char[]求sizeof()

167、   new、delete、operator new、operator delete、placement new、placement delete

168、   空类的大小是多少?为什么?

169、   计算下面几个类的大小

170、   类对象的大小

171、   函数传递参数的几种方式

172、   将引用作为函数参数有哪些特点?

173、   你什么情况用指针当参数,什么时候用引用,为什么?

174、   大内存申请时候选用哪种?C++变量存在哪?变量的大小存在哪?符号表存在哪?

175、   为什么会有大端小端,htol这一类函数的作用

176、   静态函数能定义为虚函数吗?常函数?

177、   this指针调用成员变量时,堆栈会发生什么变化?

178、   设计一个类计算子类的个数

179、   怎么快速定位错误出现的地方

180、   编码实现某一变量某位清0或置1

181、   分别写出BOOL,int,float,指针类型的变量a 与零的比较语句。

182、   局部变量全局变量的问题?

183、   数组和指针的区别?

184、   C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?

185、   如何禁止自动生成拷贝构造函数?

186、   assert与NDEBUGE

187、   Debug和release的区别

188、   main函数有没有返回值

189、   写一个比较大小的模板函数

190、   c++怎么实现一个函数先于main函数运行

191、   成员函数里memset(this,0,sizeof(*this))会发生什么

192、   方法调用的原理(栈,汇编)

193、   MFC消息处理如何封装的?

194、   函数指针

195、   回调函数的作用

196、   随机数的生成

197、   for(;;)和while(true)的区别

198、   数据结构中的常见树结构

199、   什么是平衡二叉树

200、   红黑树的性质

201、   红黑树的插入与旋转

202、   红黑树与平衡二叉树

203、   二叉平衡树、红黑树、B树、B+树的区别与联系

204、   hello world 程序开始到打印到屏幕上的全过程?

三、        STL标准库与算法

205、   C++ 的 STL 介绍

206、   STL 中序列式容器的实现:

207、   vector使用的注意点和性能影响分析

208、   map和set有什么区别,分别是怎么实现的?

209、   STL迭代器删除元素

210、   STL中迭代器的作用,有指针为何还要迭代器

211、   回答⼀下STL⾥resize和reserve的区别

212、   vector怎么存放大小不一的数据?

四、        操作系统

213、   操作系统特点

214、   并发与并行的区别

215、   什么是进程?什么是线程

216、   进程与线程的区别

217、   线程共享的资源是什么?

218、   进程与线程的资源

219、   多线程和进程应用场景

220、   为什么要用多线程

221、   什么时候用多进程?什么时候用多线程?

222、   线程比进程具有哪些优势?

223、   协程是什么?

224、   程序、进程和作业的区别?

225、   进程的创建过程?需要哪些函数?需要哪些数据结构?

226、   进程创建子进程、fork详解

227、   父进程和子进程

228、   子进程和父进程怎么通信?

229、   父、子进程中的全局变量

230、   进程间通信方式有几种,他们之间的区别是什么?

231、   线程安全?如何实现?

232、   线程同步的方式?

233、   临界区、互斥对象、信号量、事件对象

234、   互斥锁和读写锁

235、   同步通信与异步通信区别

236、   进程状态转换图

237、   什么是进程调度

238、   进程调度的概念、进程调度的情况

239、   进程调度的规则

240、   线程的状态

241、   七种进程调度算法

242、   进程的调度算法

243、   什么是上下文切换?

244、   死锁是什么?必要条件?如何解决?

245、   死锁预防和死锁避免

246、   鸵鸟策略

247、   银行家算法

248、   孤儿进程和僵尸进程的区别?怎么避免这两类进程?守护进程?

249、   守护进程是什么?怎么实现?

250、   递归锁?

251、   内核态和用户态

252、   用户态到内核态的转化原理?

253、   中断的实现与作用,中断的实现过程?

254、   系统中断是什么,用户态和内核态的区别

255、   CPU中断

256、   执行一个系统调用时,OS发生的过程,越详细越好

257、   函数调用和系统调用的区别?

258、   经典同步问题解法:生产者与消费者问题,哲学家进餐问题,读者写者问题。

259、   为什么会出现分段和分页的技术

260、   分段式存储

261、   分页式存储

262、   分页式存储和分段式存储的区别

263、   段页式存储

264、   页和段的区别?

265、   虚拟内存?使用虚拟内存的优点?什么是虚拟地址空间?

266、   操作系统中虚拟内存与物理内存的关系

267、   MMU地址转换过程

268、   缺页中断

269、   常见的IO模型,五种?异步IO应用场景?有什么缺点?

270、   IO多路复用的三种机制Select,Poll,Epoll

271、   IO复用的原理?零拷贝?三个函数?epoll的LT和ET模式的理解。

272、   select、poll、epoll区别总结:

273、   select、poll、epoll三个常用的I/O复用的连接上限

274、   epoll的LT和ET模式的理解:

275、   Linux是如何避免内存碎片的

276、   递归的原理是啥?递归中遇到栈溢出怎么解决

277、   ++i是否是原子操作

278、   缺页中断,页表寻址

279、   LRU的实现

280、   内存分区

281、   操作系统内存动态分区分配算法

282、   伙伴系统相关

283、   I/O控制方式

284、   Spooling技术

285、   通道技术

286、   共享内存的实现

287、   设计一个线程池,内存池

288、   操作系统基本功能

289、   epoll读到一半又有新事件来了怎么办?

290、   阻塞套接字和非阻塞套接字的区别?

291、   ET和LT模式下的阻塞与非阻塞?

五、        Linux

292、   Linux文件系统组织形式

293、   linux文件系统

294、   Linux中的虚拟文件系统(VFS)

295、   inode节点

296、   bootloader、内核、根文件的关系

297、   什么是硬盘

298、   Linux软连接、硬链接,删除了软连接的源文件软连接可用?

299、   Bootloader启动的两个阶段

300、   Linux系统应用程序的内存空间是怎么分配的,用户空间多大,内核空间多大?

301、   Linux的共享内存如何实现

302、   linux库函数mmap()原理及用法详解

303、   Linux中Valgrind工具

304、   文件处理grep,awk,sed这三个命令必知必会

305、   查询进程占用CPU的命令

306、   一个程序从开始运行到结束的完整过程

307、   一般情况下在Linux/windows平台下栈空间的大小

308、   Linux重定向

309、   为何要使用命令输出重导向

310、   三种IO多路复用模型的区别

311、   Linux常用命令

312、   Linux命令手册

313、   chmod用法

六、        计算机网络

314、   socket完成TCP流程

315、   物理层

316、   数据链路层

317、   网络层

318、   路由器的功能?

319、   ip报文如何从下向上交付

320、   ip地址有什么用,ip地址和mac地址,为什么需要IP地址

321、   ARP协议的作用

322、   什么是ARP协议?为什么IP地址与MAC地址都需要?

323、   NAT的原理,外网与内网或内网之间的通信中如何区分不同IP的数组包

324、   RIP路由协议

325、   为什么使用IP地址通信

326、   子网掩码有什么用?

327、   子网划分的方法

328、   TCP/IP协议栈分层的原因

329、   为什么会出现拥塞控制呢?

七、        传输层

330、   传输层功能

331、   详解TCP与UDP

332、   UDP与TCP报文格式

333、   UDP与TCP数据包格式与长度分析

334、   TCP标志位

335、   TCP协议有几大计时器?

336、   TCP协议,三次握手、四次挥手传输的内容?13种状态

337、   三次握手的内容

338、   为什么要随机产生序号,而不直接从0开始?

339、   为什么一定进行三次握手?

340、   TCP面向连接的本质是什么?真的是连接吗

341、   TIME_WAIT和CLOSE_WAIT的区别

342、   什么情况下,连接处于CLOSE_WAIT状态呢?

343、   time_wait与close_wait,time_wait状态持续多长时间?为什么会有time_wait状态?

344、   Time_wait为什么是2MSL的时间长度

345、   TCP第四次挥手为什么要等待2MSL

346、   如果已经建立连接,但客户端突然出现故障怎么办?

347、   TCP和UDP的区别以及TCP与UDP的应用场景

348、   怎么让UDP变得可靠

349、   TCP、UDP 应用场景

350、   为什么UDP有时比TCP更有优势?(TCP丢包传输速度慢)

351、   UDP中一个包的大小最大能多大

352、   TCP 粘包

353、   TCP可靠性保证

354、   拥塞控制

355、   TCP流量控制

356、   流量控制与拥塞控制的区别?

357、   介绍一下ping的过程,分别用到了哪些协议

358、   socket编程

359、   客户端为什么不需要bind

360、   send和recv的缺点

361、   TCP为啥挥手要比握手多一次?

362、   应用层

363、   常用的网络协议?

364、   IPv4和IPv6协议之间的区别

365、   网络协议各个层的网络设备?

366、   讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程

367、   什么是HTTP ?

368、   http与https工作方式

369、   http协议,http和https的区别

370、   http状态码

371、   HTTP1.0与HTTP1.1的区别?

372、   https的过程

373、   http中get和post的区别

374、   比较 GET与 POST

375、   HTTP 协议中的 GET 和 POST 方法。二者主要区别如下:

376、   两种HTTP 请求方法:GET和 POST

377、   get、post 区别

378、   HTTP请求消息格式

379、   HTTP响应消息格式

380、   OSI 7层网络模型中各层的名称及其作用?

381、   TCP/IP 4层网络模型名称及其作用?

382、   OSI 7层网络中各层的常见协议以及协议作用?设备

383、   OSI与TCP模型的区别?

384、   DNS是干什么的??

385、   说一下网卡从接收到数据后发生了什么

386、   send函数什么情况下会阻塞

387、   常用端口号

八、        数据结构

388、   常用查找算法?具体实现

389、   常用排序算法?具体实现,哪些是稳定的,时间复杂度、空间复杂度,快速排序非递归如何实现?快排的优势?

390、   图的常用算法?

391、   哈夫曼编码?

392、   AVL树、B+树、红黑树、B树B+树区别,B+树应用在哪里?

393、   B+树和B-树

394、   B+树的双向有序链表有什么用?

395、   为什么使用红黑树,什么情况使用AVL树。红黑树比AVL树有什么优点。

396、   数据库索引引擎为什么用B+树,和B树区别在哪,为什么不用红黑树/AVL树

397、   数据库索引是B+树

398、   单链表如何判断有环?

399、   如何判断一个图是否连同?

400、   hash用在什么地方,解决hash冲突的几种方法?负载因子?

401、   n个节点的二叉树的所有不同构的个数

402、   二叉树中节点度之间的关系

403、   二叉树的公共祖先,二叉搜索树的公共祖先

404、   节点的最大距离

405、   把一颗二叉树原地变成一个双向链表

406、   二叉树的所有路径

407、   二叉树中寻找每一层中最大值?

408、   最大深度、最小深度、会否是平衡树

409、   二叉树中叶子节点的数量

410、   交换左右孩子、二叉树镜像

411、   两个二叉树是否相等

412、   是否为完全二叉树

413、   是否为对称二叉树

414、   判断B是否为A的子树

415、   构建哈夫曼树

416、   手写单链表反转?删除指定的单链表的一个节点

417、   实现一个循环队列

418、   Top K问题

419、   求一颗树的最大距离

420、   KMP

421、   数组和链表的区别?

422、   逆序对思路

423、   100个有序数组合并

424、   使用递归和非递归求二叉树的深度

425、   索引、链表的优缺点?

426、   找一个点为中心的圆里包含的所有的点。

427、   字典树的理解

428、   快速排序的优化

429、   海量数据的bitmap使用原理

430、   红黑树的性质与旋转规则

431、   平衡二叉树(AVL)的性质

432、   红黑树与平衡二叉树的区别:

九、        算法

433、   二叉树前序遍历、中序遍历、后序遍历

434、   根据二叉树前序遍历和中序遍历重建二叉树

435、   动态规划,最长公共子序列

436、   分治与递归

437、   贪心算法,背包问题

438、   BFS,DFS,地杰斯特拉算法,佛洛依德算法

439、   动态规划的回文字符串?

440、   排序算法?时间复杂度?稳定性算法?

441、   出入栈顺序这类题的快速做法

442、   字符串匹配?

443、   求一个数开根号(二分)

十、        数据库

444、   事务是什么

445、   分布式事务

446、   一二三范式

447、   数据库的索引类型,数据库索引的作用

448、   聚集索引和非聚集索引的区别

449、   唯一性索引和主码索引的区别

450、   数据库引擎,innodb和myisam的特点与区别

451、   关系型和非关系型数据库的区别

452、   数据库的隔离级别

453、   数据库连接池的作用

454、   数据的锁的种类,加锁的方式

455、   数据库union join的区别

456、   Inner join,left outter join,right outter join之间的区别

十一、            设计模式

457、   单例模式

458、   手写线程安全的单例模式?

459、   工厂模式

460、   装饰器模式

461、   订阅/发布模式

462、   观察者模式

463、   MVC模式

十二、            多线程编程

十三、            面试常见智力问题

464、   二进制问题

465、   金条问题

466、   老鼠和毒药

467、   水桶问题

468、   倒水问题1

469、   倒水问题2

470、   舀酒问题

471、   钱问题

472、   赚钱问题

473、   假钱问题

474、   取硬币问题

475、   旅馆问题

476、   蓝眼问题

477、   蓝眼睛问题

478、   疯狗问题(跟蓝眼睛一样)

479、   耳光问题(跟蓝眼睛一样)

480、   时间问题

481、   蜡烛燃烧问题

482、   重量问题

483、   乒乓球重量

484、   盐重量问题

485、   药丸问题

486、   药丸问题2

487、   数学问题

488、   概率问题1

489、   概率问题2

490、   扑克牌问题

491、   扔鸡蛋问题

492、   填数字

493、   规律

494、   猜数字问题

495、   其他问题

496、   水果标签问题

497、   便士标签问题(和水果标签一样)

498、   吃药问题

499、   硬币问题

500、   灯管问题

501、   盲人问题

502、   最大钻石问题

十四、            HR问题

十五、            通信相关

503、   OFDM及802.11a协议

504、   OFDM

505、   衰落

506、   ICI和ISI:

507、   通信同步

508、   PAPR

509、    OFDM具有比较大的带外功率,为啥?

三、本书获取方式

方式一:转发本文到朋友圈集满20个赞并保留24小时后截图发到公众号后台(请不要设置查看权限哦)!

方式二:点击下方显示金额赞赏支持一下即可。

后台收到消息后将在24小时内回复下载链接。

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容