嵌入式常见笔试题总结(4)
1:用C语言实现大小端的测试
Int CheckCpu()
{
union
{
int a;
char b;
}c;
c.a=1;
if(c.b==1)
printf(“小端”);
else printf(“大端”);
}
2:volatile的作用有哪些?
Volatile第一变量相当于告诉编译器这个变量的值会随时发生变化,每次使用之前都要去内存里从新读取它的值,并不要随意针对它做优化,主要用在:
1:一个中断子程序中会访问到的非自动变量;
2:多线程应用中被几个线程共享的变量;
3:并行设备的硬件寄存器。
3:C语言中static关键字的作用有哪些?
1:在函数体中,一个被声明为静态的变量在这个变量在调用过程中维持其值不变;
2:在模块内(但在函数体外),一个被声明为静态的变量,可以被这个模块内的所用函数使用,但不能被模块外的函数使用,它是一个本地的全局变量;
3:在模块内,一个被声明为静态变量的函数,智能被这个模块内的函数调用;
4:static全局变量与局部变量的区别:static全局变量只能被初始化一次,防止其他单元文件中被引用;
5:static局部变量与局部变量的区别:static局部变量只能被初始化一次,下一次依据上一次结果的值;
6:static函数与普通函数的区别:static在内存中只用一份,普通函数在每一次调用中维持一份拷贝。
4:请问下面三种变量的区别:
Int const *p : 指向常整型的指针;
Int *const p; 指向整型的常指针;
Int *const *p: 指向常整型的常指针;
5:在ARM系统中,在函数调用的时候,参数是通过哪种方式传递的。
当参数小于等于4的时候是通过r0~r3来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。
6:中断与异常有何区别.
异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。
7:用预处理指令#define表示一年中有多少秒
#define SECONDS_PER_YEAR (60*60*24*365)UL
注意后面必须加UL,表示计算的结构是常整型。
8:简述SPI,UART,I2C三种传输方式。
SPI:高速同步串行口,首发独立,可同步进行
SPI接口主要应用在EEPROM,Flash,实时时钟,A/D转化器,数字信号处理,是一种全双工同步通讯总线,该接口一般使用四条线:串行时钟线(sck),主出从入线,主入从出线,低电平有效地的从机选择线。
I2C协议:是单片机与其他芯片进行通讯的协议:1:只要求两条总线线路,一条是串行时钟线,一条是串行数据线; 2:通过软件设定地址 3:是一个多主机总线,如果两个或更多主机同时初始化数据传送可通过冲突检测和仲裁防止数据破坏; 4:I2C总线传输的是数据的总高位
UART:主要是由一个modem(调制解调器),可以将模拟信号量转化成数字信号量。
9:中断不能返回一个值,中断不能传递参数。
10:嵌入式系统总要求用户对变量或者寄存器进行位操作,给定一个整型变量a:
define BIT3 (oxo1<<3)
static int a ;
void set_bit3(void)
{
a|=BIT3;
}
void clear_bit3(void)
{
a&=~BIT3;
}
作为一个嵌入式程序员,这种程序是小菜一碟,至所以给出这个程序,是想规范大家写程序方法,这里主要是用到了一个宏定义:BIT3 这样的话就可以增加程序的可读性
同时移植性也增强。
11:嵌入式系统中经常要求程序去访问某特定内存的特点,在某工程中,要求设定一个绝对地址0x6799的整型变量的值为0xaa66.
Int *ptr;
ptr=(int*)0x67a9;
*ptr=aa66
12:引用和指针有什么区别?
1:应用必须初始化,指针不必;
2:引用处画化后不能改变,指针可以被改变;
3:不存在指向空值的引用,但存在指向空值的指针;
13:全局变量与局部变量在内存中是否有区别,是什么区别?
全局变量存储在静态数据库,局部变量存储在堆栈;
14:写出float,bool,int类型与零的比较,假设变量为X:
Int : if(x==0)
Float: if(x>0.0000001&&x<0.0000001)
Bool: if(x==false)
15:Intertnet采用哪种网络协议,该协议的主要层次结构?
TCP/IP协议
应用层/传输层/网络层/数字链路层/物理层。
16:IP地址有两部分组成:网络号和主机号
17:程序的局部变量存储在(栈)中,全局变量存储于(静态存储区),动态申请数据存储于(堆中);
18:编写一个字符串复制函数:strcpy(const char *str,const char *str1)
void strcpy(const *char str,const chat *str1)
{
if(*str1==’\0’) return;
char *sp1,*sp2;
sp1= str;
sp2=str1;
while(*sp2!=’\0’)
{
*sp1=sp2;
sp1++;
sp2++;
}
}
19:编写一个函数实现字符串翻转 void rechange(char *str)
void rechange(char *str)
{
Int len;
char t;
len=strlen(str);
for(int i=0;len/2;i++)
{
t=str[i];
str[i]=str[len-i-1];
str[len-i-1]=t;
}
}
20:编写一个函数实现字符串比较 int strcmp(char *str1,char *str2),相等返回1,不相等返回0:
int strcmp(char *str1,char *str2)
{
if(*str1==‘\0’||*str2==’\0’) return;
while(*str1!=’\0’&&*str2!=’\0’&&*str1==*str2)
{
str1++;
str2++;
}
if(*str1==*str2)
return 1;
else return 0;
}
}
21:进程和线程的区别:
1:调度:线程作为调度和分配的基本单元,进程作为拥有资源的基本单位;
2:并发性:不仅进程可以并发执行,同一进程内的线程也可以并发执行。
3:拥有资源:进程是拥有资源的基本独立单元,线程不拥有资源,但可以访问进程内的资源;
4:在创建或撤销线程时,由于系统都要为之分配和回收内存资源,导致系统的开销明显大于创建或撤销线程时的开销。
嵌入式常见笔试题总结(4)相关推荐
- 嵌入式常见笔试题总结(2)
预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 2 ...
- 嵌入式常见笔试题总结
预处理器(Preprocessor) 1. 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 ...
- 嵌入式常见笔试题总结(6)
一.常识理论题 1. 简述嵌入式操作系统有哪些,你用过哪几种,简述其特点.优势及劣势?(5分) 2. 请描述控制及提高嵌入式软件质量有哪些办法,在开发过程中怎么才能保证嵌入式软件 的可靠 ...
- 嵌入式常见笔试题总结(5)
1. 如何在C中初始化一个字符数组. 这个问题看似很简单,但是我们要将最简单的问题用最严谨的态度来对待.关键的地方:初始化.字符型.数组.最简单的方法是char array[];.这个问题看似解决了, ...
- 嵌入式常见笔试题总结(3)
1:设float a=2, b=4, c=3:,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是 A.(a+b)*c/2 B.(1/2)*(a+b)*c C.(a+b)*c*1/2 ...
- 嵌入式linux工程师 考试,嵌入式Linux工程师常见笔试题.doc
嵌入式Linux工程师常见笔试题.doc 这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的. 从 ...
- 大厂常见笔试题 滑动窗口内数的和
大厂常见笔试题,我以为出一个很难的题,结果出了一个基础题, 给你一个大小为n的整型数组和一个大小为k的滑动窗口,将滑动窗口从头移到尾,输出从开始到结束每一个时刻滑动窗口内的数的和. 样例 对于数组 [ ...
- java字符串笔试题_五道Java常见笔试题及答案汇总
1.String和StringBuffer的区别? 答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数 ...
- mysql @ $_mysql常见笔试题
一.Mysql常见笔试题 1.Mysql 中有哪几种锁? (1)表级锁:开销小,加锁快.不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低. (2)行级锁:开销大,加锁慢.会出现死锁,锁定粒度小, ...
最新文章
- 图表插件Highcharts的动态化赋值,实现图表数据的动态化设置显示
- python教程输入_输入/输出
- 尾调用优化 java_基于Java8函数式编程求一个List的全部子集|尾调用优化解决递归性能问题...
- 操作系统_第三章_处理器管理_多道程序设计
- VS_MFC:压缩文件存储空间
- 2021年高处安装、维护、拆除模拟考试题库及高处安装、维护、拆除作业考试题库
- SpringCloud之蓝绿部署
- win10的开机启动文件夹
- 如何将图片存进SQL数据库中以及从数据库读取照片(解决办法)
- 计算机应用专业需要6g显卡吗,4G、6G、8G显卡的显存容量有什么用?来看科普
- HTML“计算机输出”标签 codekbdsampttvarpre
- Matlab 读取图片并将其按指定尺寸保存为mat格式
- 项目总估值从70亿到150多亿,成功运营首期的腾讯AI加速器正招募第二期
- 【转载】间谍新高度:间谍组织​Turla利用卫星通信隐藏CC服务器
- b. 《计算机软件保护条例》没有规定软件著作权人的改编权,自然人创作的享有著作权的计算机软件的权利保护期限为()。...
- Html字母变大的代码,css鼠标选中字体变大 div css鼠标悬停超链接的文字变大
- Graph convolution network with similarity awareness and adaptive calibration...MIA,2020.
- 《C语言程序设计 谭浩强 》
- 工作“不可能三角”,建议年后想跳槽的打工人看一下
- 文件包含getshell