知识点总结
基础篇:操作系统、计算机网络、设计模式
一、操作系统
-
进程的有哪几种状态,状态转换图,及导致转换的事件。
-
进程与线程的区别。
-
进程通信的几种方式。
-
线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)
-
线程的实现方式. (也就是用户线程与内核线程的区别)
-
用户态和核心态的区别。
-
用户栈和内核栈的区别。
-
内存池、进程池、线程池。(c++程序员必须掌握)
-
死锁的概念,导致死锁的原因.
-
导致死锁的四个必要条件。
-
处理死锁的四个方式。
-
预防死锁的方法、避免死锁的方法。
-
进程调度算法。(周转时间 = 程序结束时间 – 开始服务时间、带权周转时间= 周转时间 / 要求服务时间)
-
Windows内存管理的方式(块式、页式、段式、段页式).
-
内存连续分配方式采用的几种算法及各自优劣。
-
动态链接及静态链接.
-
基本分页、请求分页储存管理方式。
-
基本分段、请求分段储存管理方式。
-
分段分页方式的比较各自优缺点。
-
几种页面置换算法,会算所需换页数。(LRU用程序如何实现?)
-
虚拟内存的定义及实现方式。
-
操作系统的四个特性。
-
DMA。
-
Spooling。
-
外存分配的几种方式,及各种优劣。
二、计算机网络
-
电路交换与分组交换的区别?优劣对比。
-
OSI有哪几层,会画出来,知道主要几层的各自作用。
-
TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称。
-
硬件(MAC)地址的概念及作用。
-
ARP协议的用途 及算法、在哪一层上会使用arp ?
-
CRC冗余校验算法,反码和检验算法。
-
如何实现透明传输。
-
知道各个层使用的是哪个数据交换设备。(交换机、路由器、网关)
-
路由表的内容。
-
分组转发算法。
-
IP报文的格式,格式的各个字段的含义要理解。
-
MTU的概念,啥叫路径MTU? MTU发现机制,TraceRoute(了解)。
-
RIP协议的概念及算法。
-
ICMP协议的主要功能。
-
组播和广播的概念,IGMP的用途。(环回地址、广播地址)
-
Ping协议的实现原理,ping 命令格式。
-
子网划分的概念,子网掩码。
-
IP地址的分类,如何划分的,及会计算各类地址支持的主机数。
-
DNS的概念,用途,DNS查询的实现算法。
-
TCP与UDP的概念,相互的区别及优劣。
-
UDP报文的格式,字段的意义。
-
TCP 报文的格式,字段的意义。
-
TCP通过哪些措施,保证传输可靠?
-
三次握手,四次断开过程。
-
TIME_WAIT状态的概念及意义。
-
滑动窗口协议 与停止等待协议的区别。
-
TCP的流量控制和拥塞控制实现原理(会画拥塞控制的典型图)。
-
TCP的快速重传与快速恢复算法。
-
TFTP 与 FTP的区别。
-
阻塞方式和非阻塞方式,阻塞connect与非阻塞connect。(比较难,有兴趣可以了解)
-
HTTP基本格式。(Java程序员必须掌握)
三、设计模式
-
各种常用模式的用途,使用方法(类图)。
-
单例模式的双重检查实现。
-
MVC模式
提高篇:WIN32、MFC与Linux
一、 WIN32
-
Win32应用程序的基本类型.
-
创建win32窗口程序的几个步骤,及使用到的函数。
-
nmake 与 makefile。
-
有哪些字符集? Win32对于各种字符集如何进行兼容及转换? (wchar_t、TCHAR、TEXT() )。
-
怎么创建一个子窗口?在哪进行设置?
-
窗口类的分类,如何创建一个应用程序全局窗口类。
-
Win32窗口程序运行机制与控制台程序的运行机制有何区别?
-
Getmessage函数的作用,与Peekmessage函数的区别。
-
发送WM_QUIT消息使程序终止的内部过程。
-
TranslateMessage及 DispatchMessage的作用。
-
SendMessage与PostMessage的区别。
-
Win32消息机制获取消息的过程(先查看什么消息?再查看什么消息?)
-
知道有哪几类主要的消息。(WM_CREATE, WM_DESTROY, WM_SIZE, WM_SYSCOMMAND, WM_COMMAND, WM_PAINT, 鼠标消息, 键盘消息)。
-
定时器如何使用。
-
用户自定义消息如何定义。
-
创建菜单、设置菜单的函数,在哪处理菜单命令的消息。
-
加速键如何使用?
-
GDI绘图对象,使用的步骤,及函数。
-
使用位图的步骤及用到的主要函数。
-
可用于文字绘制的API函数。
-
有模式对话框与无模式对话框的区别,创建步骤。收到的创建消息是什么?
-
子控件和父窗口通过什么进行通信? 父窗口在哪里处理子窗口发送的消息?
-
有哪些常见的子控件?(静态框、编辑框、按钮、listbox、comboBox、滚动条)25. 什么样的控件支持自绘制?
-
动态库与静态库的区别。
-
Win32里面怎样用静态库? C++程序在引用c的静态库时,需要注意什么?
-
Win32里面动态库有哪几种导出方式,有哪几种导入方式?(注意c++的导出方式)
-
Win32里面文件打开和关闭的API。
-
Windows地址空间的划分。
-
Windows 内存使用的几种方式及相应的函数(虚拟内存、堆内存、栈内存)。
-
Malloc内部调用A函数,A函数调用B函数。A和B分别是什么?
-
内存映射文件的作用。主要函数。
-
创建进程和打开进程用什么函数? 有什么区别?
-
创建线程用什么函数?
-
Waitforsingleobject与Waitformultiobjects的区别。Waitforsingleobject的第二个参数为0表示什么意思?37. 关闭线程和关闭进程的函数分别是什么?
-
线程局部存储(TLS)的意义,如何指定一个变量的TLS属性。
-
Win32线程同步提供的方式,及主要函数为什么?
-
提供的同步措施中哪些是内核对象? 试比较互斥量和临界区。
二、MFC
-
MFC包含哪几类程序? 其中MFC应用程序又包含哪几类?
-
MFC的中的大多数类都继承自哪个类?
-
MFC主要要用到哪几个类?及其各个类的作用。
-
MFC中有哪6类核心机制?Cobject中封装了哪些机制?
-
在哪个类的什么函数中进行MFC程序初始化? 相当于main功能的函数。
-
MFC应用程序的启动机制的实现。(几个步骤及相关函数)
-
窗口的创建及窗口处理函数机制的实现。(几个步骤及相关用到函数)
-
消息映射机制的原理及实现。宏。(查找消息处理函数的几个步骤及其函数)
-
MFC的消息分类。自注册消息用什么函数进行注册?消息映射宏是什么?
-
MFC菜单、工具栏、状态栏所用的类是什么?
-
怎么定义一个视图窗口?
-
划分窗口使用什么类? 划分窗口有哪两类,有什么区别?
-
运行时类信息 机制的宏,及原理。CRuntimeClass的内容,isKindOf实现方法。
-
动态创建 机制的宏,及实现。与运行时类信息在内容添加上的区别?
-
消息的派发会经过哪几个类?一般在哪个类里进行处理?SetActiveView的作用。
-
单文档、多文档模板类是什么? 保存模板类用什么函数?新建模板用什么函数?
-
单文档视图的创建过程及所用到的相关函数。
-
MFC绘图有哪几类DC?各自的类名,及区别。
-
MFC有哪几类绘图对象?各自的类名。
-
MFC有哪几类数据集合类?CMAP的底层实现?
-
MFC的文件类是什么?文件查找类是什么?
-
序列化机制 的宏,怎么使用? 执行>>和<<时进行的内部操作及其相应函数。
-
MFC的对话框的种类,各自怎么使用?及相关函数。
-
定义对话框数据交换的步骤,及使用方法,实现原理。
-
通用对话框有哪些,试举例。
-
MFC常用的通用控件有哪些?举出类名。
-
MFC的动态库有哪几种类型?扩展库一般用来做什么?
-
MFC的线程有哪几类? 相互有什么区别?各自的创建方法是什么?
-
VC环境下可以使用哪几类socket? 其中MFC的socket类 有哪几种,各自区别?类名是什么?用什么函数初始化MFC的socket库。
三、Linux基本命令
-
绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
-
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
-
怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户id?查看指定帮助用什么命令?
-
Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
-
建立软链接(快捷方式),以及硬链接的命令。
-
目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
-
文件权限修改用什么命令?格式是怎么样的?
-
查看文件内容有哪些命令可以使用?
-
随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
-
终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
-
移动文件用哪个命令?改名用哪个命令?
-
复制文件用哪个命令?如果需要连同文件夹一块复制呢?如何需要有提示功能呢?
-
删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
-
Linux下命令有哪几种可使用的通配符?分别代表什么含义?
-
用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
-
Grep命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
-
Linux中进程有哪几种状态?在ps显示出来的信息中,分别用什么符号表示的?
-
怎么使一个命令在后台运行?
-
利用ps怎么显示所有的进程? 怎么利用ps查看指定进程的信息?
-
哪个命令专门用来查看后台任务?
-
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
-
终止进程用什么命令? 带什么参数?
-
怎么查看系统支持的所有信号?
-
搜索文件用什么命令? 格式是怎么样的?
-
查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
-
使用什么命令查看用过的命令列表?
-
使用什么命令查看磁盘使用空间? 空闲空间呢?
-
使用什么命令查看网络是否连通?
-
使用什么命令查看ip地址及接口信息?
-
查看各类环境变量用什么命令?
-
通过什么命令指定命令提示符?
-
查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
-
通过什么命令查找执行命令?34. 怎么对命令进行取别名?
四、Linux编程
-
列举Linux内存管理相关的几个函数,各自有什么功能?
-
GCC只编译的选项是什么?只进行预处理的选项是什么?在命令行定义宏的选项是什么?
-
Linux静态库的使用,怎么创建一个静态库? 怎么使用一个静态库?静态库文件的后缀名是什么?静态库的命名规范。
-
nm 工具的作用,ldd工具的作用。
-
Linux动态库的使用,怎么创建一个动态库? 动态库文件的后缀名是什么?怎么使用一个动态库?动态库的命名规范? 系统默认的动态库的查找路径?动态库显示连接所使用的系统库是什么?
-
Linux下make 与makefile。用什么参数指定makefile文件? 什么是默认的makefile文件。
-
在哪个文件夹下存有进程运行时的所有信息?
-
每个程序默认打开哪三个文件设备?
-
操作文件描述符的读写函数是什么?打开文件描述符以及关闭文件描述符的函数?
-
Fcntl函数主要的几个作用。
-
创建进程的几个函数,及各自区别。
-
父进程先结束,子进程会变为? 子进程先结束,子进程会变为?
-
怎么使父进程回收子进程? 相关的几个函数。
-
子进程在创建时与父进程的内存资源的复制问题。
-
中断信号、终止信号、定时器信号的宏是什么?
-
在程序中注册信号和发送信号用什么函数?
-
信号的可靠与不可靠的含义。哪些信号是可靠的?哪些信号是不可靠的?
-
信号屏蔽用什么函数? SigSuspend的作用? Sigpending的作用?
-
信号处理函数处理信号时是否会被信号中断?
-
最新版本的信号发送与处理函数?与老版本的发送与数据函数有什么区别?
-
Linux下进程有哪些通信方式(IPC)?
-
TCP服务器编程模型。
-
UDP服务器编程模型。
-
TCP编程特征,由于每次不定长数据到达,则一般使用什么选项?
-
Selected模型是什么? 相比而言多进程实现方式有什么区别?Selected、epoll模型、poll模型的区别。
-
常用的socket选项有哪些?利用哪个函数来设置socket选项?
-
怎么发送和设置带外(OOB)数据?
-
Linux 下多线程的库是什么? 利用哪个函数创建线程?利用哪个函数强制结束线程?主线程等待子线程结束时使用的函数?
-
线程怎样在被迫退出时能做一些善后处理?以及怎么用linux特有的方式处理?
算法篇:算法与数据结构
一、算法
-
算法的几个特征是什么。
-
算法复杂性的定义。大O、θ、、小o分别表示的含义。
-
递归算法的定义、递归算法的两要素。
-
分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)。
-
动态规划算法解题框架,动态规划算法的两个要素是什么?备忘录方法是什么?
-
经典的动态规划问题(矩阵连乘问题、最长公共子序列问题、0-1背包问题)。
-
贪心算法的思想,贪心算法的两个要素。
-
经典的贪心问题(活动安排问题、背包问题、装载问题、哈夫曼编码、单源最短路径、最小生成树问题)。9. 回溯法的思想,回溯法中有哪两种典型的模型。
-
经典的回溯算法(n后问题、0-1背包问题、旅行售货商问题)。
-
分支限界法思想,有哪两种分支限界法。
-
经典的分支限界算法(0-1背包问题、旅行售货商问题)。
二、数据结构
-
数据结构的定义。
-
栈的两个应用:括号匹配和表达式的计算。是怎么应用的?表达式计算用的是哪种表达方式?有什么好处?
-
字符串匹配算法:朴素的匹配算法、KMP算法。
-
二叉树前序、中序、后序递归遍历算法。二叉树前序非递归遍历算法。
-
堆,建堆算法,堆的插入和删除算法,堆排序。
-
哈希。哈希函数的有哪些种?余数的取法? 处理冲突的方法? 闭散列方法有哪些?
-
二叉搜索树的搜索、插入、删除。时间复杂度。
-
二叉平衡树的插入结点的原理,有哪几种旋转方式?分别适用于哪种情况。分析二叉平衡树的时间复杂度。
-
红黑树的定义,红黑树的性能分析和与二叉平衡树的比较。
-
图有哪些储存表示。
-
链表插入排序、链表归并排序。
-
常见的有哪几种排序算法,试比较其时间复杂度,以及是否稳定,及各自使用的情形。
-
常用分配排序有哪几种? 基数排序的定义,分类及原理。
-
外部排序的过程。
-
B树、B+树、Trie的概念及用途,添加删除结点的原理。
参考
来源:51博客