美团 - 硬件开发工程师 - 笔试

❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗

alt

本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。

岗位:硬件开发工程师(嵌入式系统软件开发方向)

题型:20 道单选题,2 道编程题题

注意:本文章暂无解析,谨慎分辨答案对错

1、单选题

1.1

C 语言中,如果输入整数 v 是 2 的幂,下面表达式中哪个会返回 true ==(A)==

  1. (v & (v-1)) == 0;
  2. (v | (v + 1)) == 0;
  3. (-v & (v-1)) == 0;
  4. (v | (v-1)) == 0;

1.2

在 Linux 字符设备开发中,位操作也是很常用的操作,Linux 内核也提供了一系列的原子位操作 API 函数,下列关于原子位操作的描述,错误的是 ==(B)==

  1. 内核 test_and_set_bit(int nr,void *p)函数将 p 地址的第 nr 位置1,并且返回 nr 位原来的值
  2. 原子位操作需要像原子整形变量那样必须有 atomic_t 的数据结构
  3. 原子位操作是直接对内存进行操作
  4. 内核 change_bit(int nr,void *p)函数将 p 地址的第 nr 位进行翻转

1.3

该程序的输出结果为 ==(C)==

#include <stdio.h>

int main(int argc, char const* argv[]) 
{
    int i = 1;
    float j = 1;

    printf("%d, %0.1f\n", i, j);

    return 0;
}
  1. 1,1.000000
  2. 1,1
  3. 1,1.0
  4. 110

1.4

于 Cortex-M3&4 系列的单片机,如 STM32 中,有一个寄存器叫向量表偏移寄存器,下列关于该寄存器的描述正确的是 ==(B)==

  1. 对向量表偏移寄存器进行设置时,保证设置的地址可以 4 字节对齐即可
  2. 可以使用向量表偏移寄存器来对向量表进行重新定位
  3. 当向量表已经设置好之后,向量表偏移寄存器就无法被修改
  4. 只有在单片机刚上电或者复位后,才可以对向量表偏移寄存器进行设置

1.5

关于可剥夺型内核与不可剥夺型内核的介绍,下列说法错误的是? ==(A)==

  1. 不可剥夺型内核不允许使用不可重入函数
  2. 可剥夺型内核是指,最高优先级任务可以优先得到 CPU 控制权
  3. 不可剥夺型内核是指,多任务彼此共享一个 CPU
  4. 使用可剥夺型内核时,CPU 控制权是可知的

1.6

Linux 网络设别驱动开发中,我们需要先进行网络设备驱动的注册,注册函数为 ==(B)==

  1. ether_setup()
  2. register_netdev()
  3. alloc_netdev()
  4. alloc_etherdev()

1.7

下列关于用户标识号的说法中,错误的是 ==(B)==

  1. 普通用户账号可以是 101
  2. 用户标识号可以是整数,也可以是小数
  3. 超级用户的标识号是 0
  4. 管理员账号可以是 88

1.8

在 AT89S52 单片机中,假设(IP)= 00001010B,那正确的优先级排序为 ==(D)==

  1. PS>PT0>PT1>PX1>PX0
  2. PT1>PT0>PX0>PX1>PS
  3. PT0>PT1>PS>PX0>PX1
  4. PT1>PT0>PS>PX1>PX0

1.9

在 Linux 设备驱动开发中,我们使用 of_find_property 函数查找设备树节点指定的属性,函数原型如下:property *of_find_property(const struct device_node *np, const char *name, int *lenp),关于这个函数,描述错误的是 ==(A)==

  1. 返回值返回得到的属性元素数量
  2. np 表示设备节点
  3. name 表示属性名字
  4. lenp 表示属性值的字节数

1.10

在 FreeRTOS 操作系统中,除了支持传统的任务操作,还支持协程任务,关于 FreeRTOS 协程的描述,错误的是 ==(B)==

  1. 协程使用合作式的调度器
  2. 不同的协程使用不同的堆栈
  3. 协程相对于任务状态只有三种,没有挂起态
  4. 可以在使用抢占式的调度器中使用协程

1.11

下列有关总线设备的说法,有误的是? ==(D)==

  1. 向系统注册一个设备时,会向驱动的管理链表插入我们的新设备
  2. 驱动是一种装备在指定设备的软件
  3. 设备指的是装载在某总线上的物理装备
  4. 总线负责管理挂载对应总线的设备以及驱动

1.12

下列关于 FreeRTOS 和 uCOS 的描述,错误的是 ==(B)==

  1. 这两个系统均支持修改任务的优先级
  2. 理论上,这两个系统所支持的最大任务数均是 64 个
  3. uCOS 功能更强大支持 FS,USB,GUI 等
  4. uCOS 可以使用 MailBox 来完成任务间通信,但 FreeRTOS 不支持 MailBox

1.13

关于位图的概念和用途,说法错误的是? ==(D)==

  1. 位图可用来表现色彩的过渡,形成逼真的效果
  2. 位图又被称作点阵图像或者栅格图像
  3. 是由像素这种单个点格组成的
  4. 位图尺寸越大,形状线条看的越清晰

1.14

已知函数的原型是:int fun(char b[10],int*a);,设定义:char c[10]; int d; 正确的调用语句是 ==(B)==

  1. fun(&c,d);
  2. fun(c,&d);
  3. fun(c,d);
  4. fun(&c,&d);

1.15

运行以下程序之后,输出的结果为 ==(C)==

#include <stdio.h>

int main() {
    int arr[] = {19, 30, 18, 6, 25};
    int i, j;

    // 冒泡排序
    for (i = 0; i < 2; i++) { // 外层循环控制排序轮数
        for (j = 0; j < 4 - i; j++) { // 内层循环进行相邻元素比较和交换
            if (arr[j] > arr[j + 1]) {
                in

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论
1.10应该是B吧 https://freertos.org/zh-cn-cmn-s/Documentation/02-Kernel/02-Kernel-features/01-Tasks-and-co-routines/00-Tasks-and-co-routines
点赞 回复 分享
发布于 03-22 17:11 广东

相关推荐

评论
2
22
分享

创作者周榜

更多
牛客网
牛客企业服务