面试(二)

目录

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  文件

相关推荐

  1. 面试

    2024-03-23 17:14:05       13 阅读
  2. redis 面试题(

    2024-03-23 17:14:05       26 阅读
  3. docker面试问题

    2024-03-23 17:14:05       35 阅读
  4. Vue 面试题(

    2024-03-23 17:14:05       22 阅读
  5. 面试题库

    2024-03-23 17:14:05       17 阅读
  6. JVM面试题(

    2024-03-23 17:14:05       15 阅读
  7. vue面试

    2024-03-23 17:14:05       8 阅读
  8. Redis 面试热点(

    2024-03-23 17:14:05       5 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 17:14:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 17:14:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 17:14:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 17:14:05       18 阅读

热门阅读

  1. odoo中,使用paramiko库ssh连接Linux

    2024-03-23 17:14:05       14 阅读
  2. AWS ECS安全更新及自动化应对方案

    2024-03-23 17:14:05       17 阅读
  3. Android 封装的工具类

    2024-03-23 17:14:05       19 阅读
  4. Oracle修改Number类型精度报错:ORA-01440

    2024-03-23 17:14:05       15 阅读