面试真题 | 北京联发科嵌入式软件工程师笔试题目解析

[TOC]

单选题

1.Linux中使用 mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是()

A -m

B -d

C -f

D -p

D

mkdir [选项] [目录]

-m --mode=模式,建立目录的时候同时设置目录的权限。

-p --parents 若所建立的上层目录目前尚未建立,则会一并建立上层目录。

-v --verbose 每次创建新目录都显示信息。

-h --help 帮助信息。

2.下面代码创建了多少个进程(不包含main进程本身)()

int main(int argc,char* argv[])
{
   fork();
   fork() && fork() || fork();
   fork();
}

A 19

B 30

C 24

D 29

A

这道题主要考了两个知识点,一是逻辑运算符运行的特点;二是对fork的理解。

如果有一个这样的表达式:cond1 && cond2 || cond3 这句代码会怎样执行呢?

1、cond1为假,那就不判断cond2了,接着判断cond3。

2、cond1为真,这又要分为两种情况:

​ 2.1 cond2为真,这就不需要判断cond3了。

​ 2.2 cond2为假,那还得判断cond3。

fork调用的一个奇妙之处在于它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:

1、在父进程中,fork返回新创建子进程的进程ID。

2、在子进程中,fork返回0。

3、如果出现错误,fork返回一个负值(题干中说明了不用考虑这种情况)。

在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。

有了上面的知识之后,下面我们来分析fork() && fork() || fork()会创建几个新进程。

很明显fork() && fork() || fork()创建了4个新进程。

总结:

第一行fork生成1个新进程。

第二行的三个fork生成4+4=8个新进程。

第三行的fork会生成10个新进程(这是因为前面总共有10个进程,调用一次fork生成10个新进程。

所以一共会生成1+8+10=19个新进程。

3.如果下列公式成立:3A*124=446C。则采用的是()进制

A 11

B 12

C 14

D 16

C

看个位。最后的结果446C个位为C,因此,A,B可以排除。

假设为14进制,(A * 4 )%14= 12,结果正好为C。因此,答案为14进制。

4.下面关于字符数组的初始化,那个是正确的?()

A char b[2][3] ={"d","e","f"};

B char b[2][3] ={"d","e"};

Cchar b[2][3] ={{"d","e","f"},{"a","b","c"}};

Dchar b[2] ={"d","e"};

B

通常情况下,二维数组的每一行分别使用一个字符串进行初始化。 例如:

char c[3] [8]={{"apple"},{"orange"},{"banana"}};

等价于:

char c[3][8]={"apple","orange","banana"};

A:应改为char b[3][2] ={"d","e","f"};

C:应改为char b[2][3][2] ={{"d","e","f"},{"a","b","c"}};

D:应改为 char b[2][2]={"d","e"};

5.在32位系统中,下列类型占用8个字节的为()

A int

B unsigned long long

C char

D short int

B

32位操作系统

int:4字节

unsigned long long:8字节

char :1字节

short int:2字节

注意和64位操作系统的区别:64位系统中,指针变量和long以及unsigned long 都占8个字节,其他的和32位系统一样

简答

1.

int a[6] = {1,2,3,4,5,6};
printf("%d\n",*((int*)(&a+1)-1)); 

那么打印结果是什么?

6。

*((int*)(&a+1)-1))化简为:*(p-1) p=(int*)(&a+1)

&a是一个指向int(*)[6]的指针。由于&a是一个指针,那么在32位机器上, sizeof(&a)=4,但是**&a+1的值取决于&a指向的类型**,由于&a指向

int(*)[6],所以&a+1 = &a + sizeof(int(*)[6])=&a+24&a是数组的首地址,由此&a+1表示a向后移动了6个int从而指向a[6](越界),所以p指向的是a[6]。

由于p是int * 类型,那么p-1就指向a[5],所以 *(p-1)=a[5]=6。

2.请写出常量指针和指针常量的代码形式,并简述他们的区别

int const *p1;const 在前,定义为常量指针

int *const p2; * 在前,定义为指针常量

常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。

指针常量p2:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一

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

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论

相关推荐

