草庐IT

嵌入式面试题1

LeeCoo- 2023-10-01 原文

1、用预处理指令交换两个参数的值

#define SWAP(a,b) { int c=a;a=b;b=c}

2、写出floatx与“零值”比较的if语句

if(x<=0.000001 && x>=-0.000001)

float型变量和“零值”比较的方法:
 
const float EPSINON = 0.000001;
 
if ((x >= - EPSINON) && (x <=EPSINON))
 
浮点型变量并不精确,其中EPSINON是允许的误差(即精度),所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则是错误的。
 EPSILON指的是浮点数可表示的最小值
因为1.0在计算机中可能存为0.999999或1.00001等,很难恰好是1.0

3、为什么说if(0==x)比if(x==0)好?

为了更好的发现因为疏忽将if(x==0)错写成if(x=0)导致的错误,因为将常量写在前,当你少写一个=时,if(0=x)程序就会报错,从而提醒你,而写成if(x=0)程序并不会报错而是当成赋值语句。

4、将地址0x8000中存放的整形变量,清除bit1。

设地址0x8000 存放的整形变量为a,清除bit1,则就是置bit1为0,则需要让 a &= 111 1111 1111 1101,而1111 1111 1111 1101 可通过(0x01<<1)再取反得到。
因此:a &=~(0x01<<1) 

 5、linux下用shell命令在当前目录下创建myfolder目录,并将此目录的权限设为拥有者可读写,群组和其他成员均可读不可写,且拥有者,群组和其他成员全都不可执行。

mkdir myfolder

chmod 644 myfolder

6、在32位机器上如下变量类型所占的内存分别是多少
short        2
char*        4
long long        8
double        8

7、简述代码编译后生成的map文件里面的内
容?

从map文件我们可以了解到:

  • 程序各区段的寻址是否正确
  • 程序各区段的size,即目前存储器的使用量
  • 程序中各个symbol的地址
  • 各个symbol在存储器中的顺序关系(这在调试时很有用)
  • 各个程序文件的存储用量

8.在数据通信过程中,设置某普通串口的波特率为115200,则此串口每秒能传输多少KB数据。写出推导过程。

波特率115200代表1秒可以传送115200 bits的数据。业内常用的格式是8位数据,无校验位,1位停止位。加上一个必须的1 bit的起始位,一字节的串口数据一共是10位。

115200 bit/10=11520 Byte

所以115200波特率一秒可以传11520字节(Byte),即11.52KB/s

9.如下代码的输出是什么?

11 11 11

10、如下代码会有什么问题? 为什么?

由于使用#if eData1 ... #endif  以至于函数void doSomething() 未定义。

11、列举出10个C语言标准库函数

<math.h> :  int abs(int x); //求整数x绝对值

                   float pow(float x, float y);//计算x的y次幂

                   float log(float x) ;//计算x的自然对数

                  float sqrt(float x) ;//计算x的平方根

<stdio.h>: 

 int printf(char *format...) 产生格式化输出的函数 

int getchar(void) 从键盘上读取一个键,并返回该键的键值

 int putchar(char c) 在屏幕上显示字符c

int scanf(char *format[,argument,...]) 执行格式化输入

int puts(char *string) 送一字符串到流中

<stdlib.h>:

void exit(int retval) 结束程序

int atoi(const char *s) 将字符串s转换为int类型

<string.h>

int strlen(char *s) 计算字符串s的长度

char *strlwr(char *s) 将字符串s转换为小写形式

char *strupr(char *s) 将字符串s转换为大写形式

12、写出你熟悉的一个嵌入式芯片的型号、性能指标及资源分布情况。

芯片型号:STM32F407ZGT6

1.ST:芯片公司的简称;

2.M:芯片Cortex-M系列;

3.32:32为处理器;

4.F:通用性的产品;

5.407:芯片系列信号;

6.Z:芯片的管教数量(144pin)

7.G:内存ROM容量(1024K字节);

8.T:芯片形状;

STM32F40xZGT6芯片的内部资源: flash:1M字节; RAM:192K字节;(重点:记住程序申请的空前不要溢出) 定时器:14个; 看门狗(WDG):2个; RTC 24位的系统滴答定时器 模数转换器(ADC):24个 数模转换器(DAC):2个 IO口:114个,51单片机24个 SPI:3个; UART:6个 USB:2个 CAN:3个 SDIO:1个 带有以太网借口

14、列举一个你在所做项目中遇到的技术问题,并描述分析问题的思路及最终解决问题的方法

答:采集信息不能上传到共享内存,或者web控制端下发的命令一直没有响应,节点没有执行对应动作

这个检测分为两部分,linux和单片机

1.linux主控层面

 用ipcs命令,检查IPC所有信息,

2.过编写测试程序,验证共享内存中的数据是否正确,

还有用测试程序往消息队列中发送数据。

相当于启动另一个匹配主控程序的进程,读取shm和msg的数据

15、已知有N个点,求由这N个点组成的多边形的外接矩形的四个顶点坐标。即完善如下函数。

