一些知识的总结

一、C++语言相关

1.关键字
(1)static +3
(2)const +3
内部如何实现
(3)union
const int与int const的区别
(3)inline +2
(4)sizeof
2.C++特性
(1)重写与重载的区别  +2
(2)C++类与C的struct的区别 +2
struct能否被继承
(3)delete与free的区别,new和,malloc +7
malloc是怎么实现的, free是否会直接回收内存
delete和delete []
(4)虚函数与纯虚函数的作用
纯虚函数能否被实例化
那些函数不能被设置为虚函数 +2
new最多可以new多大
(4)C11是什么,C++11特性 +3
(5)构造函数和析构函数分别能否是虚函数以及其原因 +2
(6)面向对象的四大原则
(7)指针和引用的区别 +5
站在汇编的角度来看,由于指针的使用灵活,使得底层实现中对指针的安全性检查更加严格
(8)初始化列表和函数体初始化,顺序
(9)八个基本数据类型
(10)智能指针 +3
原理
(12)拷贝构造函数
为什么返回引用
那些场景必须使用初始化列表
(13)C++是如何实现面向对象的
3.技巧
(1)内存泄漏的处理
(2)gdb调试
查看core文件中堆栈信息,bt命令等
(3)segmentfault怎么排查
4.底层
(1)编译器如何实现多态 +8
(2)内存管理、栈和堆 +5
C++中有哪些内存区域?对象是如何在这些区域中存储的?
(3)内存对象模型 +4
虚函数表的存放位置,为什么会有的把vbtr存放在前面,为什么有的存放在后面
(4)类成员访问权限的底层实现
(5)extern "C"的作用。

二、STL库相关

1.vector
(1)动态增长机制
stl用什么容器存储三维矩阵?
vector怎么使数据加入后就排序
2.map
底层实现
3.hash_map
4.list
5.deque
6.queue
7.stack
8.迭代器不能用与哪种容器?或者哪些情况下不能使用迭代器

三、数据结构与算法

1.链表
(1)链表排序
2.树
先序遍历和后序遍历能否构造出树?
层次遍历,深度遍历
红黑树与avl树的区别?局部平衡和整体平衡
(1)红黑树 +2
(2)二叉树
(3)B+树
(4)B-树
3.排序
各种排序方法、场景、复杂度、稳定度
(1)topn问题 +3
无序数组的第K大的数字,时间复杂度
(2)冒泡排序
(3)选择排序
(4)插入排序
(5)快速排序
优化方法
在什么情况下是不稳定的
(6)归并排序
4.图
(1)dijkstra算法和kruskal算法
5.算法
(1)KMP问题 +2
(2)动态规划几个经典问题
字符串的各种子串问题(公共序列问题),扔鸡蛋问题,进制转换

四、操作系统

1.TLB 
2.Linux内存页与windows内存页大小是否一样
3.进程调度算法
4.死锁的四个条件,怎么解决
5.虚拟内存管理

五、计算机网络

1.OSI的七层网络和TCP/IP的五层网络
2.IP协议的定义
3.TCP与UDP  +6
TCP在握手过程中交换那些信息
如何用UDP实现可靠传输
TCP三次握手过程,为啥不是两次或者四次
TCP状态图、拥塞避免算法、滑动窗口算法 +2
4.交换机与路由器的原理,在第几层
5.socket
流程
6.https和http是什么协议,区别,https是如何实现的 +3
7.加密算法,MD5是什么
8.IO模型,select poll和epoll +5
9.DNS 域名解析系统 +2

六、Linux

