您的位置:首页 > 文旅 > 旅游 > 嵌入式软件面试记录(5)

嵌入式软件面试记录(5)

2024/10/10 4:08:59 来源:https://blog.csdn.net/2201_75342985/article/details/139861130  浏览:    关键词:嵌入式软件面试记录(5)

1.FreeRTOS使用,是自己移植的吗,移植过程中设置了多少个任务?

答:是自己移植的,从官网下载的包根据手册移植的。

主要涉及以下几个任务:

  • 主任务:负责系统初始化和创建其他任务。
  • 创建队列任务
  • 点灯任务:点亮LED任务。
  • 通信任务:处理网络通信或串口通信。
  • 用户界面任务:更新显示和处理用户输入。
  • 数据处理任务:执行数据分析或控制算法。

2.如何进入中断?

答:①先理解中断向量表

②然后进行中断初始化

③使能全局中断

④发生中断事件,触发中断

3.指针和引用的区别?

答:①指针有固定的空间大小,在32位系统中是4字节,引用是原始变量的一个别名,大小是原变量的大小。指针需要解引用才可以对指向的变量进行操作。而对引用的修改会直接改变引用所指向的变量。

②指针可以有const指针,但没有const引1用。 指针有多级指针,引用不存在多级引用。在使用指针过程中,可以改变其指向的对象,但引用一旦被初始化就只能是一个对象的引用,不能改变。

③引1用声明时必须初始化为另一变量。指针声明和初始化可以分开,允许只声明不初始化,使用时再指向具体变量,指针可以指向空值,但不存在指向空值的引用,引用必须初始化为具体变量的别名

4.普通局部变量、普通全局变量、静态局部变量、静态全局变量的区别?

答:普通局部变量:存在栈区,如果不初始化,变量内容随机,只在定义所在的复合语句中有效,复合语句结束,变量空间释放;

普通全局变量:存放在全局区,若不初始话值为0,进程结束空间才会被释放,能被当前源文件或其他源文件使用,只是其他源文件使用的时候,记得使用 extern 修饰;
静态局部变量:存在全局区、不初始化内容为0、整个进程结束空间才被释放,只能在定义所在的复合语句中有效;

静态全局变量:存在全局区、不初始化内容为0、整个进程结束空间被释放,只能被当前源文件使用。

特性指针     引用
声明符号*&
初始化可选必须
重新绑定可以不可以
空值可以为 NULL不可以
内存管理需要手动管理由绑定变量生命周期管理
算术运算可以不可以

 

5.TCP和UDP区别?

特性TCPUDP
连接性面向连接无连接
可靠性可靠传输,确保数据完整和顺序不可靠传输,数据可能丢失、重复或乱序
数据传输方式面向流面向报文
速度较慢,提供可靠性保证较快,不保证可靠性
流量控制和拥塞控制有流量控制和拥塞控制无流量控制和拥塞控制
头部开销较大(20 字节)较小(8 字节)
使用场景文件传输、电子邮件、Web 浏览视频会议、在线游戏、直播、DNS 查询

 

6.堆和栈的区别?

特性堆(Heap)栈(Stack)
内存分配动态分布静态分配或自动分配
管理方式程序员显式管理编译器自动管理
速度较慢非常快
内存碎片容易产生不容易产生
生命周期程序员控制作用域决定
大小通常较大,受系统可用内存限制通常较小,受操作系统预设限制
适用场景动态数据结构(链表、树、图等)函数调用、局部变量、临时变量
内存泄漏容易发生不容易发生

7.链表和数组的区别?

答:①数组内存连续,链表内存不连续。

②数组访问速度比链表快。
③链表增加删除操作比数组快。

8.请说一下内存的栈区、静态区、堆区区别?

答:①栈区:存放局部变量,在执行函数的时候,局部变量的存储单元会在栈上创建,函数执行完自动释放。
②静态区:主要存放 static 静态变量、全局变量、常量,这些内存在编译的时候就已经分配好了内存,声明周期是整个程序的开始到结束。
③堆区:堆区由程序员手动申请与释放,程序在运行的时候使用内存分配函数(如 malloc)来申请,使用完后再使用(如 free)来释放堆中被程序申请使用的内存在程序主动释放前将一直有效。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com