1、对于项目1. 明确你的项目到底是做什么的,有哪些功能2. 明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用3. 明确你的模块在整个项目中所处的位置及作用4. 明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术操作系统1. 操作系统的四大特性:a) 并发性b) 共享性c) 虚拟性d) 不确定性2. 请叙述一下并发和并行两个概念的区别?a) 并行是指两个或多个事件在同一时刻发生,并 发是指两个或多个事件在同一 时间间隔内发生。3. 什么是进程?什么是线程? a) “进程是一个可并发执行的,具有独立功能的程序关于某个数
2、据集合的一次执行过程,也是操作系统进行资源分配和 调度的独立单位” 。进程是 资源分配的基本单位。b) 线程也称为轻量级进程(LWP),是程序执行流量的最小单位,它是进程的一个实体,是系统独立调度和分派处理机的基本单位。 线程是操作系 统调度的最小单位。4. 进程和线程的区别?从调度、并 发性、 拥有资源和系统 开销四个方面来比较:a) 调度。在引入线程的操作系 统中,把 线程作为调度和分派 CPU 的基本单位,把进程作为资源分配的基本单位,显 著提高了并发程度。 由于系统调 度的基本单位是线程,所以每个进程至少创建一个线程,否 则无法被调度。b) 并发性。多线程可以提高服 务的质量,在一个
3、线程阻塞 时,还有其他线程提供服务。c) 拥有资源。进程是拥有资 源的独立单位, 线程自己不拥 有系统资源,而是共享进程的资源(包括代码段、数据段即系统资源等)。d) 系统开销。进程切换的开 销远远大于线程切换的开销 ,进程的切换需要保存很多现场,但线程只需要保存和设置少量的寄存器内容,不涉及存 储器管理方面的操作。5. 进程的特征:a) 动态性:进程是动态产生和动态消亡的,有其生存周期。b) 并发性:一个进程可以与其他进程一起向前推进。c) 独立性:一个进程是一个相对完整的调度单位。d) 异步性:每个进程都已相对独立、不可 预知的速度向前推 进。e) 结构性:为了控制和管理进程,系 统为每个
4、进程设立一个 进程控制块(PCB)。6. 进程有几种状态? a) 就绪状态b) 运行状态:单 CPU 环境下,系统处于运行状态的进程最多只有一个。c) 阻塞状态7. 进程的组成:a) 程序:b) 数据集合:进程独有c) 进程控制块(PCB):它和进程一一对应,PCB 是操作系统能感知进程存在的唯一标识,操作系统正是通过管理 PCB 来管理进程的。 系统创建 进程时,为每个进程分配 PCB,进程执行完成后,系 统释放 PCB,进程也随之消亡。8. 进程的切换:a) 进程上下文包含用户级上下文、系 统级上下文、寄存器上下文b) 进程上下文切换是核心态的切换,不 发生在用户态。c) 用户态到核心态之
5、间的转变是 CPU 模式的改变。模式切换不同于进程切换,并不引起进程状态的改变。9. 为什么会提出线程这个概念?进程的缺点是什么?a) 进程切换开销大b) 进程通信代价大c) 进程之间并发性粒度粗,并 发度不高d) 不适合并行计算和分布式并行计算的要求e) 不适合客户-服务器计算的要求f) 操作系统中引入进程的目的是为了使多个程序并发执行,改善资源的利用率以提高系统的吞吐量。10. 线程的分类:a) 用户级线程 ULT,优点是线程切换不需要系统状态的转换,每个进程可以使用专门的调度算法来调度线程,不需要依 赖操作系统底层的内核。缺点是父进程阻塞会导致线程全都阻塞,不能真正的并行。Java 的线
6、程就是一种用户级的线程。b) 内核级线程 KLT,优点是同一个进程内多个线程可以并行执行,缺点是线程状态转换时内核态的任务,通常很慢。c) 混合式线程 上两种的结合,有良好的效果。11. 进程控制块的作用?它是如何描述进程动态性质的?a) PCB 是系统感知进程存在的唯一 标志,是进程动态特性的集中反映,和进程一一对应,操作系统通过管理 PCB 来管理进程。b) 进程控制块包含进程描述信息,控制信息,和资源管理信息三类。这些信息的变化反映进程的动态性质。12. 操作系统内核都包括哪些内容?a) 一是支撑功能,包括中断 处理, 时钟管理和原语操作等,二是资源管理功能,包括进程管理,存储器管理和设
7、备 管理等。13. 处理机调度的三个分类?a) 高级调度 作业调度b) 中级调度 交换调度(内存和硬 盘之间的交换)c) 低级调度 进程调度(操作系 统的核心)d) 高级调度发生在创建新进程时,它决定一个 进程能否被创建,或者是 创建后能否被设置成就绪状态,以参与竞争 处理器资源;中级调度反映到 进程状态上就是挂起和解除挂起,它根据系统的当前符合情况决定停留在主存中的进程数;低级调度则是决定哪一个就绪进程或线程占有 CPU 运行。14. 批作业调度算法a) 先来先服务b) 最短作业优先c) 响应比高者优先d) 优先级算法15. 进程调度的方式:a) 非剥夺方式(非抢占式方式 ):优点是简单、易
8、 实现,系统开销小。缺点是不太灵活,难以满足紧迫任务必须立即执行的要求。 实时系统不宜采用 这种调度方式。b) 可剥夺方式(抢占式方式 ):优先权更高的进程优先执行。16. 进程调度的算法:a) 先来先服务算法b) 最短优先算法c) 优先级算法:优先级高的先执行。可以采用剥 夺或非剥 夺,剥 夺方式更能反映优先的特点,但是会造成无穷阻塞和 饥饿现象。d) 轮转算法:基本思想是系统把所有就绪进程按先来先服务的原则排成一个队列,且规定一个较小的时间单元,称 为时间量或时间片,按 时间片把 CPU 轮流分配给进入就绪队列的第一个进程使用,当 进程的时间片使用完后,产生一个时钟中断,剥夺该进程的执行,
9、将它送到就 绪队列的队尾,等待下次 调度。 轮转算法专门为分时系统设计。e) 多级队列调度算法:根据不同的进程,分配到不同的 队 列中, 实行不同的调度算法。一般按照优先级分成多个队列,高 优先级的任务先做。f) 多级反馈队列调度算法:按优先级分配队列,但是 优先级越高分配的时间片越小,如果没做完,自动移动到下一 级队列继续做。g) 实时调度算法17. 操作系统多任务的抢占机制是怎么实现的?18. 哪种权限许可用户进入一个文件系统的目录?Read,Execute,Write,Access Controll19. Linux32 位系统,应用程序最多能分配的内存大小?20. sleep 和 wa
10、it 的区别?21. Win32 下线程的基本模式?22. 进程之间的关系?a) 竞争关系:由于进程之间不知道彼此的存在,而使用了同一份 资源,就会造成 竞争。资源竞争会出现饥饿和死锁。b) 协作关系23. 什么是临界资源?什么是临界区?a) 临界资源:把一次只允许一个进程使用的资源成为临界资源。(独占性,如打印机,卡片输出机等)b) 临界区:把每个进程中访问临界资源的那段代码从概念上分离出来,将其称为临界区。即临界区是指对临界资源 实时操作的程序的代码段。c) 相关临界区:并发进程中涉及相同临界资源的临界区。相关临界区必须互斥执行。24. 什么是进程互斥?a) 进程互斥是解决进程间竞争关系(
11、间接制约关系) 的手段。指任何时刻不允许两个以上的共享该资源的并发进程同时进入临界区, 这种现象称 为互斥。b) 相关临界区的管理原则:互斥、空闲让进、有限等待。25. 进程同步的概念?进程同步指两个或多个进程为了合作完成同一个任务,在执行速度或某些确定的时序点上必须相互协调,即一个进程的执行依 赖于另一个进程的消息,当一个进程到达了某一个确定点而没有得到合作伙伴发来的已完成消息时必须等待,知道该消息到达被唤醒后,才能 继续向前推进。26. 进程同步和互斥的关系?a) 进程的互斥实际上是进程同步的一种特殊情况,即主次使用互斥共享资源,也是 对进程使用资源次序上的一种协调。进程的互斥和同步统称
12、为进程同步。b) 进程的互斥是进程间共享资源的使用权,这种竞争没有固定的必然 联系,哪个 进程竞争到资源的使用权,该资源就 归哪个进程使用,直到它不再需要使用时才归还资源;而进程同步中,所涉及的共享 资源的并发进程间有一种必然的 联系, 当进程必须同步时,即使无进程在使用共享 资源,尚未得到同步消息的进程也不能去使用该资源。27. 信号量机制(PV 操作):a) 信号量机制的实现原理是两个或多个进程可以利用彼此间收发的简单信号来实现正确的并发执行,一个进程在收到一个指令信号前,会被迫在一个确定的或者需要的地方停下来,从而保持同步或互斥。b) 用信号量机制解决进程的同步和互斥问题有如下三个步骤:
13、i. 分析进程之间的制约关系ii. 设置信号量iii. 实施 P、V 操作28. 同步的实现机制:a) 临界区:通过多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问。b) 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保 证公共资源不会同时 被多个线程访问。c) 信号量:允许多个线程同时访问同一资源,但是需要限制同一时刻访问此资源的最大线程数目。信号量对象对线 程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系 统 PV 操作相似。d) 事件( 信号) :通过通知操作的方式保持多线程同步,还可以
14、方便的实现多线程的优先级比较的操作。29. 经典的同步问题:a) 生产者消费者问题b) 读者-写者问题(读者优先:信号量 +读进程计数器 rc;弱写者优先:信号量+读进程计数器 rc+排队信号量 read;强写者优先:信号量+读进程计数器 rc+排队信号量 read+写优先信号量 write_first)c) 哲学家就餐问题:是在多个线程之间共享多个资源时会不会导致死锁或饥饿的典型模型。解决方案:i. 每个哲学家取得手边的两个叉子才能吃面,即仅当一个哲学家左右两边的叉子都可用时,才允许他拿叉子,否则一个叉子也不取。ii. 偶数号哲学家先取手边的叉子,奇数号哲学家先取右手边的叉子。d) 嗜睡理发
15、师问题30. 进程通信的方式:a) 共享存储:消息缓冲b) 消息传递:信箱c) 管道通信31. 产生死锁的原因?a) 进程竞争资源引起的死锁b) 进程推进顺序不当产生死锁32. 产生死锁的条件a) 互斥条件:同时只能有一个进程持有资源b) 请求和保持条件:一个进程请求资源得不到满足时,不释放占有的资源c) 不剥夺条件:任何一个进程不能抢夺其他进程占有的资源d) 循环等待条件:存在一个循环等待链,链中每个进程已获得资源,并分 别等待前一个进程持有的资源。33. 处理死锁的方法:a) 死锁预防:破坏产生死锁条件的任何一个或多个,如静 态资源分配策略(2)和按序分配资源策略(4)。b) 死锁避免:采
16、用银行家算法,每次分配都查看能否找到一种资源分配方法,使得已有的进程可以顺利完成任务,如果有,则分配,否则不分配。c) 死锁检测和解除:用软件来检查有进程和资源构成的有向图是否存在一个或多个回路。34. 分页存储管理、段式存储 管理和段页式存储管理的基本思想 :a) (分页) 利用分页存储管理,允 许把一个作业存放到若干个不相 邻的内存区域中,减少大碎片。b) (分段 ) 段式存储管理支持用户的分段观点,以段为单位进行存储空间的分配。分段存储管理的引入,主要为了方便 编程、信息共享和信息保 护 (有利于程序的运行)。c) (段页式) 段页式存储管理的基本原理是先将整个主存划分成大小相等的存 储
17、块(页框),把用户程序分段,接着为每一段进行分页。35. 分页和分段的区别?a) 分页是信息的物理单位,与源程序的 逻辑结构无关,用户不可见,分页的目的主要是为了减少碎片,提高主存的利用率。分段是信息的逻辑单位,由源程序的逻辑结构来决定,目的是更好地满足用 户的需求。b) 页的大小固定且由系统确定,而段的长度不固定,由用户程序决定。c) 分页的作业地址空间是一维的(线性地址空间) ,分段的作业地址空间是二维的( 段名和段内地址)。36. 缓存的局部性原理:根据研究,在较短的时间内,程序的执行会局限于某一个部分,则可以根据当前程序运行的位置,推测可能执行的程序, 预先加 载,来达到缓存的目的。(
18、虚拟内存的实现)37. RAID 技术:a) RAID 1:两个磁盘互相备份,安全性最好,但磁 盘利用率 50%,最低。b) RAID 2:采用汉明码做出错校验,按位交叉存取,用于大数据的 读写,但冗余信息开销大,已被淘汰。c) RAID 3:位交织奇偶校验,使用一个磁盘做奇偶校验,数据分段存储在其余磁盘中,一旦有损坏,可以利用奇偶校 验来重建数据,但校 验盘损坏 则没救,磁盘利用率 n-1。d) RAID 4:块交织奇偶校验,按块存取,可以单独对某个盘进行操作,一次操作只涉及数据盘和校验盘,不适合随机分散的小数据e) RAID 5:块交织分布式奇偶校验,同样以数据校验位来保证数据的安全,不同
19、于校验盘,它将数据段的校验位交互存放于各个硬 盘, 则任何一个硬 盘损坏,都可以根据其他硬盘上的校验位来重建损坏的数据,磁 盘利用率 n-1.38. SPOOLing 系统?a) 在内存和硬盘中间建立缓冲区,在内存写入硬 盘的过 程中,先写入 缓冲,等到 CPU空闲时,才从缓冲区写入硬盘 。39. 同步和异步有什么不同?各自的优势?40. 什么是线程?线程的基本状态?41. synchronized 和 Lock 的异同?42. 什么是序列化?什么是持久化?什么是串行化?transient 的用法?哪些字段需要标记transient?43. synchronized 关键字的用法?44. 什么
20、是守护线程?举一个守护线程的例子?计算机网络1. OSI 模型及其各层次的作用?TCP/IP 模型各层次及协议 ?2. 数据链路层和 MAC 层(介质访问控制层)?3. 计算机网络协议、接口和服 务的概念?4. 数据链路层:流量控制、可靠 传输和滑动窗口机制。5. 数据链路层设备:网桥和局域网交换机6. 网络层的功能:异构网络互联、路由与 转发、 拥塞控制7. 路由算法:距离-向量路由算法、链路状态路由算法、层次路由8. IPv4 内容:分组、NAT、子网划分和子网掩码9. ARP 协议 、DHCP 协议与 ICMP 协议10. 网络层设备:路由器的组成和功能,路由表和路由 转发11. 流量控
21、制和拥塞控制的区别?12. 传输层的功能?传输层的寻址与端口?套接字?13. TCP 协议和 UDP 协议?Java 实现?UDP 首部?14. TCP 段、TCP 连接管理、 TCP 可靠传输、TCP 流量控制和 拥塞控制15. TCP 的拥塞控制:慢开始、拥塞避免、快重传、快恢复。16. 应用层:P2P 模型?应用层协议 :DNS、FTP、EMAIL、MIME、STMP、POP3、HTTP。17. CGI?域名解析过程?MySQL 数据 库1. INSERT 嵌套 SELECT2. MySQL 数据类型,int 类型长度超出了也不会对数据产生影响,和 SQL MODE 有关。3. 一个表中
22、最多只能有一个自增长列。4. DDL、DML、DCL、DQL 语句?a) DDL(数据定 义语言):create、 drop、alterb) DML(数据操纵语言):insert、delete、update 、selectc) DCL(数据控制语言):grant、 revoke5. MySQL 的其他数据库:a) information_schema 数据库存储了数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等。b) cluster 存储了系统的集群信息c) mysql 存储 了系统的用户权 限信息d) test 是系统自动创建的测试数据库,任何用 户都可以使用。6.
23、内连接查询即为多表查询,仅选出两张表中互相匹配的 记录,外 连接则会选出其他不匹配的记录。子查询经常使用 in、not in、=、!=、exists、not exists 等。表 连接很多情况下用于优化子查询。合并记录用 union(含 distinct)或 union all。7. MySQL 数字类型及字节数、日期 类型及字节数、字符串类型及字节数。8. MySQL 可以使用 REGEXP 或 RLIKE 来使用正则匹配。NULL 不能用于“=,等“ ,但可以使用比较 NULL。比 较时不区分大小写,数字作为浮点数比较。短路与和非NULL 结果都为 NULL,只有 1 或 NULL 为 1
24、。9. MySQL 常用函数:a) 字符串CONCAT、INSERT、LEFT、RIGHT、REPLACE、SUBSTRING、LPAD、RPAD、TRIM、REPEAT 等。b) 数值函数 ABS、CEIL、FLOOR、MOD、RAND、ROUND、TRUNCATE 等。x%y 任意为 NULL 结果都为 NULL。产生 0100 随机数为 select ceil(100*rand(), ceil(100*rand()。c) 日期和时间函数CURDATE、CURTIME、NOW、UNIX_TIMESTAMP、FROM_UNIXTIME、DATE_FORMAT、DATEDIFF、DATE_AD
25、D 等,格式 为%Y-%m-%d %H-%i-%s。d) 流程函数 IF、IFNULL、CASE WHEN THEN ELSE END、CASE (exp) WHEN THEN ELSE END。e) 其他函数DATABASE、VERSION、USER、INET_ATON、INET_NTOA、PASSWORD、MD5。10. MySQL 存储类型:MyISAM、 InnoDB、BDB、MEMORY、CSV 等,只有 InnoDB 和 BDB支持事务,其他都不支持。MySQL 默认存储引擎为 InnoDB。11. InnoDB 和 MyISAM 的区别?事务、外 键、 访问速度、占用空间、存储方式(MyISAM:静态表、动态表和压缩表。InnoDB:共享表空间、多表空间)等方面。12. MEMORY 表使用 HASH 索引,数据量大小由 max_heap_table_size 变量来决定,默认16MB。13. 如何选择合适的存储引擎?a) 以读操作和插入操作为主,少量更新和 删除, 对事务完整性、并发性要求不高则使用 MyISAM 引擎。b) InnoDB 则适合于并发要求高的 场合,事务完整性要求较高,除了可以有效降低删除和更新导致的锁定,还可以确保事 务的完整提交和回滚 ,适合 财务管理系统。c) MEMORY 通常用于更新不太频繁的小表,可以快速得到结果。