小米 - 嵌入式操作系统开发工程师 - 笔试

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

alt

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

岗位:嵌入式操作系统开发工程师-汽车

题型:24 道单选题,1 道多选题, 2 道编程题

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

1、选择题

1.1

存在二维数组 A[3][4],其起始地址为 1000,若每个元素占 4 个字节,则按行存储时 A[1,3] 的地址为 ==(A)==

  1. 1028
  2. 1024
  3. 1020
  4. 1056

1.2

设堆排序算法的最好情况时间复杂度、最坏情况时间复杂度、平均时间复杂度依次为甲、乙、丙,则甲、乙、丙的大小关系是 ==(D)==

  1. 乙>甲=丙
  2. 丙>乙>甲
  3. 甲>乙>丙
  4. 甲=乙=丙

1.3

若串 str="Software”,其子串(包含空串)的个数是 ==(D)==

  1. 9
  2. 8
  3. 36
  4. 37

1.4

系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条或者带有黑色边框、或者既带有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加三个类,以下哪一个设计模式可以实现该目的: ==(D)==

  1. 外观
  2. 单件
  3. 模板方法
  4. 装饰

1.5

采用顺序查找方法查找长度为 n 的顺序表时,在等概率时成功查找的平均查找长度为:==(D)==

  1. n/2
  2. (n-1)/2
  3. n
  4. (n+1)/2

1.6

给定长度的字符串 S="ACBECAB”,要构造一个相同长度的字符串 T。T 是一个空串,反复执行下列任意操作:1)从 S 的头部删除一个字符,加到 T 的尾部;2)从 S 的尾部删除一个字符,加到 T 的尾部。构造字典序尽可能小的字符串 T,字符串 T 最终为 ==(C)==

  1. ABCABCE
  2. ABACBCE
  3. ABACCBE
  4. BACEBCA

1.7

对数列(14,6,18,43,22,50)进行快速排序,元素值小的放前面,每次选最后的元素为基准,则整个排序过程需要比较的次数为 ==(C)== 次

  1. 36
  2. 6
  3. 12
  4. 9

1.8

==(A)== 定义了一个高层接口,这个接口使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面,简化了一群类的接口

  1. 外观模式
  2. 策略模式
  3. 单件模式
  4. 工厂模式

1.9

使用一维数组实现顺序栈。若栈中最多可容纳 10 个元素,栈底地址为 100,每个元素所占存储空间的大小为 5,在某时刻的栈顶地址为 130。下列说法正确的一项是 ==(D)==

  1. 此时栈内元素个数为 4
  2. 此时栈已满
  3. 此时栈已空
  4. 此时栈内还可容纳的元素个数为 4

1.10

如图所示,利用 Djkstra 算法求从源点到其他顶点间最短路径时,加入的顶点顺序为 ==(A)==

Click to view image

  1. [0,4,3,2,1]
  2. [0,4,2,3,1]
  3. [0,4,3,1,2]
  4. [0,4,2,1,3]

1.11

现有一个容量为 60 的背包,有 5 个体积分别为 35、18、11、16、8,价值分别为 30、28、10、19、5的物品,按照每次总选择价值最大物品的贪心策略,背包放入物品集合的最大价值为 ==()==

  1. 52
  2. 58
  3. 100
  4. 49

1.12

序列为 {12,67,56,16,25,37,22,29,15,47,48,34},表长为 12,散列函数 f(key) = key mod 12。采用线性探测法再散列处理冲突可以确定关键字 48 存储的下标为 ==(D)==,(下标从 0 开始,线性探测法:当 hash 一个关键字时,发现没有冲突,就保存关键字,如果出现冲突,则就探测冲突地址下一个地址,依次按照线性查找,直到发现有空地址为止)

  1. 4
  2. 0
  3. 6
  4. 2

1.13

假设以数组 A[70] 存放循环队列的元素,其头指针是 front=47,当前队列有 50 个元素,则队列的尾指针值为 ==(D)==

  1. 70
  2. 37
  3. 20
  4. 27

1.14

如图所示,从顶点 B 开始的普利姆算法(Prim 算法:每次总是选出一个离生成树距离最小的点去加入生成树)添加的节点顺序为 ==(B)==

Click to view image

  1. [B,E,C,A,F,D]
  2. [B,E,C,A,D,F]
  3. [B,E,F,D,C,A]
  4. [B,E,F,C,A,D]

1.15

设二维数组的行下标从 1 开始到 10 结束,列下标从 0 开始到 9 结束,采用行序优先策略进行存储。若起始地址为 100,每个元素所占存储空间大小为 5,则第 5 行第 5 列的元素的存储地址为 ==(A)==

  1. 325
  2. 225
  3. 425
  4. 525

1.16

设有数据结构 S=(D,R),下列选项中属于线性结构的有 ==(C)==

①D={甲,乙,丙},R={<甲,丙>,<丙,乙>}
②D={甲,乙,丙},R={<丙,乙>,<乙,甲>,<甲,丙>}
③D={甲,乙,丙,丁},R={<甲,甲>,<甲,乙>,<乙,丙>,<丙,丁>}
④D={甲,乙,丙,丁},R={<丁,甲>, <甲,丙>,<丙,乙>}

  1. A.①④
  2. B.②③
  3. C.③④
  4. D.①②

1.17

给定一个序列 {-2,11,-4,13,-5,-2},使得连续子序列的和最大为 ==(C)==

  1. 9
  2. 7
  3. 20
  4. 24

1.18

该算法的时间复杂度为:==(D)==

void fun(int n) {
    int i = 1;
    while (i <= n) {
        i = i * 2;
    }
}
  1. O(nlog2n)
  2. O(n^2)
  3. O(n)
  4. O(log2n)

1.19

对于一个具有 n 个顶点的无向连通图,它包含的连通分量的个数为:==(C)==

  1. n+1
  2. 0
  3. 1
  4. n

1.20

现有三个字符串 str1, str2, str3,str1 为主字符串,str2 为匹配字符串,str3 为替换字符串,如果 str1 中有 str2 相同的字符串,将它替换为 str3。现在 str1 = "abcdfgabcdhigkabcdmn",str2 = "abcd”,str3 = "bbb"。替换过后的字符串为==(D)==

  1. bbbfgbbbhigkabcdlmn
  2. bbbfgabcdhigkabcdimn
  3. abcdtgbbbhigkbbblmn
  4. bbbtgbbhigkbbblmn

1.21

二叉树的中序遍历序列为 d->g->b->a->e->c->f->h,后序遍历序列为 g->d->b->e->h->f->c->a,则前序遍历序列为==(D)==

  1. g->h->d->e->f->b->c->a
  2. a->g->d->b->c->e->h->f
  3. b->g->d->a->c->e->f->h
  4. a->b->d->g->c->e->f->h

1.22

使用选择排序算法对序列 进行从小到大排序,则第三趟的排

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

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

全部评论

相关推荐

评论
1
12
分享

创作者周榜

更多
牛客网
牛客企业服务