一. 单选题
1. 在Windows编程约定中,应用程序接口的英文缩写是( A )。 A. API B. SDI C. GDI D. MDI
2. 进程最常见和最理想的结束方式为:( A ) A. 主线程的入口函数返回
B. 进程中的一个线程调用ExitProcess函数
C. 另一个进程中的线程调用TerminateProcess函数 D. 进程中的所有线程自行终止运行
3. 线程正常结束的方式是:( A ) A. 线程函数返回
B. 调用ExitThread函数 C. TerminateThread
D. 包含线程的进程终止运行
4. 两个没有任何安全措施的线程同时对一个数作自增(++)运算,以下说法正确的是:( D ) A. 自增(++)是原子操作,不会出现错误
B. 自增(++)是原子操作,但是两个加法先后顺序未知 C. 自增(++)不是原子操作,最后结果是加2 D. 自增(++)不是原子操作,最后结果不一定是2
5. 以下选项中,能触发WaitForSingleObject返回的事件为?( A ) A. 特定的内核对象变为已通知状态 B. 特定的内核对象变为未通知状态 C. 对象被锁定 D. 对象解除锁定
6. 创建互斥体的函数为:( A ) A. CreateMutex B. OpenMutex C. CreateEvent D. CreateSemaphore
7. SetWaitableTimer的参数lPeriod如果为正值,单位是什么? ( C ) A. 分钟(m) B. 秒(s) C. 毫秒(ms) D. 纳秒(ns)
8. 定义动态链接库时,模块定义文件确定函数f的导出顺序,下列语法正确的是( A )。 A. f @1
B. C. D. 9. A. B. C. D. 10. A. B. C. D. 二. 1. A) B) C) D) 2. A) B) C) D) 3. A) B) C) D) 4. A) B) C) D) 5. A)
f 1 @f 1 @1 f
动态链接库文件的后缀名为( B )。 lib dll exe obj
下列说法中,不属于动态链接库的显式链接的好处的是( C )。 程序可以随时加载动态链接库
显式链接的动态链接库的函数地址发生变化时,程序不需要重新编译 动态链接库如果出现错误,程序能够正常运行 动态链接库的载入语句可以出现在程序的任意位置 多选题
已知严格按照匈牙利命名法命名的变量m_pTemp,则以下说法正确的是( BC )。 该变量是1个全局变量 该变量是1个类成员变量 该变量是1个指针变量 该变量一定是1个私有变量 线程由哪些部分组成?( AB ) 线程的内核对象 线程堆栈 全局变量 线程代码
关于信号量说法正确的是?( ABCD )
应用在需要对资源进行计数的多线程应用程序中 包含最大资源数和当前资源数 资源数不能为负
如果当前资源的数量大于0,则发出信标信号
关于动态链接库的定义,以下说法正确的是( ACD )。 动态链接库可以使用模块定义文件指定导出哪些函数 动态链接库中所有的函数都可以被外部文件所调用 动态链接库在程序运行过程中动态载入
动态链接库可以通过在函数名前使用关键字_declspec(dllexport)实现 关于动态链接库的导入,以下说法正确的是( AC )。 使用隐式链接,应用程序需要编译
B) 使用显式链接,应用程序需要编译
C) 隐式链接的语句出现在程序的预处理语句部分 D) 显式链接的语句出现在程序的预处理语句部分
三. 判断题
1. 所谓的Windows API就是独立于C语言的一套全新的程序设计语言。( × ) 2. 在Windows编程约定中,CHAR数据类型和TCHAR数据类型是相同的。( × ) 3. 每个进程至少有一个线程。( √ ) 4. 系统中运行着的线程,在时间上是平行的,它们每一刻都在同时执行不同的任务。( × ) 5. 线程的入口函数原型是确定的,线程函数必须严格符合这个原型。( √ ) 6. C++程序编写的多线程应用程序,必须等所有线程结束后,进程才终止。( × ) 7. 进入临界区的函数为EnterCriticalSection,离开临界区LeaveCriticalSection。( √ ) 8. dll动态链接库是在程序运行的过程中动态载入。( √ )
9. 使用显式链接调用动态链接库时,需要在调用函数前使用LoadLibrary函数导入动态链接库文件。( √ )
10. 在隐式链接调用动态链接库时,当函数使用完毕,需要手动释放导入的动态链接库。( × )