联发科 - 嵌入式软件 - 笔试

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

alt

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

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

题型:10 道选择题,5 道填空题,2 道简答题,1 道编程题

1、选择题

1.1

【不定项选择题】使用 C 语言编程时,以下对 typedef#define 的使用或理解,正确的有 ==(BD)==

  1. typedef int INTERGER; unsigned INTERGER n;
  2. typedef 在编译阶段生效,有类型检查。#define 在预处理阶段生效,预处理器仅做文本替换,不进行任何检查
  3. #define PTR_INT int *PTR_INT p1,p2;
  4. #define 没有作用域的限制,在其定义点之后的整个文件中有效,除非它被 #undef 指令显式地取消定义,而 typedef 有自己的作用域

解答:

typedef 可以用来定义已存在变量类型的别名,但是 unsigned 后面应该跟一个完整的类型,选项 A 错误
int* p1,p2; 将定义两个 int 类型指针变量 P1P2,但是如果#define PTR_INT int *,然后PTR_INT p1,p2; 将定义一个 int* 类型的指针变量 P1 和 一个 int 类型的普通变量 P2,因此选项 C 可能存在理解上的错误

1.2

【不定项选择题】使用 C 语言编程时,以下叙述错误的 ==(ACD)==

  1. continue 语句的作用是结束整个循环的执行
  2. 只能在循环体内和 switch 语句体内使用 break 语句
  3. 在循环体内使用 break 语句或 continue 语句的作用相同
  4. 从多层循环嵌套中退出时,只能使用 goto 语句

解答:

continue 用于结束当前层循环,break 用于跳出整个循环,选项 A、C 错误
从多层循环嵌套中退出时,可以使用 breakgoto 等语句,选项 D 错误

1.3

【不定项选择题】以下对二维数组的定义中正确的是 ==(C)==

  1. int a[4][]={1,2,3,4,5,6};
  2. int a[][3];
  3. int a[][3]={1,2,3,4,5,6};
  4. int a[][]={{1,2,3},{4,5,6}};

解答:

  1. 缺少第二维大小,无法确定型状,选项 A 错误
  2. 缺少初始化,选项 B 错误
  3. 选项 C 正确
  4. 缺少第一维大小,选项 D 错误

1.4

【不定项选择题】某研究所的员工构成情况是:所有的工程师都是男性,并非所有工程师都是研究生,并非所有研究生都是男性。由此可以推出: ==(ABCD)==

  1. 有的男性不是工程师
  2. 有的男研究生是工程师
  3. 有的研究生是男性
  4. 有的男性不是研究生

1.5

【不定项选择题】桌上有 20 个硬币,10 个是公面向上,10 个是字面向上。你在桌前被蒙上眼及戴上手套,你无法分辨哪个币是公面向上或字面向上,你只能移动或反转硬币。你的任务是要将 20 个硬币分两组,每组 10 个,而每组硬币里的公面向上的数目要一样。以下哪些可能是正确的答案? ==(AC)==

  1. 可以完成任务
  2. 不能完成任务
  3. 可以,但需要特定的分组方法
  4. 不行,需要额外感觉硬币的重量

1.6

【不定项选择题】下列程序可以正确执行的是: ==(B)==

  1. A
#include <stdio.h>

char* returnStr() {
    char p[] = "hello world!";
    return p;
}

int main() {
    char *str = NULL;
    str = returnStr();
    printf("%s\n", str);
    return 0;
}
  1. B
#include <stdio.h>

char* returnStr() {
    char *p = "hello world!";
    return p;
}

int main() {
    char *str = NULL;
    str = returnStr();
    printf("%s\n", str);
    return 0;
}
  1. C
#include <stdio.h>

char* returnStr() {
    char p[13] = "hello world!";
    return p;
}

int main() {
    char *str = NULL;
    str = returnStr();
    printf("%s\n", str);
    return 0;
}
  1. D
#include <stdio.h>
#include <stdlib.h>

char* returnStr() {
    char* p = (char*)malloc(13*sizeof(char));
    *p = "hello world!";
    return p;
}

int main() {
    char *str = NULL;
    str = returnStr();
    printf("%s\n", str);
    free(str);
    return 0;
}

解答:

选项 A、B、C、D 的区别在于 returnStr 函数内变量 的定义 选项 A 中 是定义在函数栈上的局部数组,在函数返回时,这个数组的内存会被释放,导致返回的指针 指向的内存不再有效,选项 A 错误 选项 B 中 指向的是字符串常量 ,它存储在常量区,这部分内存是全局有效且不可修改的,选项 B 正确 选项 C 中 是局部数组,类似于选项 A,返回局部变量的地址会导致未定义行为,因为该数组在函数返回时会被释放,选项 C

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

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

全部评论

相关推荐

那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务