void GetCoordRect(stCoord* arrCoord,int32_t nCount,stCoord_t* arrRect)
{
    int32_t XMax,XMin,YMax,YMin;

    XMax = arrCord[0].nX;
    XMin = arrCord[0].nX;
    YMax = arrCord[0].nY;
    YMin = arrCord[0].nY;
    
    for(int i=0;i<nCount;i++)
    {
          
        if(arrCord[i].x > XMax)
        {
            XMax = arrCord[i].nX;    
        }
        if(arrCord[i].x < XMin)
        {
            XMin = arrCord[i].nX;    
        }
    }

    for(int i=0;i<nCount;i++)
    {
          
        if(arrCord[i].nY > YMax)
        {
            YMax = arrCord[i].nY;    
        }
        if(arrCord[i].nY < YMin)
        {
            YMin = arrCord[i].nY;    
        }
    }

    printf("外接矩形的坐标是:(%d,%d)    (%d,%d)\n",XMin,YMin,XMax,YMin);
    printf("外接矩形的坐标是:(%d,%d)    (%d,%d)\n",XMin,YMax,XMax,YMax);

    

}

有关嵌入式面试题1的更多相关文章

  1. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  2. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  3. ruby-on-rails - 如何在 RoR 中使用 content_tag 嵌入标签? - 2

    我有这个可以为我生成一个超链接:我希望它显示在td标签中,所以我想使用这个content_tag来帮助我:"example")%>我想要我的td中的超链接,所以我有这样的东西:,:class=>"example")%>但是我收到语法错误,我该怎么办? 最佳答案 内联:'example')%>或block形式:'example')do%> 关于ruby-on-rails-如何在RoR中使用content_tag嵌入标签?,我们在StackOverflow上找到一个类似的问题:

  4. 华为OD机试 -旋转骰子(Python) | 机试题算法思路 【2023】 - 2

    最近更新的博客华为OD机试-卡片组成的最大数字(Python)|机试题算法思路华为OD机试-网上商城优惠活动(一)(Python)|机试题算法思路华为OD机试-统计匹配的二元组个数(Python)|机试题算法思路华为OD机试-找到它(Python)|机试题算法思路华为OD机试-九宫格按键输入(Python)|机试算法备考思路华为OD机试-身高排序(Python)|备考思路使用说明参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。华为OD清单查看地址:blog.csdn.net/hihell/catego

  5. ruby - Ruby 是否有任何可嵌入的键值存储? - 2

    我需要快速可靠的Ruby键值存储。有没有类似的东西?要求它完全在Ruby进程内运行,不需要任何外部进程。它可能在显式磁盘刷新的内存中。它需要具有最小的键值检索时间,写入时间可能不太好。存储的数据量不会很糟糕,大约几十万个键,每个键都有~1kb的文本值。 最佳答案 事实证明,对我来说最好的选择是使用纯Hash和Marshal将其序列化到磁盘。对于那么多的对象,YAML肯定太慢了。感谢@ian-armit加强了我对核心Ruby库的信任。 关于ruby-Ruby是否有任何可嵌入的键值存储?,我

  6. ruby - mongoid 文档 to_json 包括所有嵌入的文档,每个文档都没有 ':include' - 2

    给定一个任意的mongoid文档,我如何将其转换为JSON并包含任何嵌入式结构,而不是在我的to_json语句中特别包含这些结构。例如:#!/usr/bin/envrubyrequire'mongoid'require'json'require'pp'classDocincludeMongoid::DocumentincludeMongoid::Timestampsfield:doc_specific_info,type:Stringembeds_many:personsendclassPersonincludeMongoid::Documentfield:role,type:Stri

  7. ruby - Mongoid:将嵌入式文档转换为引用/自己的集合 - 2

    我需要将嵌入式文档转换成它自己的集合,以便它可以从另一个集合中引用。假设我有一个Parent嵌入了许多Child。我在想一些事情:Parent.all.eachdo|p|p.childs.all.eachdo|c|c.raw_attributes['parent_id']=p.idendp.save!#willsaveparentandcascadepersistallchildsontotheirowncollend这是一个选项吗?理想情况下,我会在控制台中运行它,我只会将mongoid映射从embed_*更改为has_*,因此我不需要更改其余代码或使用另一个集合作为暂存。

  8. ruby - 在 HTML 中嵌入 Ruby 代码? - 2

    在PHP中,可以这样做:">是否可以像使用或不使用Rails那样将Ruby嵌入到HTML中? 最佳答案 您将需要使用像Ruby模板(ERB)这样的模板引擎。这是一个example.Rails使用ERB,因此您可以在每个模板中轻松地执行此操作。 关于ruby-在HTML中嵌入Ruby代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3486664/

  9. 带有嵌入变量的 Ruby 字符串 - 2

    如何在yaml中存储带有嵌入变量的ruby​​字符串,但仅当我从yaml获取字符串时才插入变量值? 最佳答案 str="Hi%{name},%{msg}.Bye%{name}."#yamlit,de-yamlitbacktostringh={:name=>"John",:msg=>"thismessageisforyou"}putsstr%h#=>HiJohn,Thismessageisforyou.ByeJohn. 关于带有嵌入变量的Ruby字符串,我们在StackOverflow上找

  10. c - Ruby 解释器的嵌入 API 的文档在哪里? - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion我正在寻找有关将Ruby解释器嵌入到C或C++程序以及用于该目的的API的全面的在线文档资源。Pickaxe书中关于此的部分非常好,但我的版本指的是Ruby1.8,我对当前的ruby​​版本范围很感兴趣,即1.8.x、1.9.x和2.0,并且有很多跨该版本范围的嵌入处理之间的差异。作为引用,有问题的Ruby解释器是来自http://www.ruby-lang.org/

随机推荐