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

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

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相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论

相关推荐

07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
07-10 11:08
门头沟学院 Java
Sairus:我注册都注册不了提醒我手机号二次啥的,果然对于人才推得就是快,像我投完了就没回音的
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

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