软件研发笔试真题:深圳2014.pdfVIP

  • 1
  • 0
  • 约3.76千字
  • 约 9页
  • 2026-03-08 发布于北京
  • 举报

2014【软件研发】笔试——坐标

2015-07-28Katrina

一、简答题(10分*3)

1、静态库与动态库的优缺点。

参:

(1)动态库(DynamicLinkedLibrary):

Windows为应用程序了丰富的函数调用,这些函数调用都包含在动态

库中。其中有3个最重要的DLL,Kernel32.dll、User32.dll和GDI32.dll。

有两种使用方式:一种是静态加载,即在应用程序启动时被加载;一种是动态加

载,即是该动态库在被使用时才被应用程序加载。

优点如下:

a、共享:多个应用程序可以使用同一个动态库,启动多个应用程序的时候,只

需要将动态库加载到内存一次即可;

b、开发模块好:要求设计者对功能划分的比较好。

缺点是不能解决计数等问题。

(2)静态库(StaticLibrary):

函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况

下,在编译可执行文件时,器从库中这些函数和数据并把它们和应

用程序的其它模块组合起来创建最终的可执行文件(.EXE文件)。静态库作为

代码的一部分,在编译时被。

优缺点如下:

代码的装载速度快,因为编译时它只会需要的那部分进去,应用程序相

对比较大。但是如果多个应用程序使用的话,会被装载多次,浪费内存。

2、轮询任务调度与抢占式任务调度的区别。

参:

(1)轮询调度的原理是每一次把来自用户的请求轮流分配给中的服务器,

从1开始,直到N(服务器个数),然后重新开始循环。只有在当前任务主动

放弃CPU控制权的情况下(比如任务挂起),才允许其他任务(包优先级的

任务)控制CPU。其优点是其简洁性,它无需记录当前所有连接的状态,所以

它是一种无状态调度。但不利于后面的请求及时得到响应。

(2)抢占式调度允许高优先级的任务打断当前执行的任务,抢占CPU的控制

权。这有利于后面的高优先级的任务也能及时得到响应。但实现相对较复杂且可

能出现低优先级的任务长期得不到调度。

3、请列出数据库中常用的锁及应用场景。

参:

数据库中的锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下

保证数据库完整性和一致性。各种大型数据库所采用的锁的基本理论是一致的,

但在具体实现上各有差别。

目前,大多数数据库管理系统都或多或少具有自我调节、自我管理的功能,因此

很多用户实际上不清楚锁的理论和所用数据库中锁的具体实现。在数据库中加

锁时,除了可以对不同的资源加锁,还可以使用不同程度的加锁方式,即锁有多

种模式,SQLServer中锁模式包括:

1)共享锁

SQLServer中,共享锁用于所有的只读数据操作。共享锁是非独占的,允许多

个并发事务其锁定的资源。默认情况下,数据被后,SQLServer立即

释放共享锁。例如,执行查询“SELECT*FROMmy_table”时,首先锁定第一

页,,释放对第一页的锁定,然后锁定第二页。这样,就允许在读操作

过程中,修改未被锁定的第一页。

但是,事务级别连接选项设置和SELECT语句中的锁定设置都可以改变

SQLServer的这种默认设置。例如,“SELECT*FROMmy_tableHOLDLOCK”

就要求在整个查询过程中,保持对表的锁定,直到查询完成才释放锁定。

2)修改锁

修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使

用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先

获得一个共享锁,数据,然后将共享锁升级为独占锁,然后再执行修改操

作。

这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时

候,这些事务都要将共享锁升级为独占锁。这时,这些事务都不会释放共享锁

而是一直等待对方释放,这样就造成了死锁。

如果一个数据在修改前直接申请修改锁,在数据修改的时候再升级为独占锁,就

可以避免死锁。修改锁与共享锁是兼容的,也就是说一个资源用共享锁锁定后,

允许再用修改锁锁定。

3)独占锁

独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能也不能修改。

独占锁不能和其他锁兼容。

4)结构锁

结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操

文档评论(0)

1亿VIP精品文档

相关文档