从本篇开始将会更新历年来各个公司的面试题与面经,题目来自于网上各个平台以及博主自己遇到的,答案也来自网络,后期3月份左右博主打算将答案整理(放下文章的最下面),如果对大家有所帮助,帮忙点点赞和关注吧!
在深圳做嵌入式,大疆公司绝对是
Top
级别的,大疆的技术栈也很深。但
2020
受美国制裁后,有所缩招。另外提醒,研发岗对学历要求高一些。
大疆公司每年秋招是分批考试,考试时间自选,分为
AB
卷,本文分享是
B
卷。
选考时间:
2020.08.16
,
19
:
00-20
:
30
(
A
卷为
2020.08.10
)
题型:单选(
2' * 10
)、多选(
3' * 5
)、填空(
4' * 4
)、简答(
6' * 3
)、编程(
* 2 = 31'
)
B
卷主要考察
C
语言,还考察一些
Liunx
和
ARM
知识点
一、单选:
1.
const *char
和
const char*
定义变量的区别
2.
关于
cache
错误的是?
3.
sizeof
结构体(含位域的)
4.
FIQ
中断向量入口地址?(考察
ARM
知识点)
回答:
FIQ
的中断向量地址在
0x0000001C
,而
IRQ
的在
0x00000018
。
5.R15除了本身的功能还可以作为程序计数器?
回答:寄存器
R13
在
ARM
指令中常用作堆栈指针
SP
,寄存器
R14
称为子程序链接寄存器
LR(Link
Register)
,寄存器
R15
用作程序计数器
(PC)
。
ARM
微处理器共有
37
个
32
位寄存器,其中
31
个为通用寄存器,
6
个位状态寄存器。通用寄存器
R0~R14
、程序计数器
PC
(即
R15
)是需要熟悉其功能的。
6.
如何判断机器大小端?
回答:
联合体方法判断方法:利用
union
结构体,从低地址开始存,且同一时间内只有一个成员占有内存的特性。大端储存符合阅读习惯。联合体占用内存是最大的那个,和结构体不一样。
a
和
c
公用同一片内存区域,所以更改
c
,必然会影响
a
的数据
#include<stdio.h>
int main(){
union w
{
int a;
char b;
}c;
c.a = 1;
if(c.b == 1)
printf("小端存储\n");
else
printf("大端存储\n");
return 0;
}
指针方法
通过将
int
强制类型转换成
char
单字节,
p
指向
a
的起始字节(低字节)
#include <stdio.h>
int main ()
{
int a = 1;
char *p = (char *)&a;
if(*p == 1)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}
二、多选
1
、哪些类型可以自加:
i++
2
、全双工总线类型有哪几个?
3
、线程间同步方式?
进程间通讯:
(
1
)有名管道
/
无名管道(
2
)信号(
3
)共享内存(
4
)消息队列(
5
)信号量(
6
)
socket
线程通讯:
(
1
)信号量(
2
)读写锁(
3
)条件变量(
4
)互斥锁(
5
)自旋锁
三、填空
1
、填一种编译优化选项:
-o
2
、在有数据
cache
情况下,
DMA
数据链路为:外设
-DMA-DDR-cache-CPU,CPU
需要对
cache
做什么操作,才可以得到数据?
3
、面向对象编程三大特点?
回答:封装、继承和多态
四、简答
1
、
SPI
四种模式,简述其中一种模式,画出时序图?
回答:请参考
CSDN
博客。
2
、判断大小端的三种方式?
3
、为什么
TCP
是稳定传输?
回答:可以从
TCP
和
UDP
的区别出发去回答。
五、编程
1、求最大的和:
取两个不重复的字串,求他们的最大的和
输入
取 2、2、3、-3、4、5,最大输出13
输入
取9、11、20,加起来40
输入
答案是-2
2、停车,求收费最多(数据太多,可能有误,自己可以想思路)
同一时间只能服务一个用户