金山云笔试:
1.两个进程争夺同一个资源会发生死锁吗?(死锁发生的四个必要条件)
(1)互斥条件:一个资源每次只能别一个进程使用。
(2)请求和保持条件:一个进程因为请求资源而阻塞时,对持有资源保持不放。
(3)不剥夺条件:在进程没有执行完成的情况下,持有资源不会被剥夺。
(4)循环等待条件:若个进程之间因为等待资源而形成一种循环关系。

在其他情况不明确的情况下,无法判断两个进程是否仅需要这一个资源就能完成,如果需要其他的资源,而资源被另外一个进程所持有,就有可能发生死锁。

2.关于寄存器和高速缓存?

 寄存器是中央处理器(cpu)的的组成部分,是有限存储容量的高速存储部件,可以暂存指令,数据和地址(指令寄存器(IR),程序计数器(pc),累加器(ACC))。

 Cache,位于CPU和主内存之间容量小但速度很快的存储器,是为了弥补CPU与内存之间的运算差距而设置的部件。

3.实现原子加操作

锁总线,

恩~~,果然不是很明白,难受。。。

4.信号量,互斥体,自旋锁。

 信号量,相当于一个计数器,每当一个进程使用一个资源,信号量-1;进程释放一个资源,信号量+1;当信号量为0时,进程无法使用该资源。

 互斥体,在任何线程进入临界区之前都先获得临界区的互斥体,其他进程没有获得互斥体便不能执行。

 自旋锁,跟互斥锁挺像,但是未获得执行权的进行不阻塞,而是循环请求,适应于持有锁时间短的进程。

5.TCP中服务端和客户端的执行完操作后的各种状态。

 (1)三次握手时:

          客户端:closed->syn-send->establised

          服务端:listened->syn-rcvd->establised

 (2)四次挥手时:

          客户端:fin-wait-1->fin-wait-2->time-wait->close

          服务端:close-wait->last-ack->close

 

6.事务的隔离机制。

 (1)readunCommited 事务修改数据加了X锁,结束后释放。解决了更新丢失。

 (2)readCommited    在(1)的基础上,每次事务读数据时+S锁,读完(不是事务结束)释放。解决了脏读。

 (3)repeatableRead  在(1)的基础上,每次事务读数据时+S锁,事务结束后释放。解决了不可重复度。

 (4)serializable 事务串行执行。。。。

7.会引起全表查询的情况。

 (1)模糊查询:右模糊查询,全模糊查询一定会产生全表扫描。

 (2)查询条件中含有 is null的select语句

 (3)其余我真的不知道去哪查了。。。知道的可以回复我啊。

 

posted on 2017-09-13 15:14  rookie111  阅读(2201)  评论(0编辑  收藏  举报