基础篇:操作系统、计算机网络、设计模式
一: 操作系统
- 进程的有哪几种状态,状态转换图,及导致转换的事件。
- 进程与线程的区别。
- 进程通信的几种方式。
- 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)
- 线程的实现方式. (也就是用户线程与内核线程的区别)
- 用户态和核心态的区别。
- 用户栈和内核栈的区别。
- 内存池、进程池、线程池。(c++程序员必须掌握)
- 死锁的概念,导致死锁的原因.
- 导致死锁的四个必要条件。
- 处理死锁的四个方式。
- 预防死锁的方法、避免死锁的方法。
- 进程调度算法。(周转时间 = 程序结束时间 – 开始服务时间、带权周转时间= 周转时间 / 要求服务时间)
- Windows内存管理的方式(块式、页式、段式、段页式).
- 内存连续分配方式采用的几种算法及各自优劣。
- 动态链接及静态链接.
- 基本分页、请求分页储存管理方式。
- 基本分段、请求分段储存管理方式。
- 分段分页方式的比较各自优缺点。
- 几种页面置换算法,会算所需换页数。(LRU用程序如何实现?)
- 虚拟内存的定义及实现方式。
- 操作系统的四个特性。
- DMA。
- Spooling。
- 外存分配的几种方式,及各种优劣。
二: 计算机网络
- 电路交换与分组交换的区别?优劣对比。
- OSI有哪几层,会画出来,知道主要几层的各自作用。
- TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称。
- 硬件(MAC)地址的概念及作用。
- ARP协议的用途 及算法、在哪一层上会使用arp ?
- CRC冗余校验算法,反码和检验算法。
- 如何实现透明传输。
- 知道各个层使用的是哪个数据交换设备。(交换机、路由器、网关)
- 路由表的内容。
- 分组转发算法。
- IP报文的格式,格式的各个字段的含义要理解。
12.MTU的概念,啥叫路径MTU? MTU发现机制,TraceRoute(了解)。
13.RIP协议的概念及算法。
14.ICMP协议的主要功能。
15.组播和广播的概念,IGMP的用途。(环回地址、广播地址)
16.Ping协议的实现原理,ping 命令格式。 - 子网划分的概念,子网掩码。
- IP地址的分类,如何划分的,及会计算各类地址支持的主机数。
19.DNS的概念,用途,DNS查询的实现算法。 - TCP与UDP的概念,相互的区别及优劣。
21.UDP报文的格式,字段的意义。 - TCP 报文的格式,字段的意义。
23.TCP通过哪些措施,保证传输可靠? - 三次握手,四次断开过程。
- TIME_WAIT状态的概念及意义。
26.滑动窗口协议 与停止等待协议的区别。 - TCP的流量控制和拥塞控制实现原理(会画拥塞控制的典型图)。
28.TCP的快速重传与快速恢复算法。
29.TFTP 与 FTP的区别。
30.阻塞方式和非阻塞方式,阻塞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表示什么意思?
- 关闭线程和关闭进程的函数分别是什么?
- 线程局部存储(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的概念及用途,添加删除结点的原理。
转自:http://www.itmian4.com/forum.php?mod=viewthread&tid=3614&extra=&page=1