面试(二)

目录

1.STL六大部件

2.STL容器

3.汇编

4.基于Freertos工训机器人面试

5.opencv常用函数

6.陀螺仪模块 JY901B

7.增量式与位置式PID区别:

8.MQTT

12.描述一下gcc的编译过程?

13.内存的最⼩存储单位以及内存的最⼩计量单位分别是?

14.#include<> 与#include ""的区别?

15.变量的声明与定义有啥区别?

16.描述⼀下32位或64位平台下指针的⼤⼩

17.哪些情况下会出现野指针

18.git流程?

19.linux基本命令?

20.c语言三大结构

21.结构体和联合体的区别

22.字符串常用函数

23.C语言的文件操作


1.STL六大部件

分配器 迭代器 适配器 容器 算法 仿函数

2.STL容器

vector,deque,list,forward_list,array

STL容器适配器:

stack,queue,priority_queue

关联式容器

set,map

3.汇编

GNU汇编使用于I.MX6ULL,汇编程序的默认入口标号是_start

处理器内部数据传输指令

MOV,MRS,MSR

存储器访问指令

LDR,STR

汇编语言直接对应机器指令,I.MX6ULL中用汇编语言设置好C环境,比如初始化DDR,设置SP指针。

4.基于Freertos工训机器人面试

这个项目是我参加的一个比赛过程中做的。其结构和主控都是我们自制,利用串口控制机械臂,使用树莓派的opencv库来进行识别,使用陀螺仪和pid来控制直行,用pid调节电机速度。并且对于工训车的设计,我们也花了不少功夫,1. 我们使用了三个电源,一个给树莓派供电,一个给电机驱动模块供电,一个其他供电,目的主要是防止电机转动时对单片机或树莓派产生影响 2. 车体,我们是采用的三层亚克力板搭成的工训车,全封闭的,防止灰尘或外部环境对主控或其他模块造成影响。3.还有模块的选择上,F4串口和定时器是最符合这次比赛需求的,以及串口屏和串口舵机,会使得项目程序设计简单合理。

5.opencv常用函数

#开启摄像头
cap = cv2.VideoCapture(1)
#设置分辨率 VGA(640*480)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

frame = cv2.flip(frame, 0)  # 镜头上下反转
frame = cv2.flip(frame,1)  #镜头水平翻转

#转换成HSV
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
#转换成灰度
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

可以使用cv2.imread()函数读取图像,使用cv2.imshow()函数显示图像。

6.陀螺仪模块 JY901B

陀螺仪分为三轴,六轴,九轴,主要功能分别是三轴加速度,三轴角速度(陀螺仪),三轴地磁计。

7.增量式与位置式PID区别:

1增量式算法不需要做累加,而位置式算法要用到过去偏差的累加值。

2增量式算法得出的是控制量的增量, 而位置式的输出直接对应对象的输出。

3增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。

4在进行PID控制时,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅

8.MQTT

MQTT是一种基于TCP的发布/订阅协议,基本所有的云平台都支持设备以MQTT协议接入,如果你的设备支持MQTT连接,所以很容易的对接各云平台

12.描述一下gcc的编译过程?

分为四个阶段:预处理,编译,汇编,链接

预处理:头文件包含,宏替换,条件编译,删除注释

编译:主要进行词法,语法,语义分析等,检查无误后将预处理好的文件编译成汇编文件

汇编:将汇编文件转换成二进制目标文件

链接:将项目中的各个二进制文件+所需的库+启动代码链接成可执行文件

13.内存的最⼩存储单位以及内存的最⼩计量单位分别是?

最⼩存储单位是二进制位,内存的最⼩计量是字节

14.#include<> 与#include ""的区别?

include<>到系统指定目录寻找头文件,#include ""在项目所在目录查找文件,如果没有再到系统指定目录查找

15.变量的声明与定义有啥区别?

声明不需要建立存储空间,定义建立存储空间

16.描述⼀下32位或64位平台下指针的⼤⼩

32位平台:任意类型的指针⼤⼩为4字节

64位平台:任意类型的指针⼤⼩为8字节

17.哪些情况下会出现野指针

指针变量未初始化、指针释放后未为置空、指针操作超越变量作⽤域

18.git流程?

同步远程仓库代码:git pull
查看当前状态:git status
提交代码到本地git缓存区:git add
推送代码到本地git库:git commit
提交本地代码到远程仓库:git push

19.linux基本命令?

pwd:用于显示用户当前所处的目录
cd:用来在不同的目录中进行切换
ls:用来列出文件或目录信息
cat:查看文件内容
mkdir:创建一个目录
mv:用于文件或目录的移动或改名
touch:建立文件或更新文件的修改日期
reboot:重新启动系统
echo:在终端输出字符串或变量提取后的值
常用解压缩命令
gzip和gunzip
gzip 文件
gunzip 文件.gz
zip和unzip指令
zip [选项] 文件.zip 要压缩的文件或者目录
unzip [选项] 文件.zip
tar指令
该指令为打包指令,最后打包的文件是x.tar.gz文件(既可以压缩,也可以解压缩).

20.c语言三大结构

选择,顺序,循环结构。选择结构常用的有:if和switch

21.结构体和联合体的区别

结构体各成员各自拥有自己的内存,各自使用互不干涉。联合所占的内存大小为空间内最大内存成员的内存大小;联合内的成员占用同一个内存空间

22.字符串常用函数

strlen函数(求字符串长度函数)
strcpy函数(字符串拷贝函数)
strcat函数(字符串拼接函数)
strcmp函数(字符串比较函数)
strstr函数

23.C语言的文件操作

定义文件指针
//FILE类型
int *p;
FILE* pf=NULL;
//fopen(int* fp)
fopen函数,文件打开
//fclose(int* fp)
fclose函数,文件关闭
字符输入函数    fgetc   所有输入流
字符输出函数    fputc   所有输出流
文本行输入函数    fgets   所有输入流
文本行输出函数    fputs   所有输出流
格式化输入函数    fscanf  所有输入流
格式化输出函数    fprintf 所有输出流
二进制输入    fread   文件
二进制输出    fwrite  文件

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值