牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

上传人:飞*** 文档编号:3174550 上传时间:2017-07-31 格式:DOC 页数:7 大小:55.50KB
返回 下载 相关 举报
牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结_第1页
第1页 / 共7页
牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结_第2页
第2页 / 共7页
牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结_第3页
第3页 / 共7页
牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结_第4页
第4页 / 共7页
牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结》由会员分享,可在线阅读,更多相关《牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结(7页珍藏版)》请在金锄头文库上搜索。

1、综合面试 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、 Linux 编程,数据结构总结分类: 面试准备 2014-07-29 10:01 946 人阅读 评论(0) 收藏 举报基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c+程序员必须掌握)9. 死锁的概念,导

2、致死锁的原因.10. 导致死锁的四个必要条件。11. 处理死锁的四个方式。12. 预防死锁的方法、避免死锁的方法。13. 进程调度算法。( 周转时间 = 程序结束时间 - 开始服务时间、带权周转时间= 周转时间 / 要求服务时间)14. Windows 内存管理的方式( 块式、页式、段式、段页式).15. 内存连续分配方式采用的几种算法及各自优劣。16. 动态链接及静态链接.17. 基本分页、请求分页储存管理方式。18. 基本分段、请求分段储存管理方式。19. 分段分页方式的比较各自优缺点。20. 几种页面置换算法,会算所需换页数。(LRU 用程序如何实现? )21. 虚拟内存的定义及实现方式

3、。22. 操作系统的四个特性。23. DMA。24. Spooling。25. 外存分配的几种方式,及各种优劣。二:计算机网络1. 电路交换与分组交换的区别?优劣对比。2. OSI 有哪几层,会画出来,知道主要几层的各自作用。3. TCP/IP 有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称。4. 硬件(MAC) 地址的概念及作用。5. ARP 协议的用途 及算法、在哪一层上会使用 arp ?6. CRC 冗余校验算法,反码和检验算法。7. 如何实现透明传输。8. 知道各个层使用的是哪个数据交换设备。 (交换机、路由器、网关)9. 路由表的内容。10. 分组转发算法。11.

4、IP 报文的格式,格式的各个字段的含义要理解。12.MTU 的概念,啥叫路径 MTU? MTU 发现机制,TraceRoute(了解) 。13.RIP 协议的概念及算法。14.ICMP 协议的主要功能。15.组播和广播的概念,IGMP 的用途。(环回地址、广播地址)16.Ping 协议的实现原理, ping 命令格式。17. 子网划分的概念,子网掩码。18. IP 地址的分类,如何划分的,及会计算各类地址支持的主机数。19.DNS 的概念,用途,DNS 查询的实现算法。20. TCP 与 UDP 的概念,相互的区别及优劣。21.UDP 报文的格式,字段的意义。22. TCP 报文的格式,字段的

5、意义。23.TCP 通过哪些措施,保证传输可靠?24. 三次握手,四次断开过程。25. TIME_WAIT 状态的概念及意义。26.滑动窗口协议 与停止等待协议的区别。27. TCP 的流量控制和拥塞控制实现原理(会画拥塞控制的典型图)。28.TCP 的快速重传与快速恢复算法。29.TFTP 与 FTP 的区别。30.阻塞方式和非阻塞方式,阻塞 connect 与非阻塞 connect。(比较难,有兴趣可以了解)31. HTTP 基本格式。 (java 程序员必须掌握)三:设计模式1. 各种常用模式的用途,使用方法(类图) 。2. 单例模式的双重检查实现。3. MVC 模式提高篇:WIN32

6、、MFC 与 Linux一: WIN321. Win32 应用程序的基本类型.2. 创建 win32 窗口程序的几个步骤,及使用到的函数。3. nmake 与 makefile。4. 有哪些字符集? Win32 对于各种字符集如何进行兼容及转换? (wchar_t、TCHAR、TEXT() )。5. 怎么创建一个子窗口?在哪进行设置?6. 窗口类的分类,如何创建一个应用程序全局窗口类。7. Win32 窗口程序运行机制与控制台程序的运行机制有何区别?8. Getmessage 函数的作用,与 Peekmessage 函数的区别。9. 发送 WM_QUIT 消息使程序终止的内部过程。11. Tr

7、anslateMessage 及 DispatchMessage 的作用。12. SendMessage 与 PostMessage 的区别。13. Win32 消息机制获取消息的过程(先查看什么消息?再查看什么消息?)14. 知道有哪几类主要的消息。(WM_CREATE, WM_DESTROY, WM_SIZE, WM_SYSCOMMAND, WM_COMMAND, WM_PAINT, 鼠标消息, 键盘消息) 。15. 定时器如何使用。16. 用户自定义消息如何定义。17. 创建菜单、设置菜单的函数,在哪处理菜单命令的消息。18. 加速键如何使用?19. GDI 绘图对象,使用的步骤,及函数

8、。20. 使用位图的步骤及用到的主要函数。21. 可用于文字绘制的 API 函数。22. 有模式对话框与无模式对话框的区别,创建步骤。收到的创建消息是什么?23. 子控件和父窗口通过什么进行通信? 父窗口在哪里处理子窗口发送的消息?24. 有哪些常见的子控件? (静态框、编辑框、按钮、listbox、comboBox、滚动条)25. 什么样的控件支持自绘制?26. 动态库与静态库的区别。27. Win32 里面怎样用静态库? C+程序在引用 c 的静态库时,需要注意什么?28. Win32 里面动态库有哪几种导出方式,有哪几种导入方式?(注意 c+的导出方式)29. Win32 里面文件打开和