因为实习经历和jd方向很相关,甚至可以说就是现在实习做的事情,所以整个面试非常快面试官人很好,上来没自我介绍之前还问我是不是上海嘉定,我说学校有一个校区在那(深圳的公司对上海这么熟悉嘛)正式流程:自我介绍实习和项目拷打:问了下工具链使用和具体配置细节,使用多久了然后问了一个实习项目的实现方式和流程checksum是怎么计算的,大致流程八股:任务调度机制,抢占式和非抢占式有什么区别优先级反转和解决方式,应该是有两个解决方式,我说了一种can和canfd的区别详细问了波特率是每个数据段都不一样吗问了zlg的配置(我是canoe用得多,答得不好)urat和SPI有什么区别手撕:出了一个场景题,写伪代码就行,重在思路的考察吧就是rolling counter,每组数据16位,一直递增为正确,不符合为错误,然后需要返回每组数据和对应的信号正确与否还涉及一些实际情况的逻辑,比如不是从第一位开始发,如果有错误,错误处理机制是上面?写得还行吧反问:部门的组织架构,上位组织是什么,组内负责的工作有哪些?问了下今后的学习路线和方式?问了下SOP车型和项目,合作的OEM?面试官人很好,总流程40多分钟,感觉有5分钟多都在回答我的问题,全程笑脸,我和面试官基本上从开摄像头笑到面试结束还挺愉快的#通信硬件投递记录##软件开发笔面经##牛客创作赏金赛#
点赞 评论 收藏
分享
08-21 14:38
已编辑
电子科技大学 C++
7.20投递 7.31一面 8.7二面 8.19三面 8.21通知挂了bg双非本 9硕一段实习 3个项目 本科20几个作品一面:(一小时)1. 自我介绍2. 介绍项目   - 问:是不是**开发是第一个项目   - 问:介绍下CAN通信原理,原理讲   - 问:编程方面的,数据链路方面的   - 问:具体编程是怎么样的   - 问:有哪些入参   - 问:有了解过canFD吗,can拓展协议呢   - 问:讲一下UDP吧   - 问:怎么去创建UDP   - 问:以太网通信几层   - 问:电路板上有哪些芯片实现这7层   - 问:ros通信原理   - 问:验证平台里用到了组合导航,用来干啥的   - 问:用的什么协议   - 问:用linux读的spi吗   - 问:还有相机和雷达   - 问:C++用的多还是c多3. 基础问题(八股)   - 问:对定时器的理解,时钟源是啥   - 问:时钟源来自哪里   - 问:stm32为什么叫32   - 问:学名叫啥   - 问:对中断的理解   - 问:写过啥中断   - 问:什么是RAM什么是ROM   - 问:代码运行的地方是哪个   - 问:定义和声明的区别   - 问:static关键词作用   - 问:static修饰函数是啥用的   - 问:c语言结构体存储规律,一个char和一个int占多少   - 问:中间有空格吧,怎么去掉这些空格   - 问:heap和stack区别   - 问:智能指针初始化对象,放在哪   - 问:什么时候用到stack   - 问:类里static修饰函数表示这个函数咋样   - 问:内联函数了解吗   - 问:linux线程通信有哪些   - 问:线程进程区别   - 问:uboot启动流程   - 问:uboot干啥的   - 问:TCP用过吗   - 问:GDB调试用过吗?   - 问:源代码到可执行过程步骤   - 问:那你平时怎么写程序   - 问:docker用过吗   - 问:调试以太网用具?   - 问:git常用命令   - 问:那你常用哪些操作   - 问:驱动开发流程   - 问:stl库用的多的是啥   - 问:python用过吗4. 写代码:   c语言实现一个字符拷贝函数,要求自己写函数实现,用函数返回地址二面:(一小时)1. 自我介绍2. 介绍项目   - 问:主要是在哪接触到的Uboot和驱动开发,**项目里,巴拉巴拉   - 问:主要是在哪里用到的STM32,本科作品   - 问:STM32用到过什么外设?照着本科做的说了一遍   - 问:C++在哪用到过的?和C语言区别是什么?   - 问:CAN在哪用到过的?是什么协议的?最长收发有多少位?   - 问:Orin主要是在哪用到的?   - 问:ROS是在哪用到的,有写过ROS的程序吗?   - 问:STL库用到过哪些?   - 问:static你用来做过什么?   - 问:命名空间std干啥的?   - 问:自己写的函数和std里的同名咋办?   - 问:const用来干啥的,以前用过的有哪些?   - 问:设计模式知道吗   - 问:智能指针了解吗3. 写代码:   你需要设计一个简单的汽车展示系统,包括一个基类 Vehicle 和两个派生类 Car 和 Truck。   每个类都应该具有简单的属性,如名称和价格,并实现简单的函数。    要求:    Vehicle 类应该包含名称和价格两个属性,并提供适当的构造函数和成员函数来操作这些属性。    Car 类应该是 Vehicle 类的派生类,适当重写基类的成员函数以打印适应汽车的特性。    Truck 类应该是 Vehicle 类的派生类,适当重写基类的成员函数以打印适应卡车的特性。    在主数中创建一个 vector 容器,然后向其中添加几个 Car 和 Truck 对象,并计算它们的总价格。    输出每辆车的信息,包括名称和价格。 你的任务是实现这个简单的汽车展示系统,并在主函数中演示其功能   针对这个代码问了些问题:   - override 关键词干啥用的   - 为什么子类没有name成员,能用   - 为什么vector<Vehicle* >里要加*,不加可不可以   - 代码里怎样体现多态?三面:(半小时)- 问实习局域网通信系统里做了什么?数据流向是怎么样的;- 问实习里遇到的最难的点是什么,怎样解决的?- 问Orin的CAN怎么使用的,有没有连什么外接的芯片(感觉是因为这个负责人只会这个,又想看看我是不是自己做的,所以问了个这么奇怪的问题)- 问小车标定标了啥,有和相机标定吗?为什么要做小车?- 问嵌入式想做哪一方面的,底层还是应用?- 反问:你对你们公司的产品有自豪感吗?感觉面试官有点****的,看背景是公司走廊的沙发上?感觉还在干活,抽空出来面试,迟到了一分钟。三面是主管面,前两面是组长,前面两面体验还行,估计排序给挂了吧还好也不是很想去要是给我发offer了我反倒要纠结要不要去了#元戎启行##秋招##面经#
查看68道真题和解析
点赞 评论 收藏
分享
1 22 评论
分享
牛客网
牛客企业服务