计算机基础知识面试题库Word格式.docx
《计算机基础知识面试题库Word格式.docx》由会员分享,可在线阅读,更多相关《计算机基础知识面试题库Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
b)并发性:
一个进程可以与其他进程一起向前推进。
c)独立性:
一个进程是一个相对完整的调度单位。
d)异步性:
每个进程都已相对独立、不可预知的速度向前推进.
e)结构性:
为了控制和管理进程,系统为每个进程设立一个进程控制块(PCB)。
6.进程有几种状态?
a)就绪状态
b)运行状态:
单CPU环境下,系统处于运行状态的进程最多只有一个.
c)阻塞状态
7.进程的组成:
a)程序:
b)数据集合:
进程独有
c)进程控制块(PCB):
它和进程一一对应,PCB是操作系统能感知进程存在的唯一标识,操作系统正是通过管理PCB来管理进程的。
系统创建进程时,为每个进程分配PCB,进程执行完成后,系统释放PCB,进程也随之消亡。
8.进程的切换:
a)进程上下文包含用户级上下文、系统级上下文、寄存器上下文
b)进程上下文切换是核心态的切换,不发生在用户态.
c)用户态到核心态之间的转变是CPU模式的改变.模式切换不同于进程切换,并不引起进程状态的改变。
9.为什么会提出线程这个概念?
进程的缺点是什么?
a)进程切换开销大
b)进程通信代价大
c)进程之间并发性粒度粗,并发度不高
d)不适合并行计算和分布式并行计算的要求
e)不适合客户-服务器计算的要求
f)操作系统中引入进程的目的是为了使多个程序并发执行,改善资源的利用率以提高系统的吞吐量。
10.线程的分类:
a)用户级线程–ULT,优点是线程切换不需要系统状态的转换,每个进程可以使用专门的调度算法来调度线程,不需要依赖操作系统底层的内核.缺点是父进程阻塞会导致线程全都阻塞,不能真正的并行。
Java的线程就是一种用户级的线程。
b)内核级线程–KLT,优点是同一个进程内多个线程可以并行执行,缺点是线程状态转换时内核态的任务,通常很慢。
c)混合式线程–上两种的结合,有良好的效果。
11.进程控制块的作用?
它是如何描述进程动态性质的?
a)PCB是系统感知进程存在的唯一标志,是进程动态特性的集中反映,和进程一一对应,操作系统通过管理PCB来管理进程。
b)进程控制块包含进程描述信息,控制信息,和资源管理信息三类.这些信息的变化反映进程的动态性质。
12.操作系统内核都包括哪些内容?
a)一是支撑功能,包括中断处理,时钟管理和原语操作等,二是资源管理功能,包括进程管理,存储器管理和设备管理等。
13.处理机调度的三个分类?
a)高级调度–作业调度
b)中级调度–交换调度(内存和硬盘之间的交换)
c)低级调度–进程调度(操作系统的核心)
d)高级调度发生在创建新进程时,它决定一个进程能否被创建,或者是创建后能否被设置成就绪状态,以参与竞争处理器资源;
中级调度反映到进程状态上就是挂起和解除挂起,它根据系统的当前符合情况决定停留在主存中的进程数;
低级调度则是决定哪一个就绪进程或线程占有CPU运行。
14.批作业调度算法
a)先来先服务
b)最短作业优先
c)响应比高者优先
d)优先级算法
15.进程调度的方式:
a)非剥夺方式(非抢占式方式):
优点是简单、易实现,系统开销小。
缺点是不太灵活,难以满足紧迫任务必须立即执行的要求。
实时系统不宜采用这种调度方式。
b)可剥夺方式(抢占式方式):
优先权更高的进程优先执行。
16.进程调度的算法:
a)先来先服务算法
b)最短优先算法
c)优先级算法:
优先级高的先执行。
可以采用剥夺或非剥夺,剥夺方式更能反映优先的特点,但是会造成无穷阻塞和饥饿现象。
d)轮转算法:
基本思想是系统把所有就绪进程按先来先服务的原则排成一个队列,且规定一个较小的时间单元,称为时间量或时间片,按时间片把CPU轮流分配给进入就绪队列的第一个进程使用,当进程的时间片使用完后,产生一个时钟中断,剥夺该进程的执行,将它送到就绪队列的队尾,等待下次调度.轮转算法专门为分时系统设计。
e)多级队列调度算法:
根据不同的进程,分配到不同的队列中,实行不同的调度算法。
一般按照优先级分成多个队列,高优先级的任务先做。
f)多级反馈队列调度算法:
按优先级分配队列,但是优先级越高分配的时间片越小,如果没做完,自动移动到下一级队列继续做。
g)实时调度算法
17.操作系统多任务的抢占机制是怎么实现的?
18.哪种权限许可用户进入一个文件系统的目录?
Read,Execute,Write,AccessControll
19.Linux32位系统,应用程序最多能分配的内存大小?
20.sleep和wait的区别?
21.Win32下线程的基本模式?
22.进程之间的关系?
a)竞争关系:
由于进程之间不知道彼此的存在,而使用了同一份资源,就会造成竞争.资源竞争会出现饥饿和死锁。
b)协作关系
23.什么是临界资源?
什么是临界区?
a)临界资源:
把一次只允许一个进程使用的资源成为临界资源。
(独占性,如打印机,卡片输出机等)
b)临界区:
把每个进程中访问临界资源的那段代码从概念上分离出来,将其称为临界区。
即临界区是指对临界资源实时操作的程序的代码段。
c)相关临界区:
并发进程中涉及相同临界资源的临界区。
相关临界区必须互斥执行。
24.什么是进程互斥?
a)进程互斥是解决进程间竞争关系(间接制约关系)的手段。
指任何时刻不允许两个以上的共享该资源的并发进程同时进入临界区,这种现象称为互斥。
b)相关临界区的管理原则:
互斥、空闲让进、有限等待。
25.进程同步的概念?
进程同步指两个或多个进程为了合作完成同一个任务,在执行速度或某些确定的时序点上必须相互协调,即一个进程的执行依赖于另一个进程的消息,当一个进程到达了某一个确定点而没有得到合作伙伴发来的已完成消息时必须等待,知道该消息到达被唤醒后,才能继续向前推进。
26.进程同步和互斥的关系?
a)进程的互斥实际上是进程同步的一种特殊情况,即主次使用互斥共享资源,也是对进程使用资源次序上的一种协调。
进程的互斥和同步统称为进程同步。
b)进程的互斥是进程间共享资源的使用权,这种竞争没有固定的必然联系,哪个进程竞争到资源的使用权,该资源就归哪个进程使用,直到它不再需要使用时才归还资源;
而进程同步中,所涉及的共享资源的并发进程间有一种必然的联系,当进程必须同步时,即使无进程在使用共享资源,尚未得到同步消息的进程也不能去使用该资源。
27.信号量机制(PV操作):
a)信号量机制的实现原理是两个或多个进程可以利用彼此间收发的简单信号来实现正确的并发执行,一个进程在收到一个指令信号前,会被迫在一个确定的或者需要的地方停下来,从而保持同步或互斥。
b)用信号量机制解决进程的同步和互斥问题有如下三个步骤:
i.分析进程之间的制约关系
ii.设置信号量
iii.实施P、V操作
28.同步的实现机制:
a)临界区:
通过多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问。
b)互斥量:
采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会同时被多个线程访问。
c)信号量:
允许多个线程同时访问同一资源,但是需要限制同一时刻访问此资源的最大线程数目。
信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统PV操作相似。
d)事件(信号):
通过通知操作的方式保持多线程同步,还可以方便的实现多线程的优先级比较的操作.
29.经典的同步问题:
a)生产者消费者问题
b)读者—写者问题(读者优先:
信号量+读进程计数器rc;
弱写者优先:
信号量+读进程计数器rc+排队信号量read;
强写者优先:
信号量+读进程计数器rc+排队信号量read+写优先信号量write_first)
c)哲学家就餐问题:
是在多个线程之间共享多个资源时会不会导致死锁或饥饿的典型模型.解决方案:
i.每个哲学家取得手边的两个叉子才能吃面,即仅当一个哲学家左右两边的叉子都可用时,才允许他拿叉子,否则一个叉子也不取。
ii.偶数号哲学家先取手边的叉子,奇数号哲学家先取右手边的叉子。
d)嗜睡理发师问题
30.进程通信的方式:
a)共享存储:
消息缓冲
b)消息传递:
信箱
c)管道通信
31.产生死锁的原因?
a)进程竞争资源引起的死锁
b)进程推进顺序不当产生死锁
32.产生死锁的条件
a)互斥条件:
同时只能有一个进程持有资源
b)请求和保持条件:
一个进程请求资源得不到满足时,不释放占有的资源
c)不剥夺条件:
任何一个进程不能抢夺其他进程占有的资源
d)循环等待条件:
存在一个循环等待链,链中每个进程已获得资源,并分别等待前一个进程持有的资源.
33.处理死锁的方法:
a)死锁预防:
破坏产生死锁条件的任何一个或多个,如静态资源分配策略
(2)和按序分配资源策略(4)。
b)死锁避免:
采用银行家算法,每次分配都查看能否找到一种资源分配方法,使得已有的进程可以顺利完成任务,如果有,则分配,否则不分配。
c)死锁检测和解除:
用软件来检查有进程和资源构成的有向图是否存在一个或多个回路。
34.分页存储管理、段式存储管理和段页式存储管理的基本思想:
a)(分页)利用分页存储管理,允许把一个作业存放到若干个不相邻的内存区域中,减少大碎片。
b)(分段)段式存储管理支持用户的分段观点,以段为单位进行存储空间的分配。
分段存储管理的引入,主要为了方便编程、信息共享和信息保护(有利于程序的运行).
c)(段页式)段页式存储管理的基本原理是先将整个主存划分成大小相等的存储块(页框),把用户程序分段,接着为每一段进行分页。
35.分页和分段的区别?
a)分页是信息的物理单位,与源程序的逻辑结构无关,用户不可见,分页的目的主要是为了减少碎片,提高主存的利用率。
分段是信息的逻辑单位,由源程序的逻辑结构来决定,目的是更好地满足用户的需求。
b)页的大小固定且由系统确定,而段的长度不固定,由用户程序决定。
c)分页的作业地址空间是一维的(线性地址空间),分段的作业地址空间是二维的(段名和段内地址)。
36.缓存的局部性原理:
根据研究,在较短的时间内,程序的执行会局限于某一个部分,则可以根据当前程序运行的位置,推测可能执行的程序,预先加载,来达到缓存的目的。
(虚拟内存的实现)
37.RAID技术:
a)RAID1:
两个磁盘互相备份,安全性最好,但磁盘利用率50%,最低.
b)RAID2:
采用汉明码做出错校验,按位交叉存取,用于大数据的读写,但冗余信息开销大,已被淘汰。
c)RAID3:
位交织奇偶校验,使用一个磁盘做奇偶校验,数据分段存储在其余磁盘中,一旦有损坏,可以利用奇偶校验来重建数据,但校验盘损坏则没救,磁盘利用率n—1。
d)RAID4:
块交织奇偶校验,按块存取,可以单独对某个盘进行操作,一次操作只涉及数据盘和校验盘,不适合随机分散的小数据
e)RAID5:
块交织分布式奇偶校验,同样以数据校验位来保证数据的安全,不同于校验盘,它将数据段的校验位交互存放于各个硬盘,则任何一个硬盘损坏,都可以根据其他硬盘上的校验位来重建损坏的数据,磁盘利用率n—1。
38.SPOOLing系统?
a)在内存和硬盘中间建立缓冲区,在内存写入硬盘的过程中,先写入缓冲,等到CPU空闲时,才从缓冲区写入硬盘。
39.同步和异步有什么不同?
各自的优势?
40.什么是线程?
线程的基本状态?
41.synchronized和Lock的异同?
42.什么是序列化?
什么是持久化?
什么是串行化?
transient的用法?
哪些字段需要标记transient?
43.synchronized关键字的用法?
44.什么是守护线程?
举一个守护线程的例子?
计算机网络
1.OSI模型及其各层次的作用?
TCP/IP模型各层次及协议?
2.数据链路层和MAC层(介质访问控制层)?
3.计算机网络协议、接口和服务的概念?
4.数据链路层:
流量控制、可靠传输和滑动窗口机制。
5.数据链路层设备:
网桥和局域网交换机
6.网络层的功能:
异构网络互联、路由与转发、拥塞控制
7.路由算法:
距离—向量路由算法、链路状态路由算法、层次路由
8.IPv4内容:
分组、NAT、子网划分和子网掩码
9.ARP协议、DHCP协议与ICMP协议
10.网络层设备:
路由器的组成和功能,路由表和路由转发
11.流量控制和拥塞控制的区别?
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嵌套SELECT
2.MySQL数据类型,int类型长度超出了也不会对数据产生影响,和SQLMODE有关.
3.一个表中最多只能有一个自增长列。
4.DDL、DML、DCL、DQL语句?
a)DDL(数据定义语言):
create、drop、alter
b)DML(数据操纵语言):
insert、delete、update、select
c)DCL(数据控制语言):
grant、revoke
5.MySQL的其他数据库:
a)information_schema数据库存储了数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等.
b)cluster存储了系统的集群信息
c)mysql存储了系统的用户权限信息
d)test是系统自动创建的测试数据库,任何用户都可以使用。
6.内连接查询即为多表查询,仅选出两张表中互相匹配的记录,外连接则会选出其他不匹配的记录。
子查询经常使用in、notin、=、!
=、exists、notexists等。
表连接很多情况下用于优化子查询.合并记录用union(含distinct)或unionall。
7.MySQL数字类型及字节数、日期类型及字节数、字符串类型及字节数。
8.MySQL可以使用REGEXP或RLIKE来使用正则匹配。
NULL不能用于”=,〈,〉,<
>
等”,但可以使用<
=〉比较NULL.比较时不区分大小写,数字作为浮点数比较。
短路与和非NULL结果都为NULL,只有1或NULL为1。
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.产生0~100随机数为selectceil(100*rand()),ceil(100*rand())。
c)日期和时间函数CURDATE、CURTIME、NOW、UNIX_TIMESTAMP、FROM_UNIXTIME、DATE_FORMAT、DATEDIFF、DATE_ADD等,格式为'
%Y—%m-%d%H—%i—%s'
d)流程函数IF、IFNULL、CASEWHENTHENELSEEND、CASE(exp)WHENTHENELSEEND。
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通常用于更新不太频繁的小表,可以快速得到结果.
d)MERGE组合了MyISAM表,突破了单个MyISAM表的限制,并可以分布在多个磁盘上,有效改善MERGE表的访问效率。
14.选择合适的数据类型?
a)CHAR和VARCHAR—MyISAM:
建议固定长度的数据列CHAR。
InnoDB:
建议使用VARCHAR类型.
b)TEXT和BLOB-尽量选择满足需求的最小的存储类型、大量删除后为提高性能应定期使用OPTIMIZETABLE功能进行标的碎片整理。
同时可以使用合成的索引(Synthetic)来提高大文本字段的查询性能,此种索引主要利用散列值,只能用于精确匹配的查询"
=”。
不必要时尽量避免检索BLOB和TEXT。
单独将BLOB和TEXT分成一张表。
c)定点DECIMAL和浮点FLOAT\DOUBLE-定点更精确,字符串存储,而浮点数不精确,而且比较容易出错。
d)日期类型选择:
尽量选择满足需求的最小存储的日期类型,需要记录年份久远,则DATETIME。
如果需要不同时区使用,则使用TIMESTAMP。
15.选择合适的字符集:
a)满足应用支持语言的需求、考虑和已有数据的兼容性、汉字居多可以考虑GBK2字节,而UTF83字节,而英文则应该UTF81字节,其他2字节。
b)如果需要比较,排序等字符运算,则最好选择定长字符集.尽量避免字符集转换。
16.字符集用来MySQL存储字符串的方式,校对规则用来定义比较字符串的方式。
a)查看方式:
showcharacterset;
showcollationlike”%%"
;
b)校对规则_ci大小写不敏感、_cs大小写敏感、_bin基于编码值的比较。
17.MyISAM和InnoDB默认都是BTREE索引,目前不支持函数索引,但支持前缀索引。
此外,还支持全文索引。
默认情况下MEMORY使用HASH索引,也支持BTREE索引。
18.索引操作:
a)创建索引—CREATE[unique|fulltext|special]INDEXindex_name[USINGindex_type]ONtbl_name(index_col_name,。
.)
b)修改增加索引—ALTERTABLEtable_nameADD
[unique|fulltext|special]INDEXindex_name[USINGindex_type]index_col_name
index_col_name=col_name[(length)][ASC|DESC]
c)可以通过explainselect语句查看是否使用了索引。
key:
xxx为使用索引。
d)删除索引—DROPINDEXindex_nameONtbl_name
19.MyISAM索引前缀长度1000字节,InnoDB前缀索引长度最长767字节。
20.设计索引的原则:
a)索引列应选择SELECTWHERE语句后的列和表连接ON子句后的列。
b)尽量使用唯一索引,分布越分散效果越好,如性别就不适合索引,分布太密集。
c)尽量使用短索引,查询更快,IO更少。
d)利用最左前缀.
e)不要过度索引,会降低使用效率。
f)InnoDB会根据主键、唯一索引或内部列的排序来存储,所以尽量自己指定主键,选择常用列作为主键.另外,InnoDB表的普通索引都会保存主键的键值,所以主键要尽可能选择较短的数据类型,可以有效减少索引的磁盘占用,提高索引缓存效果。
21.HASH索引只能使用在=或<
=〉等式比较时。
优化器不能使用HASH索引来加速ORDERBY操作.
BTREE索引可以用在>
,〈,〉=,<
=,BETWEEN,!
=,<
,LIKE”pattern"
(pattern不能以通配符开头)。
简而言之,范围查询适用于BTREE,不适用HASH索引。
22.MySQL使用索引,在检索的时候不需要查找所有数据,能快速定位需要的数据.大多数索引存储在BTREE中,只有空间列类型的索引使用RTREE,MEMORY表支持HASH索引。
23.为什么需要使用视图?
a)使用视图的用户不需要考虑对应表结构,关联条件和筛选条件。
b)使用视图可以控制用户访问到行列级别。
c)视图结构确定了,可以屏蔽表结构变化对用户的影响。
24.视图操作:
a)创建视图-CREATE[ORREPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEWview_name[{column_list}]ASselect_statement[WITH[CASCADED|LOCAL]CHECKOPTION]
b)修改视图—ALTER
[ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEWview_name[(column_list)]ASselect_statement
[WITH[CASCADED|LOCAL]CHECKOPTION]
c)删除视图—DROPVIEW[IFEXISTS]view_name[,view_name][RESTRICT|CASCADE]
d)查看视图—SHOWTABL