logo资料库

C++软件工程师.docx

第1页 / 共147页
第2页 / 共147页
第3页 / 共147页
第4页 / 共147页
第5页 / 共147页
第6页 / 共147页
第7页 / 共147页
第8页 / 共147页
资料共147页,剩余部分请下载后查看
I.C++
1.引用和指针的区别?
2.从汇编层去解释一下引用
3.C++中的指针参数传递和引用参数传递
4.形参与实参的区别?
5.static的用法和作用?
6.静态变量什么时候初始化
7. const?
8.const成员函数的理解和应用?
9.指针和const的用法
10.mutable
11.extern用法?
12.int转字符串字符串转int?strcat,strcpy,strncpy,memset,memcpy
13.深拷贝与浅拷贝?
14.C++模板是什么,底层怎么实现的?
15.C语言struct和C++struct区别
16.虚函数可以声明为inline吗?
17.类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一些?
18.成员列表初始化?
19.构造函数为什么不能为虚函数?析构函数为什么要虚函数?
20.析构函数的作用,如何起作用?
21.构造函数和析构函数可以调用虚函数吗,为什么
22.构造函数的执行顺序?析构函数的执行顺序?构造函数内部干了啥?拷贝构造干了啥?
23.虚析构函数的作用,父类的析构函数是否要设置为虚函数?
24.构造函数析构函数可以调用虚函数吗?
25.构造函数析构函数可否抛出异常
26.类如何实现只能静态分配和只能动态分配
27.如果想将某个类用作基类,为什么该类必须定义而非声明?
28.什么情况会自动生成默认构造函数?
29.什么是类的继承?
30.什么是组合?
31.抽象基类为什么不能创建对象?
32.类什么时候会析构?
33.为什么友元函数必须在类内部声明?
34.介绍一下C++里面的多态?
35. 用C语言实现C++的继承
36.继承机制中对象之间如何转换?指针和引用之间如何转换?
37.组合与继承优缺点?
38.左值右值
39.移动构造函数
40.C语言的编译链接过程?
41.vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素
42.STL vector的实现,删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间?
43.容器内部删除一个元素
44.STL迭代器如何实现
45.set与hash_set的区别
46.hashmap与map的区别
47.map、set是怎么实现的,红黑树是怎么能够同时实现这两种容器? 为什么使用红黑树?
48.如何在共享内存上使用stl标准库?
49.map插入方式有几种?
50.STL中unordered_map(hash_map)和map的区别,hash_map如何解决冲突以
51.vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间?
52.map[]与find的区别?
53.STL中list与queue之间的区别
54.STL中的allocator,deallocator
55.STL中hash_map扩容发生什么? 
56.map如何创建?
57.vector的增加删除都是怎么做的?为什么是1.5倍?
58.函数指针?
59.说说你对c和c++的看法,c和c++的区别?
60.c/c++的内存分配,详细说一下栈、堆、静态存储区?
61.堆与栈的区别?
62.野指针是什么?如何检测内存泄漏?
63.悬空指针和野指针有什么区别?
64.内存泄漏
65.new和malloc的区别?
66.delete p;与delete[]p,allocator
67.new和delete的实现原理, delete是如何知道释放内存的大小的额?
68.malloc申请的存储空间能用delete释放吗
69.malloc与free的实现原理?
70.malloc、realloc、calloc的区别
71.__stdcall和__cdecl的区别?
72.使用智能指针管理内存资源,RAII
73.手写实现智能指针类
74.内存对齐?位域?
75.结构体变量比较是否相等
76.位运算
77.为什么内存对齐
78.函数调用过程栈的变化,返回值和参数变量哪个先入栈?
79.怎样判断两个浮点数是否相等?
80.宏定义一个取两个数中较大值的功能
81.define、const、typedef、inline使用方法?
82.printf实现原理?
83.#include 的顺序以及尖叫括号和双引号的区别
84.lambda函数
85. hello world 程序开始到打印到屏幕上的全过程?
86.模板类和模板函数的区别是什么?
87.为什么模板类一般都是放在一个h文件中
88.C++中类成员的访问权限和继承权限问题。
89.cout和printf有什么区别?
90.重载运算符?
91.函数重载函数匹配原则
92.定义和声明的区别
93.C++类型转换有四种
94.全局变量和static变量的区别
95.静态成员与普通成员的区别
96.说一下理解 ifdef  endif
97.隐式转换,如何消除隐式转换?
98.虚函数的内存结构,那菱形继承的虚函数内存结构呢
99.多继承的优缺点,作为一个开发者怎么看待多继承
100.迭代器++it,it++哪个好,为什么
101.C++如何处理多个异常的?
102.模板和实现可不可以不写在一个文件里面?为什么?
103.在成员函数中调用delete this会出现什么问题?对象还可以使用吗?
104.智能指针的作用;
105.auto_ptr作用
106.class、union、struct的区别
107.动态联编与静态联编
108.动态编译与静态编译
109.动态链接和静态链接区别
110.在不使用额外空间的情况下,交换两个数?
111.strcpy和memcpy的区别
112.执行int main(int argc, char *argv[])时的内存结构
113.volatile关键字的作用?
114.讲讲大端小端,如何检测(三种方法)
115.查看内存的方法
116.空类会默认添加哪些东西?怎么写?
117.标准库是什么?
118.const char* 与string之间的关系,传递参数问题?
119.new、delete、operator new、operator delete、placement
120.为什么拷贝构造函数必须传引用不能传值?
121.空类的大小是多少?为什么?
122.你什么情况用指针当参数,什么时候用引用,为什么?
123.大内存申请时候选用哪种?C++变量存在哪?变量的大小存在哪?符号表存在哪?
124.为什么会有大端小端,htol这一类函数的作用
125.静态函数能定义为虚函数吗?常函数?
126.this指针调用成员变量时,堆栈会发生什么变化?
127.静态绑定和动态绑定的介绍
128.设计一个类计算子类的个数
129.怎么快速定位错误出现的地方
130.虚函数的代价?
131.类对象的大小
132.移动构造函数
133.何时需要合成构造函数
134.何时需要合成复制构造函数
135.何时需要成员初始化列表?过程是什么?
136.程序员定义的析构函数被扩展的过程?
137.构造函数的执行算法?
138.构造函数的扩展过程?
139.哪些函数不能是虚函数
140.sizeof 和strlen 的区别
141.简述strcpy、sprintf与memcpy的区别
142.编码实现某一变量某位清0或置1
143.将“引用”作为函数参数有哪些特点?
144.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
145.局部变量全局变量的问题?
146.数组和指针的区别?
147.C++如何阻止一个类被实例化?一般在什么时候将构造函数声明为private?
148.如何禁止自动生成拷贝构造函数?
149.assert与NDEBUGE
150.Denug和release的区别
151.main函数有没有返回值
152.写一个比较大小的模板函数
153.c++怎么实现一个函数先于main函数运行
154.虚函数与纯虚函数的区别在于
155.智能指针怎么用?智能指针出现循环引用怎么解决?
156.strcpy函数和strncpy函数的区别?哪个函数更安全?
157.为什么要用static_cast转换而不用c语言中的转换?
158.成员函数里memset(this,0,sizeof(*this))会发生什么
159.方法调用的原理(栈,汇编)
160.MFC消息处理如何封装的?
161.回调函数的作用
162.随机数的生成
II.操作系统
1.操作系统特点
2.什么是进程
3.进程
4.进程与线程的区别
5.进程状态转换图
6.进程的创建过程?需要哪些函数?需要哪些数据结构?
7.进程创建子进程,fork详解
8.子进程和父进程怎么通信?
9.进程和作业的区别?
10.死锁是什么?必要条件?如何解决?
11.鸵鸟策略
12.银行家算法
13.进程间通信方式有几种,他们之间的区别是什么?
14.线程同步的方式?怎么用?
15.页和段的区别?
16.孤儿进程和僵尸进程的区别?怎么避免这两类进程?守护进程?
17.守护进程是什么?怎么实现?
18.线程和进程的区别?线程共享的资源是什么?
19.线程比进程具有哪些优势?
20.什么时候用多进程?什么时候用多线程?
21.协程是什么?
22.递归锁?
23.用户态到内核态的转化原理?
24.中断的实现与作用,中断的实现过程?
25.系统中断是什么,用户态和内核态的区别
26.CPU中断
27.执行一个系统调用时,OS发生的过程,越详细越好1.执行用户程序(如:fork) 
28.函数调用和系统调用的区别?
29.经典同步问题解法:生产者与消费者问题,哲学家进餐问题,读者写者问题。
30.虚拟内存?使用虚拟内存的优点?什么是虚拟地址空间?
31.线程安全?如何实现?
32.linux文件系统
33.常见的IO模型,五种?异步IO应用场景?有什么缺点?
34.IO复用的原理?零拷贝?三个函数?epoll 的 LT 和 ET 模式的理解。
35.Linux是如何避免内存碎片的
36.递归的原理是啥?递归中遇到栈溢出怎么解决
37.++i是否是原子操作
38.缺页中断,页表寻址
39.LRU的实现
40.内存分区
41.伙伴系统相关
42.I/O控制方式
43.Spooling技术
44.通道技术
45.共享内存的实现
46.计一个线程池,内存池
III.Linux
1.Inode节点
2.Linux软连接、硬链接,删除了软连接的源文件软连接可用?
3.Linux系统应用程序的内存空间是怎么分配的,用户空间多大,内核空间多大?
4.Linux的共享内存如何实现
5.文件处理grep,awk,sed这三个命令必知必会
6.查询进程占用CPU的命令
7.一个程序从开始运行到结束的完整过程
8.一般情况下在Linux/windows平台下栈空间的大小
9.Linux重定向
10.Linux常用命令
IV.网络
一、物理层
二、数据链路层
三、网络层
1.路由器的功能?
2.ip报文如何从下向上交付
3.ip地址有什么用,ip地址和mac地址, 为什么需要IP地址
4.ARP协议的作用
5.NAT的原理,外网与内网或内网之间的通信中如何区分不同IP的数组包
6.RIP路由协议
7.为什么使用IP地址通信
8.子网掩码有什么用?
9.子网划分的方法
四、运输层
1.TCP协议有几大计时器?
2.详细说一下TCP协议,三次握手传输的内容?13种状态
3.TCP为啥挥手要比握手多一次?
4.为什么一定进行三次握手?
5.TCP与UDP的区别?应用场景都有哪些?
6.为什么UDP有时比TCP更有优势?
7.UDP中一个包的大小最大能多大
8.TCP 粘包
9.传输层功能
10.TCP可靠性保证
11.拥塞控制
12.TCP流量控制
13.流量控制与拥塞控制的区别?
14.time_wait与close_wait,time_wait状态持续多长时间?为什么会有time_w
15.Time_wait为什么是2MSL的时间长度
16.介绍一下ping的过程,分别用到了哪些协议
17.socket编程
18.客户端为什么不需要bind
19.send和recv的缺点
五、应用层
1.常用的网络协议?
2.网络协议各个层的网络设备?
3.讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程
4.http与https工作方式
5.http协议,http和https的区别
6.http状态码
7.HTTP1.0与HTTP1.1的区别?
8.OSI 7层网络模型中各层的名称及其作用?
9.TCP/IP 4层网络模型名称及其作用?
10.OSI 7层网络中各层的常见协议以及协议作用?设备
11.OSI与TCP模型的区别?
12.DNS是干什么的??
13. get/post 区别
14.说一下网卡从接收到数据后发生了什么
15.send函数什么情况下会阻塞
16.常用端口号
17.https的过程
V.数据结构
1.常用查找算法?具体实现
2.常用排序算法?具体实现,哪些是稳定的,时间复杂度、空间复杂度,快速排序非递归如何实现?快排的优势?
3.图的常用算法?
4.哈夫曼编码?
5.***AVL树、B+树、红黑树、B树B+树区别,B+树应用在哪里?
6.为什么使用红黑树,什么情况使用AVL树。红黑树比AVL树有什么优点。
7.单链表如何判断有环?
8.如何判断一个图是否连同?
9.hash用在什么地方,解决hash冲突的几种方法?负载因子?
10.n个节点的二叉树的所有不同构的个数
11.二叉树的公共祖先,排序二叉树的公共祖先
12.节点的最大距离
13.把一颗二叉树原地变成一个双向链表
14.二叉树的所有路径
15.二叉树中寻找每一层中最大值?
16.最大深度、最小深度、会否是平衡树
17.二叉树中叶子节点的数量
18.交换左右孩子、二叉树镜像
19.两个二叉树是否相等
20.是否为完全二叉树
21.是否为对称二叉树
22.判断B是否为A的子树
23.构建哈夫曼树
24.手写单链表反转?删除指定的单链表的一个节点
25.实现一个循环队列
26.Top K问题
27.求一颗树的最大距离
28.KMP
29.数组和链表的区别?
30.逆序对思路
31.100个有序数组合并
32.使用递归和非递归求二叉树的深度
33.索引、链表的优缺点?
34.找一个点为中心的圆里包含的所有的点。
35.字典树的理解
36.快速排序的优化
37.海量数据的bitmap使用原理
VI.算法
1.动态规划,最长公共子序列
2.分治与递归
3.贪心算法,背包问题
4.BFS,DFS,地杰斯特拉算法,佛洛依德算法
5.动态规划的回文字符串?
6.排序算法?时间复杂度?稳定性算法?
7.查找算法
8.字符串匹配?
9.求一个数开根号(二分)
10.万个数找到第20个大小?
11.设计抢红包算法
12.字符串中最长不重复子串
13.动态规划与分支界限的差异,背包问题和分支界限的差异
14.出1-n的子集。比如123,有1,2,3,12,13,123,23.
VII.数据库
1.事务是什么
2.分布式事务
3.一二三范式
4.数据库的索引类型,数据库索引的作用
5.聚集索引和非聚集索引的区别
6.唯一性索引和主码索引的区别
7.数据库引擎,innodb和myisam的特点与区别
8.关系型和非关系型数据库的区别
9.数据库的隔离级别
10.数据库连接池的作用
11.数据的锁的种类,加锁的方式
12.数据库union join的区别
13.Inner join,left outter join,right outter join之间的区别
VIII.设计模式
1.单例模式
2.手写线程安全的单例模式?
3.工厂模式
4.装饰器模式
5.订阅/发布模式
6.观察者模式
7.MVC模式
IX.多线程编程
X.HR问题
目录 C++.................................................................................................................................................................. 8 1. 引用和指针的区别?...............................................................................................................8 2. 从汇编层去解释一下引用......................................................................................................8 3. C++中的指针参数传递和引用参数传递..........................................................................9 4. 形参与实参的区别?............................................................................................................ 10 5. static 的用法和作用?.......................................................................................................... 10 6. 静态变量什么时候初始化................................................................................................... 11 7. const?..........................................................................................................................................12 8. const 成员函数的理解和应用?....................................................................................... 13 9. 指针和 const 的用法............................................................................................................. 13 10. mutable................................................................................................................................. 13 extern 用法?...................................................................................................................... 13 11. 12. int 转字符串字符串转 int?strcat,strcpy,strncpy,memset,memcpy 的内部实 现? 14 13. 深拷贝与浅拷贝? ............................................................................................................ 14 C++模板是什么,底层怎么实现的?....................................................................... 15 14. 15. C 语言 struct 和 C++struct 区别.................................................................................. 15 16. 虚函数可以声明为 inline 吗?.........................................................................................15 17. 类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快 一些?..................................................................................................................................................15 18. 成员列表初始化? ............................................................................................................ 16 19. 构造函数为什么不能为虚函数?析构函数为什么要虚函数? ........................ 17 20. 析构函数的作用,如何起作用? ................................................................................ 18 21. 构造函数和析构函数可以调用虚函数吗,为什么................................................18 22. 构造函数的执行顺序?析构函数的执行顺序?构造函数内部干了啥?拷贝 构造干了啥?....................................................................................................................................18 23. 虚析构函数的作用,父类的析构函数是否要设置为虚函数? ........................ 19 24. 构造函数析构函数可以调用虚函数吗?.................................................................. 19 25. 构造函数析构函数可否抛出异常 ................................................................................ 19 26. 类如何实现只能静态分配和只能动态分配 ..............................................................19 27. 如果想将某个类用作基类,为什么该类必须定义而非声明? ........................ 20 28. 什么情况会自动生成默认构造函数? ....................................................................... 20 29. 什么是类的继承? ............................................................................................................ 20 30. 什么是组合? ......................................................................................................................21 31. 抽象基类为什么不能创建对象? ................................................................................ 21 32. 类什么时候会析构?........................................................................................................22 33. 为什么友元函数必须在类内部声明? ....................................................................... 22 34. 介绍一下 C++里面的多态?.........................................................................................22 35. 用 C 语言实现 C++的继承.............................................................................................23 36. 继承机制中对象之间如何转换?指针和引用之间如何转换? ........................ 25 37. 组合与继承优缺点?........................................................................................................25 38. 左值右值 ............................................................................................................................... 26
39. 移动构造函数 ......................................................................................................................26 C 语言的编译链接过程?...............................................................................................27 40. vector 与 list 的区别与应用?怎么找某 vector 或者 list 的倒数第二个元素27 41. 42. STL vector 的实现,删除其中的元素,迭代器如何变化?为什么是两倍扩容? 释放空间?........................................................................................................................................ 28 43. 容器内部删除一个元素 ................................................................................................... 29 44. STL 迭代器如何实现.........................................................................................................30 set 与 hash_set 的区别.....................................................................................................30 45. hashmap 与 map 的区别................................................................................................ 30 46. 47. map、set 是怎么实现的,红黑树是怎么能够同时实现这两种容器? 为什么 使用红黑树?....................................................................................................................................30 48. 如何在共享内存上使用 stl 标准库?..........................................................................30 49. map 插入方式有几种?.................................................................................................. 31 50. STL 中 unordered_map(hash_map)和 map 的区别,hash_map 如何解决冲突 以及扩容............................................................................................................................................. 31 51. vector 越界访问下标,map 越界访问下标?vector 删除元素时会不会释放空 间? 32 map[]与 find 的区别?.....................................................................................................32 52. STL 中 list 与 queue 之间的区别.................................................................................. 32 53. STL 中的 allocator,deallocator...................................................................................... 33 54. STL 中 hash_map 扩容发生什么?..............................................................................33 55. map 如何创建?................................................................................................................ 33 56. vector 的增加删除都是怎么做的?为什么是 1.5 倍?........................................34 57. 58. 函数指针?.......................................................................................................................... 35 59. 说说你对 c 和 c++的看法,c 和 c++的区别?......................................................36 60. c/c++的内存分配,详细说一下栈、堆、静态存储区?....................................36 61. 堆与栈的区别?................................................................................................................. 37 62. 野指针是什么?如何检测内存泄漏? ....................................................................... 37 63. 悬空指针和野指针有什么区别? ................................................................................ 38 64. 内存泄漏 ............................................................................................................................... 39 new 和 malloc 的区别?..................................................................................................39 65. delete p;与 delete[]p,allocator...................................................................................40 66. 67. new 和 delete 的实现原理, delete 是如何知道释放内存的大小的额?... 40 malloc 申请的存储空间能用 delete 释放吗.............................................................40 68. malloc 与 free 的实现原理?.........................................................................................41 69. 70. malloc、realloc、calloc 的区别....................................................................................41 71. __stdcall 和__cdecl 的区别?......................................................................................... 42 72. 使用智能指针管理内存资源,RAII............................................................................. 42 73. 手写实现智能指针类........................................................................................................42 74. 内存对齐?位域? ............................................................................................................ 42 75. 结构体变量比较是否相等.............................................................................................. 43 76. 位运算....................................................................................................................................43 77. 为什么内存对齐................................................................................................................. 43 78. 函数调用过程栈的变化,返回值和参数变量哪个先入栈?............................. 43
79. 怎样判断两个浮点数是否相等? ................................................................................ 44 80. 宏定义一个取两个数中较大值的功能 ....................................................................... 44 define、const、typedef、inline 使用方法?.......................................................... 44 81. 82. printf 实现原理?...............................................................................................................45 #include 的顺序以及尖叫括号和双引号的区别....................................................45 83. lambda 函数 ........................................................................................................................ 45 84. 85. hello world 程序开始到打印到屏幕上的全过程?................................................. 45 86. 模板类和模板函数的区别是什么?............................................................................46 87. 为什么模板类一般都是放在一个 h 文件中..............................................................46 88. C++中类成员的访问权限和继承权限问题。......................................................... 47 89. cout 和 printf 有什么区别? ..........................................................................................47 90. 重载运算符? ......................................................................................................................48 91. 函数重载函数匹配原则 ................................................................................................... 48 92. 定义和声明的区别 ............................................................................................................ 48 93. C++类型转换有四种........................................................................................................49 94. 全局变量和 static 变量的区别...................................................................................... 49 95. 静态成员与普通成员的区别 ..........................................................................................50 96. 说一下理解 ifdef endif..................................................................................................50 97. 隐式转换,如何消除隐式转换? ................................................................................ 51 98. 虚函数的内存结构,那菱形继承的虚函数内存结构呢...................................... 51 99. 多继承的优缺点,作为一个开发者怎么看待多继承 ........................................... 51 100. 迭代器++it,it++哪个好,为什么.................................................................................51 101. C++如何处理多个异常的?..........................................................................................52 102. 模板和实现可不可以不写在一个文件里面?为什么?...................................... 53 103. 在成员函数中调用 delete this 会出现什么问题?对象还可以使用吗?...... 53 104. 智能指针的作用; ............................................................................................................ 54 105. auto_ptr 作用.......................................................................................................................54 106. class、union、struct 的区别......................................................................................... 55 107. 动态联编与静态联编........................................................................................................55 108. 动态编译与静态编译........................................................................................................56 109. 动态链接和静态链接区别.............................................................................................. 56 110. 在不使用额外空间的情况下,交换两个数?......................................................... 56 111. strcpy 和 memcpy 的区别.............................................................................................. 57 112. 执行 int main(int argc, char *argv[])时的内存结构 ................................................57 113. volatile 关键字的作用?..................................................................................................57 114. 讲讲大端小端,如何检测(三种方法).................................................................. 58 115. 查看内存的方法................................................................................................................. 58 116. 空类会默认添加哪些东西?怎么写? ....................................................................... 58 117. 标准库是什么?................................................................................................................. 59 const char* 与 string 之间的关系,传递参数问题?..........................................59 118. 119. new、delete、operator new、operator delete、placement new、placement delete 60 120. 为什么拷贝构造函数必须传引用不能传值?......................................................... 60 121. 空类的大小是多少?为什么?..................................................................................... 61
122. 你什么情况用指针当参数,什么时候用引用,为什么? ..................................61 123. 大内存申请时候选用哪种?C++变量存在哪?变量的大小存在哪?符号表 存在哪?............................................................................................................................................. 62 124. 为什么会有大端小端,htol 这一类函数的作用.....................................................62 125. 静态函数能定义为虚函数吗?常函数?..................................................................... 62 126. this 指针调用成员变量时,堆栈会发生什么变化? ............................................ 62 127. 静态绑定和动态绑定的介绍 ..........................................................................................63 128. 设计一个类计算子类的个数 ..........................................................................................63 129. 怎么快速定位错误出现的地方..................................................................................... 63 130. 虚函数的代价?................................................................................................................. 63 131. 类对象的大小 ......................................................................................................................63 132. 移动构造函数 ......................................................................................................................64 133. 何时需要合成构造函数 ................................................................................................... 64 134. 何时需要合成复制构造函数 ..........................................................................................65 135. 何时需要成员初始化列表?过程是什么? ..............................................................65 136. 程序员定义的析构函数被扩展的过程?.................................................................. 65 137. 构造函数的执行算法? ................................................................................................... 66 138. 构造函数的扩展过程? ................................................................................................... 66 139. 哪些函数不能是虚函数 ................................................................................................... 66 140. sizeof 和 strlen 的区别...................................................................................................66 141. 简述 strcpy、sprintf 与 memcpy 的区别...................................................................67 142. 编码实现某一变量某位清 0 或置 1.............................................................................67 143. 将“引用”作为函数参数有哪些特点?........................................................................ 68 144. 分别写出 BOOL,int,float,指针类型的变量 a 与“零”的比较语句。..................68 145. 局部变量全局变量的问题? ..........................................................................................68 146. 数组和指针的区别?........................................................................................................69 147. C++ 如 何 阻 止 一 个 类 被 实 例 化 ? 一 般 在 什 么 时 候 将 构 造 函 数 声 明 为 private?............................................................................................................................................. 69 148. 如何禁止自动生成拷贝构造函数?............................................................................69 149. assert 与 NDEBUGE...........................................................................................................69 150. Denug 和 release 的区别................................................................................................ 70 151. main 函数有没有返回值................................................................................................. 70 152. 写一个比较大小的模板函数 ..........................................................................................70 153. c++怎么实现一个函数先于 main 函数运行 ............................................................70 154. 虚函数与纯虚函数的区别在于..................................................................................... 71 155. 智能指针怎么用?智能指针出现循环引用怎么解决?...................................... 72 156. strcpy 函数和 strncpy 函数的区别?哪个函数更安全?.....................................72 157. 为什么要用 static_cast 转换而不用 c 语言中的转换?........................................72 158. 成员函数里 memset(this,0,sizeof(*this))会发生什么.............................................73 159. 方法调用的原理(栈,汇编)..................................................................................... 73 160. MFC 消息处理如何封装的?.........................................................................................74 161. 回调函数的作用................................................................................................................. 74 162. 随机数的生成 ......................................................................................................................74 操作系统............................................................................................................................................. 74
1. 操作系统特点.......................................................................................................................... 74 2. 什么是进程............................................................................................................................... 75 3. 进程............................................................................................................................................. 75 4. 进程与线程的区别................................................................................................................. 75 5. 进程状态转换图......................................................................................................................75 6. 进程的创建过程?需要哪些函数?需要哪些数据结构?......................................... 76 7. 进程创建子进程,fork 详解.................................................................................................. 76 8. 子进程和父进程怎么通信?.............................................................................................. 77 9. 进程和作业的区别?............................................................................................................ 77 10. 死锁是什么?必要条件?如何解决? ....................................................................... 77 11. 鸵鸟策略 ............................................................................................................................... 78 12. 银行家算法.......................................................................................................................... 79 13. 进程间通信方式有几种,他们之间的区别是什么? ........................................... 79 14. 线程同步的方式?怎么用? ..........................................................................................80 15. 页和段的区别?................................................................................................................. 81 16. 孤儿进程和僵尸进程的区别?怎么避免这两类进程?守护进程? ............... 81 17. 守护进程是什么?怎么实现?..................................................................................... 82 18. 线程和进程的区别?线程共享的资源是什么? .................................................... 82 19. 线程比进程具有哪些优势? ..........................................................................................83 20. 什么时候用多进程?什么时候用多线程? ..............................................................83 21. 协程是什么? ......................................................................................................................83 22. 递归锁? ............................................................................................................................... 84 23. 用户态到内核态的转化原理?..................................................................................... 84 24. 中断的实现与作用,中断的实现过程?.................................................................. 85 25. 系统中断是什么,用户态和内核态的区别 ..............................................................85 26. CPU 中断...............................................................................................................................85 27. 执行一个系统调用时,OS 发生的过程,越详细越好 1.执行用户程序 (如:fork)...........................................................................................................................................86 28. 函数调用和系统调用的区别?..................................................................................... 86 29. 经典同步问题解法:生产者与消费者问题,哲学家进餐问题,读者写者问题。 87 30. 虚拟内存?使用虚拟内存的优点?什么是虚拟地址空间?............................. 87 31. 线程安全?如何实现? ................................................................................................... 87 32. linux 文件系统.....................................................................................................................88 33. 常见的 IO 模型,五种?异步 IO 应用场景?有什么缺点?.............................88 34. IO 复用的原理?零拷贝?三个函数?epoll 的 LT 和 ET 模式的理解。.......89 35. Linux 是如何避免内存碎片的........................................................................................91 36. 递归的原理是啥?递归中遇到栈溢出怎么解决 .................................................... 91 37. ++i 是否是原子操作.........................................................................................................92 38. 缺页中断,页表寻址........................................................................................................92 39. LRU 的实现...........................................................................................................................93 40. 内存分区 ............................................................................................................................... 93 41. 伙伴系统相关 ......................................................................................................................93 I/O 控制方式........................................................................................................................94 42.
Spooling 技术......................................................................................................................95 43. 44. 通道技术 ............................................................................................................................... 96 45. 共享内存的实现................................................................................................................. 96 46. 计一个线程池,内存池 ................................................................................................... 96 Linux..................................................................................................................................................... 97 Inode 节点................................................................................................................................ 97 1. 2. Linux 软连接、硬链接,删除了软连接的源文件软连接可用?...........................97 Linux 系统应用程序的内存空间是怎么分配的,用户空间多大,内核空间多大? 3. 98 4. Linux 的共享内存如何实现.................................................................................................98 5. 文件处理 grep,awk,sed 这三个命令必知必会............................................................. 99 6. 查询进程占用 CPU 的命令..................................................................................................99 7. 一个程序从开始运行到结束的完整过程....................................................................... 99 8. 一般情况下在 Linux/windows 平台下栈空间的大小..............................................100 Linux 重定向.......................................................................................................................... 100 9. 10. Linux 常用命令................................................................................................................. 100 网络....................................................................................................................................................101 物理层......................................................................................................................................101 一、 数据链路层.............................................................................................................................101 二、 网络层......................................................................................................................................101 三、 运输层......................................................................................................................................104 四、 五、 应用层......................................................................................................................................115 数据结构....................................................................................................................................................126 1. 常用查找算法?具体实现.................................................................................................126 2. 常用排序算法?具体实现,哪些是稳定的,时间复杂度、空间复杂度,快速排 序非递归如何实现?快排的优势?....................................................................................... 126 3. 图的常用算法?................................................................................................................... 126 4. 哈夫曼编码?........................................................................................................................127 5. ***AVL 树、B+树、红黑树、B 树 B+树区别,B+树应用在哪里?..................127 6. 为什么使用红黑树,什么情况使用 AVL 树。红黑树比 AVL 树有什么优点。 127 7. 单链表如何判断有环?..................................................................................................... 128 8. 如何判断一个图是否连同?............................................................................................128 hash 用在什么地方,解决 hash 冲突的几种方法?负载因子?..........................128 9. 10. n 个节点的二叉树的所有不同构的个数 .................................................................129 11. 二叉树的公共祖先,排序二叉树的公共祖先.......................................................129 12. 节点的最大距离...............................................................................................................129 13. 把一颗二叉树原地变成一个双向链表 .....................................................................130 14. 二叉树的所有路径 ..........................................................................................................130 15. 二叉树中寻找每一层中最大值? ..............................................................................130 16. 最大深度、最小深度、会否是平衡树 .....................................................................131 17. 二叉树中叶子节点的数量............................................................................................132 18. 交换左右孩子、二叉树镜像 ....................................................................................... 132 19. 两个二叉树是否相等..................................................................................................... 132
20. 是否为完全二叉树 ..........................................................................................................133 21. 是否为对称二叉树 ..........................................................................................................133 22. 判断 B 是否为 A 的子树................................................................................................133 23. 构建哈夫曼树 ................................................................................................................... 134 24. 手写单链表反转?删除指定的单链表的一个节点............................................. 134 25. 实现一个循环队列 ..........................................................................................................134 26. Top K 问题......................................................................................................................... 135 27. 求一颗树的最大距离..................................................................................................... 135 28. KMP...................................................................................................................................... 135 29. 数组和链表的区别?........................................................................................................135 30. 逆序对思路........................................................................................................................136 31. 100 个有序数组合并...................................................................................................... 136 32. 使用递归和非递归求二叉树的深度......................................................................... 136 33. 索引、链表的优缺点? .................................................................................................136 34. 找一个点为中心的圆里包含的所有的点。 ........................................................... 136 35. 字典树的理解 ................................................................................................................... 136 36. 快速排序的优化...............................................................................................................136 37. 海量数据的 bitmap 使用原理.....................................................................................137 算法....................................................................................................................................................137 数据库............................................................................................................................................... 139 1. 事务是什么.............................................................................................................................139 2. 分布式事务.............................................................................................................................139 3. 一二三范式.............................................................................................................................139 4. 数据库的索引类型,数据库索引的作用.....................................................................140 5. 聚集索引和非聚集索引的区别....................................................................................... 140 6. 唯一性索引和主码索引的区别....................................................................................... 141 7. 数据库引擎,innodb 和 myisam 的特点与区别......................................................141 8. 关系型和非关系型数据库的区别...................................................................................141 9. 数据库的隔离级别...............................................................................................................142 10. 数据库连接池的作用..................................................................................................... 142 11. 数据的锁的种类,加锁的方式...................................................................................143 12. 数据库 union join 的区别.............................................................................................143 13. Inner join,left outter join,right outter join 之间的区别...................................... 143 设计模式...........................................................................................................................................143 1. 单例模式................................................................................................................................. 143 2. 手写线程安全的单例模式?............................................................................................144 3. 工厂模式................................................................................................................................. 144 4. 装饰器模式.............................................................................................................................144 5. 订阅/发布模式.......................................................................................................................144 6. 观察者模式.............................................................................................................................144 7. MVC 模式............................................................................................................................... 145 多线程编程......................................................................................................................................145 1................................................................................................................................................................. HR 问题...................................................................................................................................................... 145
C++ 1. 引用和指针的区别? 1) 指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。 2) 引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要 初始化,并且指向的空间可变。(注:不能有引用的值不能为 NULL) 3) 有多级指针,但是没有多级引用,只能有一级引用。 4) 指针和引用的自增运算结果不一样。(指针是指向下一个空间,引用时引用的变量 值加 1) 5) sizeof 引用得到的是所指向的变量(对象)的大小,而 sizeof 指针得到的是指针 本身的大小。 6) 引用访问一个变量是直接访问,而指针访问一个变量是间接访问。 7) 使用指针前最好做类型检查,防止野指针的出现; 8) 引用底层是通过指针实现的; 9) 作为参数时也不同,传指针的实质是传值,传递的值是指针的地址;传 引用的实质是传地址,传递的是变量的地址。 2. 从汇编层去解释一下引用 1. 2. 3. 4. 5. 9: 00401048 10: 0040104F 00401052 int x = 1; mov int &b = x; lea mov dword ptr [ebp-4],1 eax,[ebp-4] dword ptr [ebp-8],eax x 的地址为 ebp-4,b 的地址为 ebp-8,因为栈内的变量内存是从高往低进行分配 的。所以 b 的地址比 x 的低。lea eax,[ebp-4] 这条语句将 x 的地址 ebp-4 放 入 eax 寄存器 mov dword ptr [ebp-8],eax 这条语句将 eax 的值放入 b 的地址 e bp-8 中上面两条汇编的作用即:将 x 的地址存入变量 b 中,这不和将某个变量的 地址存入指针变量是一样的吗?所以从汇编层次来看,的确引用是通过指针来实 现的。
分享到:
收藏