芯原股份 - 嵌入式软件工程师 - 笔试

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

alt

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

岗位:嵌入式软件工程师(成都)

题型:2 道企业知识题,5 道智力题,10 道 C/C++ 单选题(英语),10 道计算机科学及应用单选题(英语),总分 100 分,考试时间 60 分钟

1、企业知识题

1.1

芯原商业模式 SiPaaS 中第二个 S 指的是?==(C)==

  1. Solution
  2. Silicon
  3. Service
  4. Series

1.2

芯原的企业文化是?==(B)==

  1. 公正、友爱、分享、快乐
  2. 公正、关爱、分享、快乐
  3. 诚信、关爱、分享、快乐
  4. 平等、关爱、分享、快乐

2、智力题

2.1

把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是:==(A)==

Click to view image

  1. ①②④,③⑤⑥
  2. ①②⑤,③④⑥
  3. ①②⑥,③④⑤
  4. ①④⑤,②③⑥

2.2

根据规律,括号中的数字应为:3,16,45,96,==(B)==,288

  1. 145
  2. 175
  3. 195
  4. 105

2.3

左边给定的是纸盒外表面的展开图,右边哪一项能由它折叠而成?==(B)==

Click to view image

  1. B
  2. C
  3. D
  4. A

2.4

某种品牌的汽车轮胎,如果安装在前轮,那么行驶 300km 后报废;如果安装在后轮,那么行驶 450km后报废。如果行驶一定路程后交换前后轮胎,请问四只新轮胎最多可用来行驶多少km?==(C)==

  1. 320
  2. 340
  3. 360
  4. 300

2.5

一位酒商有 6 桶葡萄酒和啤酒,容量分别为 30 升、32 升、36 升、38 升、40 升、62 升。其中五桶装着葡萄酒,一桶装着啤酒。第一位顾客买走了两桶葡萄酒;第二位顾客所买葡萄酒则是第一位顾客的两倍。请问,哪一个桶里装着啤酒?==(D)==

  1. 36 升的桶
  2. 38 升的桶
  3. 40 升的桶
  4. 62 升的桶
  5. 32 升的桶
  6. 30 升的桶

3、C/C++(英语)

3.1

Suppose running on Linux, which one is the correct output of following code ==(C)==

#include <stdio.h>

void test1(void) {
    char* my_array = "abc";
    my_array[1] = '+';
    printf("my array is %s ", my_array);
}

void test2(void) {
    char my_array[] = "abc";
    my_array[1] = '-';
    printf("my array is %s ", my_array);
}

int main(int argc, char** argv) {
    test2();
    test1();
    return 0;
}
  1. my array is a+b my array is a-b
  2. my array is a-b my array is abc
  3. my array is a-c Segmentation fault(core dump)
  4. my array is a-b my array is a+b

解答:

test1() 中定义了一个 my_array 指针,且该指针指向了 "abc" 字符串常量,当尝试修改字串常量的值时会产生段错误
test2() 中定义了一个 my_array 字符数组,可以正常修改数组中某个元素的值,不会产生错误

3.2

Which one is the correct output of following code ==(B)==

#include <stdio.h>

int main(int argc, char *argv[]) {
    unsigned int a = 100;
    signed int b = -100;
    signed int c, d;

    c = a / b; // 这里会导致未定义行为
    d = b / a;

    printf("%d, %d\n", c, d);
    return 0;
}
  1. 0, -1
  2. 0, 42949671
  3. -1, 42949671
  4. -1, -1

解答:

a 是无符号整型数,b 是有符号整型数,当尝试 a / b 的运算时,b 会产生隐式类型转换,转换为无符号整数(4294967196),因此 c 应该为 100/4294967196=0
同理,当尝试 b / a 的运算时,b 仍然会产生隐式类型转换,因此 d 应该为 4294967196/100=42949671

3.3

Which one is the correct output of following code ==(C)==

#include <stdio.h>

static int FIX_HEAD = 6;

int main(int argc, char *argv[]) {
    char array[] = "hello verisilicon";
    int offset = sizeof(array);

#ifdef FIX_HEAD
    offset = FIX_HEAD;
#endif

    printf("%s\r\n", array + offset); 
    return 0;
}
  1. verisilicon
  2. hello veris
  3. messed code
  4. ello verisilicon

解答:

#ifdef FIX_HEAD 用来判断是否存在 FIX_HEAD 宏定义,由于 static int FIX_HEAD = 6; 只是定义了一个变量,而非宏定义,因此虽然同名,但仍然不满足 #ifdef FIX_HEAD 条件,所以 offset 值为 sizeof(array)
array 为字符串首地址,sizeof(array) 为字符串在内存中占用的字节数(包括结束符 \0),因此最终输出结果应该为字符串后的值,也即乱码值

3.4

What's the output of following code ==(A)==

#include <iostream>

int f(int);

using namespace std;

int main() {
    int a = 2, i;
    for (i = 0; i < 3; i++) {
        cout << f(a) << " ";
    }
    cout << endl;

    return 0;
}

int f(int a) {
    int b = 0;
    static int c = 3;
    b++;
    c++;
    return (a + b + c);
}
  1. 7 8 9
  2. 7 10 13
  3. 7 9 11
  4. 7 7 7

解答:

首先应该明确的是:ab 为普通变量,c 则为静态变量,依次按顺序执行了三次 f(2)
第一次执行 f(a) 函数执行到 return (a + b + c); 语句时:a=2b=1c=4,输出 7
第二次:a=2b=1c=5,输出 8
第三次:a=2b=1c=6,输出 9

3.5

What is the output of the following program on a 64-bits machine? ==(B)==

#include <iostream>
using namespace std;

