笔试选择题十九

来源:互联网 发布:简单游戏编程c语言 编辑:程序博客网 时间:2024/05/11 13:13
一、SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。

8、select 集合输出。

二、计算机通过MIC(话筒接口)收到的信号是(音频模拟信号)。

三、线程调用了sleep()方法后,该线程将进入(阻塞 )状态。

1.  新建(new) :新创建了一个线程对象。

2.  可运行(runnable) :线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。

3.  运行(running) :可运行状态( runnable) 的线程获得了cpu 时间片(timeslice) ,执行程序代码。

4.  阻塞(block) :阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入 可运行(runnable) 状态,才有机会再次获得cpu timeslice 转到 运行(running) 状态。阻塞的情况分三种: 

(一). 等待阻塞: 运行(running) 的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。

(二). 同步阻塞: 运行(running) 的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。

(三). 其他阻塞: 运行(running) 的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入 可运行(runnable) 状态。

5.  死亡(dead) :线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

四、进程上下文是进程执行全过程的静态描述

五、批处理操作系统的目的是(提高系统资源利用率)。

批处理系统主要指多道批处理系统,由于多道程序能交替使用CPU,提高了CPU及其他系统资源的利用率,同时也提高了系统的效率。多道批处理系统的缺点是延长了作业的周转时间,用户不能进行直接干预,缺少交互性,不利于程序的开发与调试。 

六、

如果因时间片用完而被暂停执行 ,则进程由执行->就绪
如果因为某事件而使进程执行受阻,如访问某临界资源,而该资源正被其他进程访问,则进程由执行->等待
七、inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
八、设从磁盘将一块数据传送到缓冲区所用实际为80μs,将缓冲区中数据传送到用户区所用时间为40μs,CPU处理数据所用的时间为30μs。则处理该数据,采用单缓冲传送磁盘数据,系统所用总时间为()。
max(磁盘到缓冲区,CPU处理) + 缓冲区到用户区 = max(80, 30) + 40 = 120
九、数据库运行于哪种状态下可以防止数据的丢失?Archivelog状态
在archivelog mode只要其归档日志文件不丢失,就可以有效地防止数据丢失。
十、虚存实际容量在. 内外存总量计算机总线长度 取最小者
十一、SQL语言允许使用通配符进行字符串匹配的操作,其中‘%’可以表示任意多个字符
十二、分页存储管理的存储保护是通过(页表(页表寄存器))完成的。
十三、段的逻辑地址形式是段号10位,段内地址20位,内存1MB,辅存10GB。那么虚拟存储器最大实际容量可能是()。
虚拟存储器最大实际容量= min(计算机地址,内存+辅存)。计算机地址= 2^ 10* 2^20=1024M
十四、声明一个名为books_cursor的游标,和名为@book_name的游标变量,以下语句正确的是(fetch next from books_cursor into @book_name)
十五、常见的页面调度算法

(1)随机算法rand(Random Algorithm)。

利用软件或硬件的随机数发生器来确定主存储器中被替换的页面。这种算法最简单,而且容易实现。但是,这种算法完全没用利用主存储器中页面调度情况的历史信息,也没有反映程序的局部性,所以命中率较低。

(2)先进先出调度算法(FIFO)

先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,本算法实现时需要将页面按进入内存的时间先后组成一个队列,每次调度队首页面予以淘汰。它的优点是比较容易实现,能够利用主存储器中页面调度情况的历史信息,但是,它没有反映程序的局部性,因为最先调入主存的页面,很可能也是经常要使用的页面。

(3)最近最少调度算法LFU(Least Frequently Used Algorithm )

先进先出调度算法没有考虑页面的使用情况,大多数情况下性能不佳。根据程序执行的局部性特点,程序一旦访问了某些代码和数据,则在一段时间内会经常访问他们,因此最近最少用调度在选择淘汰页面时会考虑页面最近的使用,总是选择在最近一段时间以来最少使用的页面予以淘汰。算法实现时需要为每个页面设置数据结构记录页面自上次访问以来所经历的时间。

(4)最近最不常用调度算法LRU(Least Recently Used Algorithm)

由于程序设计中经常使用循环结构,根据程序执行的局部性特点,可以设想在一段时间内经常被访问的代码和数据在将来也会经常被访问,显然这样的页面不应该被淘汰。最近最不常用调度算法总是根据一段时间内页面的访问次数来选择淘汰页面,每次淘汰访问次数最少的页面。算法实现时需要为每个页面设置计数器,记录访问次数。计数器由硬件或操作系统自动定时清零。

(5)最优替换算法OPT(Optimal replacement Algorithm)

前面介绍的几种页面调度算法主要是以主存储器中页面调度情况的历史信息为依据的,他假设将来主存储器中的页面调度情况与过去一段时间时间内主存储器中的页面调度情况是相同的。显然,这种假设不总是正确的。最好的算法应该是选择将来最久不被访问的页面作为被替换的页面,这种算法的命中率一定是最高的,它就是最有替换算法。要实现OPT算法,唯一的方法就是让程序先执行一遍,记录下实际的页地址流情况。根据这个页地址流才能找出当前要被替换的页面。显然,这样做是不现实的。因此,OPT算法只是一种理想化的算法,然而,它也是一种很有用的算法。实际上,经常把这种算法用来作为评价其它页面调度算法好坏的标准。在其它条件相同的情况下,哪一种页面调度算法的命中率与OPT算法最接近,那么,它就是一种比较好的页面替换算法。

十六、进程的执行状态分为:核心态和用户态。两者的主要区别就在于进程能否获取计算机的所有资源(核心态可以,用户态则受到限制)。

       凡是涉及到计算机根本运行的事情都应该在内核态下执行,而中断、时钟日期、存储映象图都属于系统级(相对应的是用户级)的资源,对这些资源的修改都必须在核心态,但是读取则没有强制要求。以下是一些常用指令的执行状态。 1.屏蔽所有中断指令,在核心态下执行。 2.读时钟日期指令,在用户态下执行。 3.设置时钟日期指令,在核心态下执行。 4.改变存储映像图指令,在核心态下执行。 5存取某地址单元的内容指令,在用户态下执行; 6.停机指令,在核心态下执行。
十七、聚集索引有存储实际数据,物理上连续,可以用B树实现
十八、Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)
Linux线程间通信:互斥量(mutex),信号量,条件变量
Windows进程间通信:管道、消息队列、共享内存、信号量 (semaphore) 、套接字(socket)
Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(event)
十九、下面有关事务隔离级别说法正确的是?
(1)未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据
(2)提交读(Read Committed):只能读取到已经提交的数据
(3)可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的
(4)串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞 ABCD
二十、将分区管理发展为分页管理的主要目的是()。(1)提高系统的吞吐量(2)提高内存的利用率
二十一、原语是由若干个 机器指令 构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断
原语通常由若干条指令组成,用来实现某个特定的操作。通过一段不可分割的或不可中断的程序实现其功能。原语是操作系统的核心,它不是由进程而是由一组程序模块所组成,是操作系统的一个组成部分,它必须在管态(一种机器状态,管态下执行的程序可以执行特权和非特权两类指令,通常把它定义为操作系统的状态)下执行,并且常驻内存,而个别系统有一部分不在管态下运行。原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。许多广义指令的功能都可用目态(一种机器状态,通常把它作为用户程序执行时的状态)下运行的系统进程完成,而不一定要在管态下完成,例如文件的建立、打开、关闭、删除等广义指令,都是借助中断进入管态程序,然后转交给相应的进程,最终由进程实现其功能。引进原语的主要目的是为了实现进程的通信和控制。

0 0