1.Linux操作系统的开机流程 +2
从BIOS提取MBR信息->加载引导GRUB->加载内核->运行init进程->系统初始化->建立终端->登录系统,启动完成
开机后怎么启动一个程序
2.线程与进程,线程安全  +4
进程通信
线程同步
共享内存
多线程的适用场景是什么,为啥要多线程
多线程访问内存时怎么办
3.命令
(1)查找文件命令,查找文件含有关键字的命令,统计行数 +2
(2)top
(3)iostat
(4)uptime
(5)wget
(6)ls
(7)du
(8)awk
(9)ps
(10)pstree
(11)free
(12)grep
(13)sed
(14)strace
(15)netstat
4.radix树在Linux内核中的应用
5.服务器Linux与desktop Linux的区别
6.系统调用与库函数调用的区别
fopen是否是系统调用,close是否是系统调用
7.如何修改优先级
8.Linux文件系统
9.Linux内存布局 +2
10.内核态与用户态的区别

七、数据库

1.数据库的事务
2.数据库为什么要建立索引以及索引的缺点

八、设计模式

(1)单例模式

九、相关题目

1.一个数字,化为二进制,交换奇偶位置
2.给定1~100整数,确定的1~100,即1、2、3、。。。100。有1个缺了怎么办,2个呢
3.大文件字符串词频统计
map reduce? +2
4.二叉树的最大子树和
5.实现strstr
6.如何用C语言实现内存自动分配 
7.二叉树的最大距离
8.两个栈实现一个队列 +2
9.二叉树的宽度
10.打印二叉树两个叶子节点之间的路径,写代码
11.字符串中第一个只出现一次的字符,如何优化算法使得遍历次数更少
12.能否用memset实例化一个类
13.已知前序遍历和中序遍历,求后序遍历
14.自增运算符的步骤(内存,寄存器),有两个线程分别自增100次,问最后结果的最大最小值?
15.在一个数组中有一个数字只出现1次外,其它数字都成对出现,如何找出这个数字?如果有两个数字出现1次呢?
16.单链表逆序
17.给出一颗二叉树,如何判断是否是完全二叉树
18.最大子串和问题
19.delete时,没有指明销毁空间有多大,它是如何知道要delete的数组是多大的.
20.一棵树的两个结点的最近公共祖先 +2
21.上千万条记录,统计出重复记录最多的前N条
22.数据量大时,外部排序如何实现
23.二叉树后序遍历非递归排序算法,有没有可能实现O(1)空间复杂度?用morris遍历方法即可
24.如何设计一套C++垃圾收集的系统
25.什么时候用**pointer
26.如何将一个指向大小为size_t S的内存的void*类型的指针A,复制到void* B,复制过程重新开辟一块内存,不能直接把A存的地址给B
27.如何将一个数组创建为一个堆 +2
28.C++是否保证类型安全?
29.子类析构时一定会调用父类的析构函数吗?
30.strcpy和memcpy的区别?
31.C++中哪些操作符不能进行重载?
32.switch语句支持的元素类型有哪些?
33.为什么通常类成员函数的定义不放在头文件中?
34.能否从模板类中派生出非模板类?
35.Windows中如何创建一个进程?如何创建一个线程?
36.大端机和小端机的区别,如何用编程识别出来
37求一个字符串最长不包含重复字符的连续子串
38.C语言中变量存储为什么要内存对齐;为什么除法比加减乘法慢很多
39.2^10234十进制表示有多少位写成科学计数法形式即a*10^t,求出t即可,两边取对数
40.vector的sort是用什么排序
41.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
生命周期不同: 全局变量随主程序创建和创建,随主程序销毁而销毁;局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用;分配在栈区。 操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面
42.HTTP状态码有哪些?3XX、4XX、5XX有哪些是做什么的
43.LINUX下C 文件连接的问题,动态链接和静态链接

十、智力题

1.54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少? 
2.在写程序遇到问题的时候,通常采用什么调试方法?
3.有100个球,每次取1-5个,你和对手轮流取,如果你先拿,请给出致胜策略?
4.给你一个5升和3升的壶,量出4升水

十一、扩展知识

1.mapreduce是怎么工作的,外排序是怎么工作的 +2


猜你喜欢

转载自blog.csdn.net/luchengtao11/article/details/76473237