class A {
public:
    int a;
    static int b;
    char c;
    double d;

    virtual int add(int x, int y) { return x + y; }
};

int main() {
    cout << sizeof(A) << endl;
    return 0;
}
  1. 21
  2. 24
  3. 32
  4. 16

解答:

静态成员变量 b 在类的对象中不占用内存,存在虚函数的类会包含一个虚函数指针,指针在 64 位机器上占用 8 个字节内存
在 64 位机器上默认进行 8 字节对齐,剩下的成员变量 acd 在内存中分布为:a(4字节)+ c(1字节)+ 填充(3字节)+ d(8字节)= 16字节,综上共 24 字节

3.6

What's the output of following code ==(B)==

#include <stdio.h>
#include <stdint.h>

uint32_t a = 10;

void func(uint32_t **out) {
    *out = &a;
    a = 20;
}

int main(void) {
    uint32_t *out = 0;
    func(&out);
    printf("%u\r\n", *out); 
    return 0;
}
  1. 10
  2. 20
  3. 无法运行
  4. 0

解答:

outuint32_t 类型的指针,func 函数将指针 out 的地址作为形参传入,在函数体内修改指针指向的值为全局变量 a,同时又修改全局变量 a 的值为 20,因此最终输出的是 a 的值 20

3.7

Running the follow

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

欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论

相关推荐

发邮件催了,网上喷CVTE的不少,感觉这公司。。。还是要注意点影响吧,都不敢去的感觉。当然人家可能看不上我。20道选择,2道编程,1道视频题20道选择前几道是单选,后面是多选,通过选项前面是圈圈和方框可以判断是单选还是多选。只记得部分题目,范围涉猎很广,linux、单片机、iic、uart通讯,交叉编译啥的都有1.Linux中可以查看内存使用情况的指令cat&nbsp;/proc/meminfo选项还有其他的文件和指令组成的干扰选项,好像有个&nbsp;vi&nbsp;/proc/meminfo&nbsp;,,这么说也可以?补充:&nbsp;&nbsp;free&nbsp;-h2.嵌入式系统中断函数,有返回值吗,可以传递参数(形参,实参)吗无返回值,不可以传递参数 3.ARM的寻址方式&nbsp;&nbsp;多选立即寻址&nbsp;、寄存器间接寻址、相对寻址等4.SRAM和DRAM的区别功耗、存储密度、性能速度、成本什么的SRAM(静态随机存取存储器)和DRAM(动态随机存取存储器)SRAM:&nbsp;触发器存储,不需要定期刷新&nbsp;&nbsp;速度快&nbsp;&nbsp;&nbsp;&nbsp;功耗高&nbsp;&nbsp;&nbsp;&nbsp;成本高&nbsp;&nbsp;小容量&nbsp;&nbsp;&nbsp;常用于计算机CPU高速缓存DRAM:&nbsp;电容存储,需要定期刷新&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;速度较快&nbsp;功耗稍低&nbsp;成本低&nbsp;容量大&nbsp;&nbsp;&nbsp;&nbsp;适用于大容量存储需求5.通讯协议之类的uart是全双工SPI的最大速度&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IIC什么的,最大速度,写只能100k6.这个没太懂,&nbsp;字长为32位,存储容量位256MB,按字长编址,寻址范围是多少?哦哦,是不是存储容量256MB,一个字长为32&nbsp;,就是4B,也就是一个地址对应位置存储256/4&nbsp;=&nbsp;64那就是了,题目一开始有点没看懂。7、GPIO的特性?什么方向和速度什么的可以接SDRAM,高速通信吗&nbsp;&nbsp;NO8.单片机定时器控制的寄存器&nbsp;多选TMOD、TCON我记得是这两,选的也是这两&nbsp;&nbsp;TMOD工作模式选择TCON控制定时器的启动、停止、中断请求标志。9、嵌入式系统在宿主机上开机,目标机上运行需要什么环境交叉编译10、中断的中断优先级,会不会打断,抢占什么的用户程序可以打开中断接收中断向量吗中断会使程序进入内核态?判断正确,中断是会让程序进入内核态吧,好像用户程序无法直接打开中断什么的?由内核完成。11、设置绝对地址0x1234的整型数值为0x5678正确的方式给了些指针,和赋值语句比较简单,分的清哪个是地址,哪个是值就可以选出,多选*(int*)&nbsp;0x1234&nbsp;=&nbsp;0x5678;好像这样就可以,他还有涉及到const一些东西const修饰指针,指针指向不可变吧,常量指针12、4个io口,电平为0或1,最多可以扫描多少个按键按键矩阵好像就是四个口,16其他一些不记得了大题1.两个字符串&nbsp;&nbsp;Src&nbsp;&nbsp;Des,记录两字符串种的,大小写字母,数量Des中的大小写字母是否满足组成Src中的字符,满足输出True不满足输出False&nbsp;&nbsp;考虑两个因素(大小写,数量)2.找商人you&nbsp;出发,&nbsp;you有很多朋友,节点,朋友也有节点先找你的朋友,如果你朋友中没有商人,就再从你朋友中找直到找到那个商人,商人的特点是名字结尾是‘M’挺模棱两可的,给出的图和节点名字都是小写,有个小写m,所以不知道是不是题目打错了。。。视频题static关键字的作用,运用场景有哪些。就是给你题目&nbsp;,你有两分钟准备和构思两分钟后开始视频录制,&nbsp;你对着摄像头回答问题时间有五分钟,可以提前结束。static&nbsp;申明静态变量静态局部变量静态全局变量静态函数静态类成员变量#牛客AI配图神器#
查看15道真题和解析 投递CVTE等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务