驱动开发工程师笔试
- 格式:doc
- 大小:37.50 KB
- 文档页数:5
软件开发工程师笔试题从古至今,软件开发工程师一直是科技行业中的重要角色。
随着科技的快速发展,软件开发工程师扮演的角色变得越来越重要。
他们不仅需要具备扎实的编程技术,还需要不断学习和适应新的技术和工具。
软件开发工程师的主要工作是根据客户需求设计、开发和维护高质量的软件系统。
他们通常会与团队成员合作,分析和理解用户需求,并将其转化为可执行的软件。
这包括编写代码、测试软件的功能和性能、修复错误和漏洞等。
作为一名优秀的软件开发工程师,编程技术是必不可少的。
他们需要熟练掌握各种编程语言,如Java、C ++、Python等,以及其他开发工具和框架。
掌握多种编程语言使他们能够适应不同的项目需求,并提供高效和可靠的解决方案。
另外,软件开发工程师还需要具备良好的沟通能力和团队合作精神。
他们需要能够与客户和团队成员有效地进行沟通,理解需求并提供解决方案。
与此同时,他们还需要与其他团队成员密切合作,共同推进项目的进展。
软件开发过程中,测试也是不可或缺的一部分。
软件开发工程师需要对自己编写的代码进行测试,以确保软件的功能和性能符合预期。
这包括单元测试、集成测试、系统测试等。
通过测试,软件开发工程师可以及时发现和修复错误和漏洞,提高软件的质量和稳定性。
随着云计算、大数据和物联网等技术的快速发展,软件开发工程师面临着新的挑战和机遇。
他们需要不断学习和了解新的技术和工具,以适应不断变化的行业需求。
比如,云计算技术的出现使软件开发工程师可以更高效地开发和部署软件,而大数据技术则提供了更多的数据处理和分析能力。
此外,软件开发工程师还需要关注软件开发过程中的安全性。
随着网络安全威胁的增加,软件开发工程师需要不断提高自己的安全意识,编写安全可靠的代码,并采取相应的安全措施保护软件系统和用户的数据。
在软件开发行业中,学历和证书也是软件开发工程师找工作时的一大加分项。
许多公司对招聘软件开发工程师都有一定的学历和证书要求。
一般来说,软件开发工程师需要有计算机科学或相关专业的学位,并且持有相关的编程证书,如Oracle认证、微软认证等。
下面的设备文件,供上层应用程/dev/1、字符型驱动设备你是怎么创建设备文件的,就是序打开使用的文件?命令结合设备的主设备号和次设备号,可创建一个设备文件。
答:mknod自动创建设备文件的方还有UDEV/MDEV评:这只是其中一种方式,也叫手动创建设备文件。
包括创建和删除设备文件,可以动态管理设备文件,式,UDEV/MDEV是运行在用户态的程序,一创建了设备文件。
运行在用户态意味着系统要运行之后。
那么在系统启动期间还有devfs共有三种方式可以创建设备文件。
、写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?2的任务尽量放在后)答:中断处理例程应该尽量短,把能放在后半段(tasklet,等待队列等半段。
包括硬写一个中断服务程序要注意快进快出,在中断服务程序里面尽量快速采集信息,评:也就是中断上方式。
tasklet件信息,然后推出中断,要做其它事情可以使用工作队列或者半部和下半部。
第二:中断服务程序中不能有阻塞操作。
为什么?大家可以讨论。
第三:中断服务程序注意返回值,要用操作系统定义的宏做为返回值,而不是自己定义的之类的。
FAILOK,、自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁3 还是信号量?还是两者都能用?为什么?中断服务例程中的互斥使用使用信号量的进程可以睡眠。
答:使用自旋锁的进程不能睡眠,的是自旋锁,原因是在中断处理例程中,硬中断是关闭的,这样会丢失可能到来的中断。
、原子操作你怎么理解?为了实现一个互斥,自己定义一个变量作为标记来作为一个资源4 只有一个使用者行不行?自己定义一个变量怎么我没懂第二句是什么意思,答:原子操作指的是无法被打断的操作。
可能标记资源的使用情况?其他进程又看不见这个变量评:第二句话的意思是:定义一个变量,比如 int flag =0;if(flag == 0){flag = 1;操作临界区;flag = 0;这样可否?}呢?这两个函数在设计上要注insmod 一个驱动模块,会执行模块中的哪个函数?rmmod5、意哪些?遇到过卸载驱动出现异常没?是什么问题引起的?这两个函数在设计时要注意什么?卸载函数。
嵌入式系统设备驱动程序设计试卷(答案见尾页)一、选择题1. 嵌入式系统设备驱动程序的主要功能是什么?A. 提供用户接口B. 管理硬件资源C. 实现设备通信D. 进行系统调试2. 在嵌入式系统设备驱动程序中,以下哪个不是必需的组成部分?A. 驱动程序代码B. 驱动程序库C. 设备描述文件D. 用户应用程序3. 在嵌入式系统设备驱动程序的开发过程中,以下哪个步骤不是必需的?A. 编写驱动程序代码B. 调试和测试C. 编译驱动程序D. 设计硬件平台4. 在嵌入式系统设备驱动程序中,以下哪个是用于描述设备特性的参数?A. I/O地址B. 中断号C. I/O端口D. 驱动程序版本号5. 在嵌入式系统设备驱动程序中,以下哪个是用于与硬件设备进行通信的协议?A. TCP/IPB. USBC. HDMID. IDE6. 在嵌入式系统设备驱动程序中,以下哪个是用于表示驱动程序状态的值?A. 正在运行B. 已加载C. 未初始化D. 驱动程序不可用7. 在嵌入式系统设备驱动程序中,以下哪个是用于错误处理的机制?A. 错误码B. 异常处理C. 日志记录D. 警告信息8. 在嵌入式系统设备驱动程序中,以下哪个是用于动态分配和管理硬件资源的机制?A. 内存管理单元(MMU)B. 虚拟内存管理C. 资源调度D. 中断描述符表(IDT)9. 在嵌入式系统设备驱动程序中,以下哪个是用于描述设备操作的数据结构?A. 驱动程序结构体B. 设备控制块(DCB)C. I/O请求包(IRP)D. 操作系统内核10. 在嵌入式系统设备驱动程序中,以下哪个是用于设备初始化和配置的函数?A. `init()`B. `open()`C. `close()`D. `read()`11. 嵌入式系统设备驱动程序的主要作用是什么?A. 提供设备访问接口B. 管理硬件资源C. 实现设备通信协议D. 优化系统性能12. 在嵌入式系统中,设备驱动程序通常位于哪个层次?A. 应用层B. 操作系统层C. 中间件层D. 硬件抽象层13. 驱动程序的加载过程通常包括哪些步骤?A. 加载源代码B. 编译代码C. 链接生成D. 加载到内存并初始化14. 对于设备驱动程序中的中断处理,以下哪项描述是正确的?A. 中断处理程序在用户空间运行B. 中断处理程序在内核空间运行C. 中断处理程序与硬件直接交互D. 中断处理程序依赖于操作系统15. 在编写设备驱动程序时,为什么需要考虑模块化设计?A. 便于代码重用B. 提高系统可维护性C. 减少系统开销D. 降低硬件复杂性16. 下面哪个不是设备驱动程序中常见的错误类型?A. 逻辑错误B. 语法错误C. 初始化错误D. 调试错误17. 在嵌入式系统中,设备驱动程序的更新通常如何进行?A. 通过在线更新B. 通过设备管理器C. 通过操作系统升级D. 通过手动安装新版本18. 设备驱动程序开发中,常用的工具有哪些?A. 集成开发环境(IDE)B. 调试器C. 版本控制系统D. 文档生成工具19. 在设备驱动程序中,如何处理设备的热插拔事件?A. 直接调用中断服务例程B. 使用设备驱动程序的回调函数C. 通知上层应用程序D. 错误码返回20. 嵌入式系统设备驱动程序的设计原则主要包括哪些?A. 可移植性B. 安全性C. 可扩展性D. 以上都是21. 在嵌入式系统设备驱动程序中,以下哪个是不属于设备驱动程序关键功能的选项?A. 初始化设备B. 控制设备操作C. 处理输入输出数据D. 进行系统升级22. 在嵌入式系统设备驱动程序的设计过程中,通常会考虑哪些因素来确保驱动程序的可移植性?A. 平台相关性B. 系统架构C. 代码可读性D. 性能优化23. 下面关于设备驱动程序中断处理的描述,哪一个是正确的?A. 中断处理程序总是运行在用户模式B. 中断处理程序总是运行在内核模式下C. 中断处理程序可以是同步的或异步的D. 中断处理程序不能被自定义24. 在嵌入式系统设备驱动程序中,如何处理设备地址映射?A. 使用固定的内存地址B. 使用动态内存分配C. 使用硬件抽象层(HAL)D. 依赖于具体的设备实现25. 嵌入式系统设备驱动程序开发中,常用的编程语言有哪些?A. C语言B. C++C. JavaD. Python26. 在编写设备驱动程序时,为什么需要考虑模块化和可测试性?A. 便于代码重用B. 降低维护成本C. 提高系统性能D. 优化资源利用27. 嵌入式系统设备驱动程序的加载过程通常涉及哪些步骤?A. 加载驱动程序文件B. 配置设备参数C. 注册设备驱动程序D. 启动设备服务28. 在设备驱动程序中,如何处理设备故障?A. 使用错误码和状态检查B. 记录日志并继续运行C. 自动重启设备D. 显示用户错误消息29. 以下哪个不是设备驱动程序可能遇到的常见问题?A. 资源竞争B. 设备无响应C. 驱动程序兼容性问题D. 系统死锁30. 在嵌入式系统设备驱动程序中,下列哪项不是必需的?A. 驱动程序代码B. 设备描述符C. 操作系统内核D. 驱动程序更新机制31. 下列哪种设备驱动程序模型适用于大多数嵌入式系统?A. 驱动程序/应用程序模型B. 中间驱动程序模型C. 来源驱动程序模型D. 驱动程序与操作系统交互模型32. 在设备驱动程序的初始化阶段,通常会进行哪些操作?A. 注册设备B. 分配资源C. 设置中断处理程序D. 以上都是33. 在嵌入式系统设备驱动程序中,如何处理设备故障?A. 使用错误码和状态检查B. 通过轮询和中断C. 依赖于硬件自愈能力D. A和B34. 哪种设备驱动程序开发方法最适合复杂嵌入式系统?A. 基于硬件平台的设计B. 基于操作系统API的设计C. 自主设计D. 基于现有开源项目35. 在编写设备驱动程序时,为什么需要考虑硬件的具体特性?A. 确保兼容性B. 提高驱动程序的可读性C. 减少代码量D. 以上都是36. 嵌入式系统设备驱动程序中的并发控制通常采用什么策略?A. 互斥锁B. 信号量C. 中断屏蔽D. 以上都是37. 在设备驱动程序的卸载阶段,通常会执行哪些操作?A. 注销设备B. 释放资源C. 清理中断处理程序D. 以上都是38. 在嵌入式系统设备驱动程序设计中,如何确保驱动程序的可移植性?A. 使用标准操作系统APIB. 封装硬件特定的代码C. 使用硬件抽象层(HAL)D. 以上都是39. 在嵌入式系统中,设备驱动程序的主要功能是什么?A. 提供用户界面B. 管理硬件资源C. 实现设备通信协议D. 进行系统编程40. 下列哪项不是设备驱动程序需要完成的任务?A. 初始化设备B. 控制设备操作C. 处理中断D. 提供系统调用接口41. 设备驱动程序与应用程序之间的通信通常通过哪种机制实现?A. 系统调用B. 中断C. 内存映射D. 消息队列42. 在编写设备驱动程序时,通常需要考虑哪些因素?A. 硬件特性B. 应用需求C. 性能优化D. 安全性43. 设备驱动程序中的中断处理程序应该具备哪些特性?A. 快速响应B. 高效执行C. 易于调试D. 易于维护44. 在设备驱动程序中,错误处理是非常重要的。
驱动面试题在面试过程中,经常会遇到关于驱动的问题。
驱动是指计算机系统中的一种特殊程序,用于控制硬件设备的工作。
驱动程序负责与硬件设备进行沟通和交互,使得软件能够正常地访问和操作硬件设备。
下面将介绍一些关于驱动的常见面试题,以及对应的答案。
面试题一:什么是驱动程序?它的作用是什么?答:驱动程序是一种特殊的软件,用于与计算机系统中的硬件设备进行交流和控制。
它的作用是使得操作系统和其他软件能够正常地访问和操作硬件设备。
驱动程序负责与硬件设备进行通信,将来自软件的指令转换为硬件设备可以理解和执行的指令,从而实现对硬件设备的控制。
面试题二:驱动程序有哪些分类?答:驱动程序可以根据作用对象的不同进行分类,常见的分类有以下几种:1. 接口驱动程序:用于控制硬件设备与计算机系统之间的接口,例如USB驱动程序、串口驱动程序等;2. 存储驱动程序:用于控制存储设备,例如硬盘驱动程序、光驱驱动程序等;3. 显卡驱动程序:用于控制显卡设备,负责显示和渲染图形;4. 网络驱动程序:用于控制网络设备,例如网卡驱动程序、无线网卡驱动程序等;5. 打印机驱动程序:用于控制打印机设备,负责将计算机中的文档打印出来。
面试题三:驱动程序的开发流程是怎样的?答:驱动程序的开发流程一般包括以下几个阶段:1. 分析硬件设备:首先需要对要开发驱动程序的硬件设备进行仔细的分析,了解设备的工作原理、接口规范等信息。
2. 设计驱动接口:根据硬件设备的特点和需求,设计驱动程序的接口,包括与操作系统和其他软件的接口,以及与硬件设备的接口。
3. 编写驱动代码:根据驱动接口的设计,编写具体的驱动代码,负责与硬件设备进行通信和控制。
4. 调试测试:对编写的驱动代码进行调试和测试,确保其能够正常工作,并与操作系统和其他软件正常交互。
5. 发布和维护:将驱动程序发布,供用户下载和使用,并及时进行维护和更新,修复可能存在的bug和问题。
面试题四:在驱动程序开发中,常见的问题和挑战有哪些?答:在驱动程序开发中,常见的问题和挑战包括以下几个方面:1. 兼容性问题:由于不同硬件设备的接口规范和操作系统的差异,开发驱动程序时需要考虑兼容性问题,确保驱动程序能够在不同硬件和操作系统环境下正常工作。
第1篇一、基础知识1. 请简要介绍嵌入式系统及其特点。
2. 嵌入式系统与通用计算机系统的区别有哪些?3. 嵌入式系统中的处理器类型有哪些?请分别介绍其特点。
4. 嵌入式系统中的存储器类型有哪些?请分别介绍其特点。
5. 什么是中断?中断在嵌入式系统中的作用是什么?6. 什么是DMA?DMA在嵌入式系统中的作用是什么?7. 什么是看门狗定时器?它在嵌入式系统中的作用是什么?8. 什么是GPIO?GPIO在嵌入式系统中的作用是什么?9. 什么是ADC?ADC在嵌入式系统中的作用是什么?10. 什么是DAC?DAC在嵌入式系统中的作用是什么?11. 什么是SPI?SPI在嵌入式系统中的作用是什么?12. 什么是I2C?I2C在嵌入式系统中的作用是什么?13. 什么是UART?UART在嵌入式系统中的作用是什么?14. 什么是CAN?CAN在嵌入式系统中的作用是什么?15. 什么是USB?USB在嵌入式系统中的作用是什么?16. 什么是以太网?以太网在嵌入式系统中的作用是什么?17. 什么是无线通信?无线通信在嵌入式系统中的作用是什么?18. 什么是实时操作系统?请简要介绍实时操作系统的特点。
19. 什么是操作系统内核?请简要介绍操作系统内核的功能。
20. 什么是设备驱动程序?请简要介绍设备驱动程序的作用。
二、驱动程序开发1. 请简要介绍驱动程序开发的基本流程。
2. 驱动程序开发中,如何实现设备驱动程序与硬件的交互?3. 请举例说明如何使用C语言编写一个简单的驱动程序。
4. 请说明驱动程序中的数据结构及其作用。
5. 请简要介绍驱动程序中的中断处理流程。
6. 请说明如何使用内核模块在Linux系统中实现设备驱动程序。
7. 请说明如何使用设备树描述硬件设备。
8. 请说明如何使用热插拔技术实现设备的动态加载和卸载。
9. 请简要介绍驱动程序调试的方法和技巧。
10. 请说明如何优化驱动程序的性能。
11. 请说明如何保证驱动程序的安全性和稳定性。
昆明理工大学试卷(闭/A6 )( _2009-2010__学年_下_学期)学院专业考试时间:2小时命题教师:考试科目:嵌入式操作系统及驱动程序学生姓名:学号:一、单项选择题:(总20分,每小题 2 分)1、Linux文件类型与权限一共10位长度,分成四段,第一段表示的内容是:()A、文件类型B、文件所有者的权限C、文件所有者所在组的权限D、其他用户的权限2、在微型计算机中,采用中断方式的优点之一是()A、简单且容易实现B、CPU可以不工作C、可实时响应突发事件D、传送速度最快3、NFS是()系统。
A、文件 B 磁盘 C、网络文件D、操作4、在Linux系统中,驱动程序注册中断处理程序的函数是()A、trap_initB、request_irqC、enable_irqD、register_irq5、不存盘退出vi的指令是()A、qB、q!C、wD、wq6、在使用GCC编译器的过程中,如果只想生成目标文件而不进行连接,需要使用选项()A.-c B.-o C.-S D.-E7、如果Boot Loader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别独立存放,则其存储结构的分配顺序应当是:()A6-1A . 文件系统、内核、启动参数、BootloaderB . 启动参数、Bootloader、内核、文件系统C . Bootloader、内核、启动参数、文件系统D . Bootloader、启动参数、内核、文件系统8、在大多数Linux发行版本中,以下哪个属于块设备?()A、串行口B、硬盘C、虚拟终端D、打印机9、在Linux系统中,下列哪个命令可以用来加载模块()A.insmodB.loadC.initD.installmod10. 用下列()命令查看Linux加载了哪些驱动模块。
A. cat /proc/devicesB. cat /bin/hardwareC. vi /proc/meminfoD. vi /user/local/meminfo二、填空题:(总20 分,每小题2 分)1、在linux系统中,以方式访问设备。
海康威视嵌入式软件工程师笔试题分享(含解答)海康威视嵌入式驱动工程师的题目只包含选择题和简答题,没有编程题。
毫无疑问,C语言基础题依然是最多的(c可是嵌入式的笔尖),又因为是驱动方向,所以关于Linux操作系统和底层方面的题会比较多一点,但是就题目的总体难度而言,其实并不是特别难。
但如果对Linux和驱动方面不是很了解的话,会比较吃亏。
选择题1、若有8个待排序元素,采用冒泡排序和插入排序最大时间复杂度分别是()A.64、24B.64、64C.16、64D.16、16答案:B解答:9大内部排序的时间复杂度和空间复杂度如下表所示:2、下面程序中b的值是()int a[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };int *p = &a[5];int b = p[7];A.14B.13C.11D.12答案:B3、下面哪个命令用来卸载一个内核模块?A.modprobeB.delmodC.unmodD.rmmod答案:D4、使用快速排序对n个数进行排序,其在最佳情况、平均情况、最差情况下的时间复杂度分别是()A.n、nlogn、nlognB.nlogn、nlogn、n^2C.nlogn、nlogn、nlognD.n、nlogn、n^2答案:B5、关于互斥锁的如下表述错误的是()。
A.互斥锁的加锁和解锁必须由同一线程分别对应使用B.互斥锁只能为0/1C.互斥锁的解锁过程不需要关心顺序,只需要成对使用即可D.互斥锁用于线程的互斥答案:C解答:互斥量和信号量的区别:互斥量用于线程的互斥,信号量用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别;互斥量值只能为0/1,信号量值可以为非负整数。
也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。
信号量可以实现多个同类资源的多线程互斥和同步。
当信号量为单值信号量是,也可以完成一个资源的互斥访问;互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。
嵌入式 linux android 工程面1.嵌入式系中断服子程序 (ISR)收藏中断是嵌入式系中重要的成部分,致了很多开商提供一种展—准 C支持中断。
具代表事是,生了一个新的关字__interrupt 。
下面的代就使用了 __interrupt 关字去定了一个中断服子程序 (ISR),一下段代的。
2.C 言中位的操作,比如 a 的第三位清 0,第四位置 1.本来会的,一犯写反了,以后注意!#define BIT3 (1<<3)#define BIT4 (1<<4)a &= ~BIT3;a |= BIT4;3.考到 volatile 含并例:理解出,了很具体的例子,程序都搬上去了,有些理解不深的没出来⋯⋯volatile 表示个量会被意想不到的改,每次用他的候都会小心的重新取一遍,不适用寄存器保存的副本。
volatile 表示直接存取原始地址例:并行的硬件寄存器(状寄存器)在多程运行的候共享量也要更新一个中断服子程序中到的的非自量(不太清楚,正在找料ing ⋯⋯)4.要求置一地址0x67a9 的整型量的0xaa66当时我的写法:#define AA *(volatile unsigned long *)0xaa66AA = 0x67a9;答案:int *ptr = (int * )0xaa66;*ptr = 0x67a9;我感觉自己写的应该不算错吧(自我感觉,还请达人指正),我写的适合裸机下用,当做寄存器用,而答案就是适合在操作系统下的写法。
1.linux 内核里面,内存申请有哪几个函数,各自的区别?2.IRQ和 FIQ有什么区别,在 CPU里面是是怎么做的?3.int *a;char *b;a 和b 本身是什么类型?a、b 里面本身存放的只是一个地址,难道是这两个地址有不同么?4.xx 的上半部分和下半部分的问题:讲下分成上半部分和下半部分的原因,为何要分?讲下如何实现?5.内核函数 mmap 的实现原理,机制?6.驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子?7.spinlock 自旋锁是如何实现的?8.任务调度的机制?【二、本人碰到】1.嵌入式 linux 和 wince 操作系统的特点和特性?2.嵌入式 linux 中 tty 设备驱动的体系结构?3.嵌入式设备,为加快启动速度,可以做哪些方面的优化?B设备的枚举过程?5.PSRAM、SDRAM、DDR、DDR2的时序特性?6.I2C触摸屏芯片与 CPU的数据传输流程?画出相关图例?(这题目记得不是太清楚了,大概是考查 I2C设备驱动的数据传输过程)。
苏州科达科技有限公司_驱动开发工程师_笔试题
2010年01月21日 星期四 08:29 P.M.
1:main() B
{ int x=1,y=1;
y=x-- ;
printf( “ %d,%d\n ” ,x,y);
}运行结果为
A.0 , 0
B.0 , 1
C.1 , 0
D.1 , 1
2:以“只读”方式打开文本文件 a: \ aa.dat, 下列语句中哪一个是正确的
A.fp=fopen( ″ a: \\ aa.dat ″ , ″ ab ″ );
B.fp=fopen( ″ a: \ aa.dat ″ , ″ a ″ );
C.fp=fopen( ″ a: \ aa.dat ″ , ″ wb ″ );
D.fp=fopen( ″ a: \\ aa.dat ″ , ″ r ″ );
3:某文件中定义的静态全局变量(或称静态外部变量)其作用域是
A.只限某个函数
B.本文件
C.跨文件
D.不限制作用域
4:执行语句for(i=1;i++<4);后i的值是
A.3
B.4
C.5
D.不确定
5:设 int a[10],*p=a ;则对数组元素的正确引用是
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
6:下列不正确的转义字符是
A.′\\′
B.′\″
C.′\086′
D.′\0′
7:C语言中,系统自动打开的文件是
A.二进制文件
B.随机文件
C.非缓冲文件
D.设备文件
8:下列程序的运行结果是( )
main( )
{ int a[][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4],i=2,j=1;
p=a;
printf(″%d\n″,*(*(p+i)+j));
}
A.9
B.11
C.17
D.19
9:在软件生命周期中,下列哪个说法是不准确的?
A.软件生命周期分为计划、开发和运行三个阶段
B.在计划阶段要进行问题焉醛和需求分析
C.在开发后期要进行编写代码和软件测试
D.在运行阶段主要是进行软件维护
10:设int b[ ]={1,2,3,4},y,*p=b;则执行语句y=*p++;之后,变量y的值为
A.1
B.2
C.3
D.4
11:下列语句定义整型指针p1、p2,( )是正确的。
A.int p1,p2;
B.int *p1,*p2;
C.int *p1,p2;
D.int **p1,p2;
12:对于程序段 float f1(int a)
{int b ;…… }
main( )
{ int m,n;
m=f1(n); ……
}
char f2(int x,int y)
{int a; …… }
变量 m,n 的作用范围是
A.整个程序段
B.main 函数
C.main 函数和 f2 函数
D.mian 函数和 f1 函数
13:数组定义为int a[2][3]={1,2,3,4,5,6},数组元素( )的值为1。
A.a [ 1 ][ 2 ]
B.a [ 1 ][ 1 ]
C.a [ 2 ][ 3 ]
D.a [ 0 ][ 0 ]
14:正确的C语言用户自定义标识符是
A.print
B.float
C.when
D.random﹪2
15:在 C 语言中,一个 int 型数据在内存中占 个字节,其取值范围为 。
A.1 , -128 ~ 127
B.2 , -32768 ~ 32767
C.2 , 0 ~ 65536
D.4 , 0 ~ 2147483647
16:设FILE*fp;若fp指向的文件未结束,则函数feoffp的返回值为
A.0
B.true
C.非0
D.false
简答题
17:下面的程序或程序段存在一个错误或不妥处请在其下划一条线,并将改正的内容写到每小题后的空白处
main()
{ char cl,c2;
cl='9';
c2='10';
printf(”cl=%c,c2=%c\n”,c1,c2);
}
18:static全局变量与普通的全局变量有什么区别?
19: Write a program that prints a list of all words in a document, and, for each word, a list of the line numbers on
which it occurs. Remove noise words like "the", "and," and so on.
20:试为下列关键字设计哈希表,要求所设计的表在查找成功时的平均查找长度不超过2.0。并请验证你造的哈希表
的实际平均查找长度时否满足要求。(CHA,CAI,LAN,WEN,LONG,ZHAO,WU,LIU,CHEN,LI,WANG,
CAO,YUN,CHANG,YANG)
21:耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始
报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的
序号。
22:请讲一讲析构函数和虚函数的用法和作用?
23:#include
class Value
{
public:
Value(int nVal) {m_nVal=nVal;printf(\"Call Value::Value(int nValue)n\");}
~Value() {printf(\"Call Value::~Value()n\");}
Value& operator=(int nVal)
{
m_nVal=nVal;
printf(\"Call Value::operator=n\");
return *this;
}
void Dump() {printf(\"Value::m_nVal=%dn\",m_nVal);}
protected:
int m_nVal;
};
class Base
{
public: Base() {Init();}
virtual ~Base() {Release();}
virtual void Init() {printf(\"Call Base::Init()n\");}
virtual void Release() {printf(\"Call Base::Release()n\");}
virtual void Dump() {printf(\"Call Base::Dump()n\");}
};
class Derive:public Base
{
public:Derive() {printf(\"Call Derive::Derive()n\");}
~Derive() {printf(\"Call Derive::~Derive()n\");}
virtual void Init() {m_Val=2;printf(\"Call Derive::Init()n\");}
virtual void Release() {printf(\"Call Derive::Release()n\");}
virtual void Dump() {m_Val.Dump();}
protected:
static Value m_Val;
};
Value Derive::m_Val=0;
void DestroyObj(Base* pOb)
{
pOb->Dump();
delete pOb;
}
void main()
{
Derive *pOb=new Derive;
DestroyObj(pOb);
}
写出结果
24:不允许使用系统时间,写出一个随机数生成函数。