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

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

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 广东

相关推荐

一面(2025/04/07)1.&nbsp;自我介绍2.&nbsp;京东物流实习&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;数据治理怎么做的,怎么保证清洗后的数据的质量&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;最大的收获&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;遇到的难点3.&nbsp;学前端的目的(我回答的一方面是兴趣,一方面是与爬虫技能相辅相成)4.&nbsp;比较擅长的点,是数据分析吗(根据实习推测的,但我说是数据采集和可视化)5.&nbsp;平时有写过爬虫吗6.&nbsp;OJ&nbsp;项目&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;参与人数&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;重构目的&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;遇到的难点&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;测试没法保证用例完整,怎么处理的(说了个&nbsp;E2E)7.&nbsp;泡泡图项目&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;是个人项目还是?&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;项目背景,为啥做这个,有没有上线8.&nbsp;说一个前端哪一个方面你花了很长时间钻研,如何去学习的9.&nbsp;闭包,使用场景10.&nbsp;原子化的理解11.&nbsp;Vue&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;通信方式&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;Vuex&nbsp;原理,为什么&nbsp;actions&nbsp;和&nbsp;mutations&nbsp;分开,如果是你的话为什么这么设计12.&nbsp;AI&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;如何去学习&nbsp;AI&nbsp;相关知识的,比如说一个新技术刚诞生你是怎么接触并掌握的&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;有没有将&nbsp;AI&nbsp;应用到开发过程中,提效了多少百分比&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;prompt&nbsp;设计,有没有使用相关工具(说了个描述简单需求但是让&nbsp;AI&nbsp;完善&nbsp;prompt)13.&nbsp;反问:业务相关,技术栈面试体验很棒,面试官很会挖掘你的亮点和擅长的地方,从京东实习到&nbsp;OJ&nbsp;项目到创业的泡泡图项目,聊了很多。面完就感觉稳了。二面(2025/04/10)1.&nbsp;小程序相关&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;如何上手项目,怎么学的&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;小程序的架构了解吗,架构优劣,与&nbsp;Vue&nbsp;的区别&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;遇到的难点,怎么解决的2.&nbsp;说一说架构设计3.&nbsp;说一说工程化4.&nbsp;还了解哪些打包工具,细节,区别5.&nbsp;Vue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;响应式原理,实现细节,做了哪些优化&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;diff&nbsp;算法6.&nbsp;说一说性能优化7.&nbsp;OJ&nbsp;项目&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;如何重构,人员组成&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;你负责的部分&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;技术难点&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;做了哪些架构上的优化8.&nbsp;有用过&nbsp;cursor&nbsp;一类的&nbsp;IDE&nbsp;吗,让我看看你的聊天记录(啊,∑(O_O;))9.&nbsp;与大模型对话,实现一个类似于小红书瀑布流的页面,他看你的聊天过程10.&nbsp;用大模型实现一个图片的样式,如果要加一个功能怎么做11.&nbsp;反问:为啥都爱问大模型,几天出结果面试没啥反馈,而且问的好难,第二天进人才库(┬_┬)
点赞 评论 收藏
分享
问题1:为什么会使用分库分表,到达了什么样的数据级别才会去加设计,是否对数据量有一个统计我的理解:看星哥之前写过&nbsp;单表行数超&nbsp;500&nbsp;万行或者单表容量超过&nbsp;2GB,推荐分库分表,但是面试的过程中怕被问自己写的项目会有这么大的数据量吗不要这么硬背,具体情况具体分析,有的表字段少,经常是条件等值查询,这样加个索引,一个亿也不用分表,有的字段多,还是范围查询,可能5000万就得分表,面试官问你你说是自己在学习分库分表应用到项目中,自己造了几千万的数据量问题2:基因法需要分表的一个数量和确定的一个东西(我的理解是分表的依据,例如大麦中是订单编号和用户id),但是正常的生产环境中是可能动态改变的,比如说需要动态扩容的话,怎么解决呢(例如当前有4个分表,但是现在需要扩充到8个分表),是使用双写吗?这个在扩容前就要考虑好能维持多少年内不需要再扩容。转转架构师在分库分表前,通过之前记录的数据增长量,做了256张表,能在7年内不需要再扩容,如果需要扩容的话,可以使用双写,新扩容表写的过程中,用新的分库分表算法问题3:如果在防止超卖的过程中,Redis不可用了,怎么解决我的理解:使用Redis集群和主从复制吗?因为Redis宕机的话数据库的数据也不能保证是最新的版本,所以得尽量保证Redis不宕机?肯定要使用redis集群模式,但可能会有主从延迟,导致从节点数据不是最新的,但关系不大。可以在用户生成订单后,修改数据库的座位和库存,然后用户支付后,再改数据库的座位和库存,每一步都做好验证。这样从节点的数据问题会降到最低。问题4:如果在当前的幂等验证逻辑中,有一个消息所对应的幂等标识符是不存在的,按照现有的逻辑是可以执行的,但是幂等验证之后的业务系统异常了,这个时候应该怎么处理呢(即通过了幂等的验证,但是后面的服务down掉了,比如说下游抛了一个异常出来)【没太明白应该回答什么,是指需要将幂等标识符重新进行设置吗】异常了就异常了呗,把这个请求的标识从redis中删除了,就像分布式锁时,业务异常也要执行解锁一样,让下一个请求进来正常执行,然后设置好标识位问题5:本地缓存为什么使用Caffine呢,为啥不用Guava因为caffine的性能要远高于Guava,没有其他复杂原因我的理解:查了下Caffine就是Guava改进而来的,可以这么说吗-&nbsp;Caffine在读写操作方面的性能更高,是基于异步的操作,将淘汰过期操作与读写进行分离-&nbsp;Caffine采用了一种结合&nbsp;LRU、LFU的算法W-TinyLFU+,具有高命中率,低内存占用的特点
查看5道真题和解析
点赞 评论 收藏
分享
评论
2
25
分享

创作者周榜

更多
牛客网
牛客企业服务