9、关闭的 API。30. Windows 地址空间的划分。31. Windows 内存使用的几种方式及相应的函数( 虚拟内存、堆内存、栈内存)。32. Malloc 内部调用 A 函数, A 函数调用 B 函数。A 和 B 分别是什么?33. 内存映射文件的作用。主要函数。34. 创建进程和打开进程用什么函数? 有什么区别?35. 创建线程用什么函数?试比较_beginthreadex、_beginthread 和 CreateThread 的区别。36. 关闭线程和关闭进程的函数分别是什么?试比较_endthreadex、_endthread 和 ExitThread 的区别。(36、37 解

10、答:1) 中有很详细地介绍。_beginthreadex 是微软的 C/C+运行时库函数,CreateThread 是操作系统的函数。_beginthreadex 通过调用 CreateThread 来实现的,但比 CreateThread 多做了许多工作。注意:若要创建一个新线程,绝对不要使用 CreateThread,而应使用_beginthreadex.Why?考虑标准 C 运行时库的一些变量和函数,如 errno,这是一个全局变量。全局变量用于多线程会出什么事,你一定知道的了。故必须存在一种机制,使得每个线程能够引用它自己的 errno 变量,又不触及另一线程的 errno 变量._b

11、eginthreadex 就为每个线程分配自己的 tiddata 内存结构。该结构保存了许多像 errno 这样的变量和函数的值、地址(自己看去吧) 。通过线程局部存储将 tiddata 与线程联系起来。具体实现在 Threadex.c 中有。结束线程使用函数_endthreadex 函数,释放掉线程的tiddata 数据块。2)解释一下理论上的区别:CreateThread、_beginthread 和_beginthreadex 都是用来启动线程的,但大家看到 oldworm 没有提供_beginthread 的方式,原因简单,_beginthread 是_beginthreadex 的功

12、能子集,虽然_beginthread 内部是调用_beginthreadex 但他屏蔽了象安全特性这样的功能,所以_beginthread 与 CreateThread 不是同等级别,_beginthreadex 和 CreateThread 在功能上完全可替代,我们就来比较一下 _beginthreadex与 CreateThread!CRT 的函数库在线程出现之前就已经存在,所以原有的 CRT 不能真正支持线程,这导致我们在编程的时候有了 CRT 库的选择,在 MSDN 中查阅 CRT 的函数时都有:LibrariesLIBC.LIB Single thread static librar

13、y, retail version LIBCMT.LIB Multithread static library, retail version MSVCRT.LIB Import library for MSVCRT.DLL, retail version 这样的提示!对于线程的支持是后来的事!这也导致了许多 CRT 的函数在多线程的情况下必须有特殊的支持,不能简单的使用 CreateThread 就OK。大多的 CRT 函数都可以在 CreateThread 线程中使用,看资料说只有 signal()函数不可以,会导致进程终止!但可以用并不是说没有问题!有些 CRT 的函数象 malloc(

14、), fopen(), _open(), strtok(), ctime(), 或 localtime()等函数需要专门的线程局部存储的数据块,这个数据块通常需要在创建线程的时候就建立,如果使用 CreateThread,这个数据块就没有建立,然后会怎样呢?在这样的线程中还是可以使用这些函数而且没有出错,实际上函数发现这个数据块的指针为空时,会自己建立一个,然后将其与线程联系在一起,这意味着如果你用 CreateThread 来创建线程,然后使用这样的函数,会有一块内存在不知不觉中创建,遗憾的是,这些函数并不将其删除,而 CreateThread 和 ExitThread 也无法知道这件事,于

15、是就会有 Memory Leak,在线程频繁启动的软件中(比如某些服务器软件),迟早会让系统的内存资源耗尽!_beginthreadex(内部也调用 CreateThread)和_endthreadex 就对这个内存块做了处理,所以没有问题!(不会有人故意用 CreateThread 创建然后用_endthreadex 终止吧,而且线程的终止最好不要显式的调用终止函数,自然退出最好!)谈到 Handle 的问题,_beginthread 的对应函数_endthread 自动的调用了 CloseHandle,而_beginthreadex 的对应函数_endthreadex 则没有,所以 Clo

16、seHandle 无论如何都是要调用的不过_endthread 可以帮你执行自己不必写,其他两种就需要自己写!(Jeffrey Richter 强烈推荐尽量不用显式的终止函数,用自然退出的方式,自然退出当然就一定要自己写 CloseHandle) )37. Waitforsingleobject 与 Waitformultiobjects 的区别。Waitforsingleobject 的第二个参数为 0 表示什么意思?38. 线程局部存储(TLS)的意义,如何指定一个变量的 TLS 属性。39. Win32 线程同步提供的方式,及主要函数为什么?40. 提供的同步措施中哪些是内核对象? 试比较互斥量和临界区。二:MFC1. MFC 包含哪几类程序? 其中 MFC 应用程序又包含哪几类?2. MFC 的中的大多数类都继承自哪个类?3. MFC 主要要用到哪几个类?及其各个类的作用。4. MFC 中有哪 6 类核心机制?Cobject 中封装了哪些机制?5. 在哪个类的什么函数中进行 MFC 程序初始化? 相当于 main 功

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号