北京哪家做网站好,网站底部备案图标,焦溪翠冠梨做的网站,烟台外贸网站建设公司前言 某团硬件工程师的笔试题#xff0c;个人感觉题目的价值还是很高的#xff0c;分为选择题和编程题#xff0c;选择题考的是嵌入式基础知识#xff0c;编程题是两道算法题#xff0c;一道为简单难度#xff0c;一道为中等难度 目录 前言选择题编程题 选择题
C语言中变…前言 某团硬件工程师的笔试题个人感觉题目的价值还是很高的分为选择题和编程题选择题考的是嵌入式基础知识编程题是两道算法题一道为简单难度一道为中等难度 目录 前言选择题编程题 选择题
C语言中变量有一系列的命名规则下列选项中属于错误的C语言变量命名规则的是 A、C语言中变量名是字母、数字、下划线组合 B、变量命名中不允许出现空格 C、C语言变量的开头只能是字母或数字 D、变量名不可以是关键字且严格区分大小写
答案选C 解析C语言变量命名规则 关于字符设备驱动的并发和竞态下列说法正确的是 A、并发是多个执行单元不同时被执行 B、竞态是并发的执行单元对共享资源的访问导致的竞争状态 C、竞态是自发的导致的竞争状态 D、并发是两个执行单元同时被执行
答案选B 解析并发是多个执行单元同时、并行被执行而并发的执行单元对共享资源的访问会导致竞态因此A、D错。竞态条件通常不是自发的而是由并发执行单元进程、线程等之间的相互干扰造成的因此C错。 参考避免竞态的方式是给访问的共享资源添加锁嵌入式驱动学习第一周——内核的锁机制 在我们使用FreeRTOS任务通知功能时我们可以使用函数xTaskNotify()来发送任务通知在FreeRTOS中任务通知更新的方法不包括 A、覆盖接收任务的通知值 B、增加接收任务的通知值 C、减少接收任务的通知值 D、不覆盖接受任务的通知值
答案C 解析任务通知可以通过如下方法更新接收任务的通知值不覆盖接收任务的通知值 ( 如果上次发送给接收任务的通知还没被处理 ) 、覆盖接收任务的通知值、更新接收任务通知值的一个或多个 bit、增加接收任务的通知值因此选C 参考FreeRTOS8----任务通知 C语言的fopen函数中mode字符规定了打开文件的模式下列选项中对于打开文件的模式描述错误的是 A、‘r’ 表示以只读方式打开文件但是该文件必须存在 B、‘a’ 表示以附加方式打开可读写的文件且原文件内容会被保留 C、‘rb’ 表示读写一个二进制文件文件如果不存在就会建立对应的文件 D、‘w’ 会将文件长度清零文件如果不存在会建立对应的文件
答案C 解析考察的是fopen函数rb如果文件不存在会出错 参考【C标准库】详解fopen函数 一篇让你搞懂fopen函数 C语言中如果输入整数v是2的幂下面表达式中哪个会返回True A、(~v (v-1)) 0 B、(v | (v-1)) 0 C、(v (v-1)) 0 D、(v | (v1)) 0
答案C 解析带入特值由于v是2的幂那么就只有一位上是1假设v是0b0100那么(~v (v-1))不为0A错误(v | (v-1))也不为0故B错误(v (v-1)) 为0因为v-1就使得原本1的那位是0其后面的位为1做与运算即都为0(v | (v1))不为0故D错 下列程序中横线处该填什么
int main() {unsigned char counter;TMOD0x01;TH0 (65536 - 46083) % 256;TL0 (65536 - 46083) % 256;TF0 0;P0 0xff;counter 0;TR0 1;while(1) {while(TF0 1) {counter;if (counter 20) {________________counter 0;}TH0 (65536 - 46083) % 256;TL0 (65536 - 46083) % 256;}}
}A、P00; B、P01; C、P00x01; D、P0~P0;
答案D 解析要实现灯的亮灭功能的话就需要每次都是取反而不是限定为一个值 在CAN中线的设备通信协议中帧由不同的段组成不同类型的帧所包含的段也不一样其中遥控帧不包括的段为 A、仲裁段 B、数据段 C、控制段 D、帧起始
答案B 解析CAN总线的遥控帧包括了 帧起始——表示帧开始的段 仲裁段——表示该帧优先级的段。可请求具有相同 ID 的数据帧 控制段——表示数据的字节数及保留位的段 CRC段——检查帧的传输错误的段 ACK段——表示确认正常接收的段 帧起始——表示遥控帧结束的段 参考详解CAN总线CAN总线报文格式—遥控帧 在嵌入式软件开发中SDIO总线主要是为SDIO卡提供一个高速的I/O能力SDIO总线能够支持的通信包括wifi、GPS、camera sensor等。关于SDIO总线设备描述错误的是 A、SDIO的信号传输模式有SPI、1-bit、4-bit三种 B、SDIO的每次操作都是由HOST在CMD线上发起一个CMD对于有的CMDDEVICE需要返回Response有的设备不需要 C、在SDIO总线定义中DAT1信号线用来传输数据 D、SDIO总线采用HOST-DEVICE设计所有的通信都是由HOST端发出命令开始的
答案C 解析在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据其中DAT1复用作中断线。 参考[SDIO].SDIO总线详解 下列选项中对操作系统功能介绍错误的是哪一个 A、可以管理文件 B、可以提供用户接口 C、没法管理设备 D、可以管理存储
答案C 解析现代操作系统通常提供文件系统来管理文件包括创建、读取、写入、删除和修改文件等操作**故A对**操作系统通常提供用户界面使用户能够与计算机系统进行交互。这包括命令行界面、图形用户界面GUI、应用程序接口API等故B对操作系统通常管理存储资源包括内存管理和存储设备管理。内存管理涉及到为进程分配内存空间以及内存的分页、交换等操作而存储设备管理涉及到文件系统的管理包括文件的存储、检索和访问等故D对操作系统通常管理设备包括输入/输出设备如键盘、鼠标、显示器、存储设备如硬盘、固态硬盘和网络设备如网卡等故C错 参考操作系统的主要功能是什么 关于网络设备以下选项说法有误的是 A、sk_buff结构是内核网络部分最重要的数据结构之一 B、在设置网络设备参数时需要用到net_device结构 C、head指向数据缓冲的内核首地址end指向当前数据包的尾地址 D、网络协议与分层结构相配合将便于维护
答案C 解析sk_buff是Linux网络中最核心的结构体它用来管理和控制接收或发送数据包的信息。各层协议都依赖于sk_buff而存在。内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体而是通过增加协议头和移动指针来操作的故A对net_device数据结构存储着特定网络设备的所有信息故B对head和end指向缓冲区的头部和尾部,而data和tail指向实际数据的头部和尾部。每一层会在head和data之间填充协议头,或者在tail和end之间添加新的协议数据故C错D对 参考网络设备驱动介绍(浅析) Linux内核中sk_buff结构详解 Linux网络技术学习二—— net_device数据结构解析添加链接描述 Linux驱动开发之网络设备 读书笔记 关于对全局变量OSIntNesting的描述错误的是 A、可以作为调度器是否可进行调度的标志 B、OSIntNesting大于0的时候表示系统当前处于中断处理状态 C、在正常任务执行即非中断状态时OSIntNesting的值为0 D、不能记录中断嵌套的层数
答案D 解析全局变量OSIntNesting最重要的就是两个用途一个是记录中断嵌套层数故D错。每当有一个嵌套中断发生时其值就加1有中断结束时就减一故B、C对。第二个用途是作为调度器是否可进行调度的标志以保证调度器不会再中断服务程序中进行任务调度故A对。当OSIntNesting大于0的时候将调度器加锁OSIntNesting等于0的时候调度器解锁 参考OSIntNesting 下列哪项不属于网络设备驱动的层次结构 A、网络设备与媒介层 B、数据链路层 C、设备驱动功能层 D、网络协议接口层
答案D 解析 “网络协议接口层” 则通常属于操作系统的网络协议栈中不直接涉及到设备驱动的层次结构。 在以下关于字符设备、块设备、网络设备的定义中哪一项描述有误 A、网络设备由专门的网络接口来实现 B、块设备可以从设备的任意位置读取一定长度 C、字符设备是面向流的设备读取数据需要按照先后顺序进行 D、网络设备中的应用程序可以直接访问网络设备驱动程序
答案D 解析网络设备通常由专门的网络接口来实现。这个网络接口可能是物理上的设备如网卡或无线网卡也可以是虚拟的设备如虚拟网卡故A对块设备是一种存储设备以固定大小的块为单位进行数据读写操作。每个块通常具有相同的大小例如512字节或4KB故B对字符设备是指只能一个字节一个字节读写的设备不能随机读取设备内存中的某一数据读取数据需要按照先后顺序故C对。在通常情况下应用程序无法直接访问网络设备驱动程序。网络设备驱动程序位于操作系统内核中而应用程序运行在用户空间。操作系统通常会提供一些接口来让应用程序与网络设备进行通信故D错 参考 在FreeRTOS中空闲任务是一种特殊的任务有区别于其他用于任务关于空闲任务的描述错误的是 A、如果某个任务要调用函数vTaskDelete()删除自身那么这个任务的任务控制块TCB将会在空闲任务重释放 B、空闲任务的堆栈大小是可随意修改的 C、空闲任务的优先级是可随意修改的 D、当FreeRTOS的调度器启动后就会自动的创建一个空闲任务
答案B 解析当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务这样就可以确保至少有一任务可以运行故D对如果某个任务要调用函数 vTaskDelete()删除自身那么这个任务的任务控制块 TCB 和任务堆栈等这些由 FreeRTOS 系统自动分配的内存需要在空闲任务中释放掉如果删除的是别的任务那么相应的内存就会被直接释放掉不需要在空闲任务中释放故A对空闲任务的堆栈的起始地址和大小均被定义成一个常量,不能被修改故B错。 参考FreeRTOS 空闲任务 以下C代码运行的结果是什么
#include stdio.hint main() {int numbers[5];int *p;p numbers; *p 10;p; *p 20;p numbers[2]; *p 30;p numbers 3; *p 40;p numbers; *(p 4) 50;for (int n 0; n 5; n)printf(%d, numbers[n]);printf( );return 0;
}A、1020304050 B、编译错误 C、运行错误 D、10 20 30 40 50
答案A 解析函数名是指向数组的第一块数据的地址的指针加减就是在数组上的下标变化注意的是for循环没有加{}因此最外面的是在for循环执行完才打印一个空格的 在Linux中有一个名为file的文件内容如下所示 one two three four five six seven eight nine ten 请问以下哪个命令可以打印 three four five这3行 A、sed -n ‘3, 6p’ file B、cat file | head -5 | tail -3 C、cat file | head -3 | tail -5 D、sed -n ‘2,5p’ file1
答案B 解析A打印出来是three,four,five,sixB打印出来是three,four,fiveC打印出来是one,two,threeD打印出来是two,three,four,five AT89S52单片机中在外部中断响应的期间中断请求标志位查询占用了 A、2个机器周期 B、3个机器周期 C、4个机器周期 D、1个机器周期
答案A 解析有点偏冷门了 在Linux中关于虚拟内存相关的说法正确的是 A、页是虚拟内存与物理内存的交换单元最小的单位是64KB B、在页表结构中有效位为1代表虚拟地址未被分配 C、在一个进程中每个线程之间的虚拟内存是独占的 D、CPU与内存之间通过MMU将虚拟内存地址翻译成物理内存地址
答案D 解析管理内存的最小单元就是页页面的大小常见的有4KB但是还有8、16、64KB等故A错页表中如果有效位为1地址字段指向该虚拟页对应的物理页在内存中的起始位置。如果有效位为0地址字段为空时表明该虚拟页还没有被分配不为空时指向该虚拟页在磁盘中的起始位置故B错线程之间通常共享相同的地址空间但是进程之间是独占的故C错 处理器的MMU内存管理单元会将虚拟内存映射到物理内存过程如下 1CPU生成一个虚拟地址传递给MMU 2MMU会根据虚拟地址生成PTE地址然后到内存中查询PTE 3内存返回PTE给MMU 4MMU解析PTE得到物理地址传送回内存 5最后内存将数据传给CPU。
参考内存管理页表 关于虚拟内存和物理内存的映射和地址转换 8051的结构与功能没把选项记下来
解析 CPU核心8051的核心是一个基于哈佛结构的8位CPU拥有128字节的RAM4K字节的ROM程序存储器以及4个8位通用寄存器。它支持8位和16位算术运算包括加减乘除和逻辑运算。 存储器 8051包含了一定量的RAM用于数据存储以及ROM用于程序存储。它还支持外部扩展的RAM和ROM。 I/O端口 8051拥有多个通用输入/输出端口用于连接外部设备和传感器如LED、键盘、LCD显示器等。 定时器/计数器 8051集成了多个定时器和计数器用于定时、计数和延时等应用。这些定时器/计数器可以用于生成精确的时间间隔、测量外部信号脉冲宽度、计数事件等。 串行通信接口UART8051包含了一个串行通信接口支持异步串行通信协议如RS-232。这使得8051能够与其他设备进行串行通信如PC、传感器、显示器等。 中断控制器 8051包含了中断控制器支持多种中断源和优先级使得它能够及时响应外部事件和处理异步任务。 电源管理 8051支持多种低功耗模式可以有效管理功耗延长电池寿命适用于电池供电的应用。 若给定如下定义
int array[8];
int *p;如果指令指针p指向array数组那么*(p3)表示的是 A、元素a[4]对应的地址 B、元素a[3]对应的数据 C、元素a[3]对应的地址 D、元素a[4]对应的数据
答案B 解析没什么好说的就是考察指针与数组
编程题
第一道题是一道字符串查找替换将题目中的mt、Mt、mT、MT全部替换为$$ 输入是一串字符串输出是替换后的字符串 输入I love mt, I work in Mt 输出I love $$, I work in $$ 解析这道题就是字符串的查找替换可以遍历字符串直到最后一位的前一位然后判断当前位字符是否为’m’或’M’是的话下一位是否为’t’或’T’是的话就替换这两个为$并且让索引额外加一
第二道题的描述大致如下 给定一个n×n的矩阵其中的值全由0和1组成。对于给定的一个i如果在 i×i 的矩阵中发现1的数量与0的数量相等则为完美矩阵那么输出所有的i (1 ≤ i ≤ n)对应完美矩阵的数量。 1 ≤ n ≤ 200 输入第一行是数字n第二行到第n行为矩阵具体的值 输出输出n行每行为对应的 i 的完美矩阵数量 输入 4 1010 0101 1100 0011 输出 0 7 0 1 解析遍历n次当n为奇数行时直接跳过每次都用一个i×i的窗初始先判断其中1的个数减去0的个数记为tmp。然后移动窗的过程中用新加入的列或者行中1的个数减去出去的列或行中1的个数记为tmp1。如果tmptmp10就说明达到平衡计数加一。 暴力解题会超时。