• 嵌入式面试经验


    12:17:08  2020-02-15

    面试过三四家嵌入式的企业,经验不算特别丰富,但把个人面试的真实经历写在这里供大家参考。

    总的经验是,研究能力越强,研发部门比重越大的企业,面试难度会越大,这也是常理,越大的公司就要越高的标准和要求:一家私企(做汽车电子控制器的),主要问个人经历;一家电子器械公司(1000-5000人规模)问的较多,技术面试问了40分钟技术问题,5分钟聊待遇 ,下面就把一部分遇到的问题和回答(严格、标准、完整的回答请百度)罗列一下,有新的会继续更新:

    1、在使用Keil编译完程序的时候,左下角的Code, RO, RW, ZI分别代表什么?

    答:

    • Code:代码的大小
    • RO:常量所占空间
    • RW:程序中已经初始化的变量所占空间
    • ZI:未初始化的static和全局变量以及堆栈所占的空间
    • 补充:Flash占用大小=Code+RO+RW,SRAM占用大小=RW+ZI

    2、stm32选型的原则?

    答:兼顾性能和经济性:(1)、考虑芯片的性能是否够用:看芯片有哪些功能模块,比如几路ADC,几路PWM,几个串口,看是否满足项目要求,再看有的片上资源参数是否满足要求,例如ADC、PWM的模式,RAM和ROM大小等;(2)、从经济性考虑:资源和性能不要浪费,不要杀鸡用牛刀,保证效率的前提下降低成本,同时考虑体积大小。

    3、写中断的时候需要注意哪些问题?

    答:中断里不要放延时和消耗资源多的代码;注意中断的刷新频率要适当,若太高会浪费资源,还有可能造成阻塞等等

    4、微机原理学过吗?还记得学了哪些东西?(略)

    5、自动控制原理里,收敛的原理,PID各参数的意义以及数字PID的参数整定?

    答:主要答到反馈控制和误差,解释了P,I,D的参数意义,P:比例控制,I:会影响稳定性和滞后性能,D:提前控制,但可能产生超调等等

    6、stm32下载程序到哪里了?

    答:片内ROM(一般单片机内部已集成了ROM)。(结合单片机的启动过程和运行过程,重点了解内存管理和各芯片的区别,包括RAM, ROM, SRAM, EEPROM, FLASH等的区别 )

    答:

    名称 RAM SRAM ROM FLASH EEPROM
      Random Access Memory随机访问存储器   Read Only Memory程序存储器 闪存(是EEPROM的一种)  
    主要功能 存储短时间内使用的程序、变量等数据(比如中间变量、开发者不关心的数据等)   主要来存储程序和不需要变动的数据(如音乐、视频、照片等) 主要来存储永久保存的数据  
    特点 断电后数据不存在   断电后数据仍存在 断电后数据仍存在且更快,更小  

    ROM, FLASH和RAM的区别 对于RAM, ROM以及FLASH的区别:

    简单地说,在计算机中,RAM 、ROM都是数据存储器。RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆。ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反。ROM又分一次性固化、光擦除和电擦除重写两种类型。 在应用中,常规上ROM是用来存储固化程序的,RAM是用来存放数据的。由于FLASH ROM比普通的ROM读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。

    参考:DRAM、SDRAM和SRAM的区别

    7、volatile:参考:单片机的C51 的volatile

    8、对嵌入式操作系统的理解?

    答:说了有FreeRTOS, RTOS, RT-Thread, ucos系列等,还有linux,根据实时性要求和操作性要求选择合适的系统。

    9、知道哪些数据结构的基本概念?(本科没上过数据结构,就说了一些自己空余时候了解的)

    10、插值的时候,队列快还是链表快?

    11、IIC通信速率和使用IIC时要注意的地方?

    给出常见有线通信方式和无线通信方式的对比:

    (1):有线:

    (2):无线:

     

    12、函数abs、fabs、fabsf 有什么区别?

    abs、fabs、fabsf 三个函数都是用来求一个数的绝对值,区别如下:

    1)int abs(int a);                     // 处理int类型的取绝对值

    2)double fabs(double a);     //处理double类型的取绝对值

    3)float fabsf(float a);            //处理float类型的取绝对值

    相关参考:https://blog.csdn.net/dwx1005526886/article/details/81915191

  • 相关阅读:
    mysql索引
    struts升级2.3.12到2.5.13
    springboot使用servlet
    springboot拦截器
    开发复制内容
    Linux常用命令
    Eclipse中文语言包安装和设置中文
    eclipse编写代码所遇到的问题
    permission denied (publickey)问题的解决和向github添加ssh key
    工具
  • 原文地址:https://www.cnblogs.com/CCWangsj/p/12312422.html
Copyright © 2020-2023  润新知