单片机常见经典面试题目总结

根据五年行业经验编写了从项目准备->简历和面试准备->公司选择注意事项 等等找工作必看内容都在合集里面,订阅后就可以观看所有内容:>https://www.nowcoder.com/creation/manager/columnDetail/0EpoRr

1. 单片机IO口开漏输出和推挽输出的区别

  • **开漏输出:**只能输出低电平,要输出高电平需通过上拉电阻实现,类似于三极管的集电极输出。
  • **推挽输出:**可输出低电平和高电平,能够直接驱动功耗较小的数字器件,具有较低的导通损耗和高效率,且提高了电路的负载能力和开关速度。

拓展:STM32的8种GPIO模式

  • 浮空输入:I/O电平不确定,由外部决定。
  • 上拉输入:悬空时电平保持高电平。
  • 下拉输入:悬空时电平保持低电平。
  • 模拟输入:输入模拟信号到片上外设模块。
  • 开漏输出:需要外部上拉或下拉电阻来决定电平。
  • 开漏复用输出:外设模块控制电平。
  • 推挽输出:由P-MOS和N-MOS控制电平。

2. 单片机定时器的作用和优势

  • **作用:**计数、延时、输入捕获、输出比较(如输出PWM)、产生中断等。
  • **优势:**无需CPU参与,精度高。

3. 同步通信和异步通信的区别

  • **同步通信:**发送和接收需要相同的时钟频率,按帧发送数据。
  • **异步通信:**无需保持相同时钟,起始位和结束位用于判断数据到达。

4. 什么是中断?

当CPU正在执行程序时,因外部或内部事件使得CPU暂停当前工作,去执行中断服务程序。执行完毕后,恢复现场并继续执行原程序。

中断过程:

  1. 保护现场,将PC地址压栈。
  2. 执行中断服务程序。
  3. 恢复现场,将PC从栈中取回。
  4. 继续执行被中断的指令。

5. SPI、IIC、UART接口的区别及数据收发方式

  • **SPI(全双工,四线):**速度快,但无流控和应答机制。通过MISO、MOSI、SCLK、CS线进行通信。
  • **IIC(半双工,两线):**简单,支持多主控,速度较慢。通过SDA和SCL线通信。
  • **UART(全双工,两线):**无需时钟,传输距离远,有检错机制。通过RX和TX进行通信。

6. 无线通信技术简介

  • **BLE(蓝牙):**近距离通信,频段为2.4GHz ISM频段,适用于短距离、低功耗场景。
  • **WIFI:**基于802.11b协议,频率为2.4GHz,速度可达11Mbps,覆盖范围约100米。
  • **NFC:**短距离通信,频率为13.56MHz,用于双向识别和连接。
  • **Zigbee:**低速、低功耗无线通信技术,支持复杂拓扑结构,使用2.4GHz频段。

7. MQTT、CoAP、HTTP三种协议的区别

  • **MQTT:**基于TCP协议,常用于物联网消息发布和订阅。
  • **CoAP:**基于UDP协议,适合低资源设备和低功耗网络。
  • **HTTP:**基于TCP协议,主要用于Web通信,传输开销较大。

8. TCP的三次握手和四次挥手过程

  • 三次握手:
    1. 客户端发送SYN请求,服务器返回SYN+ACK。
    2. 客户端发送确认包,建立连接。
  • 四次挥手:
    1. 客户端发送FIN请求,服务器ACK。
    2. 服务器处理完后发送FIN,客户端ACK,连接断开。

9. C语言:找到数组中最小值

int get_min(int* array, int n) {
    int min = array[0];
    for (int i = 1; i < n; i++) {
        if (array[i] < min) {
            min = array[i];
        }
    }
    return min;
}

10. 摩拜单车生产的多线程机制

工序A每5分钟生产一辆单车,工序B每1分钟检测一辆,检测失败需返回工序A重新生产。多线程机制可使用生产者-消费者模型最大化产能。

11. 关于指针的定义

  • 指向指针的指针,指向一个整型数: int **a;
  • 有10个指向整型数的指针数组: int *a[10];
  • 指向有10个整型数数组的指针: int (*a)[10];
#嵌入式#

嵌入式就业指南 零基础开始-备战-&gt;题目-&gt;技巧

全部评论
2 回复 分享
发布于 2024-10-12 14:39 河北
友友们,有什么想看的内容,欢迎评论留言,您的点赞是我创作的不竭动力。
1 回复 分享
发布于 2024-10-12 14:44 河北

相关推荐

📍面试公司:摩尔线程🕐面试时间:9.1💻面试岗位:系统软件工程师❓面试问题:一面1.介绍项目,项目拷打2.linux系统中断硬件中断和软件中断,中断的全流程,中断的上下文,中断下半部分的机制(API),配合说明抢占3.linux系统的v4l2子系统的具体应用使用流程,具体的底层驱动框架(pipeline,media拓扑,三层结构都问了)4.设备树的解析时机和解析过程5.设备驱动的匹配流程(BUS&nbsp;match),然后到驱动probe的详细流程,驱动的匹配按优先级的方式6.设备驱动如何适配多soc7.yolov8模型的底层原理和开发中遇到的具体问题8.MQTT协议的具体实现,和TCP/UDP区别,详细讲解网络驱动流程(sk_buff,dma,中断)9.线程池的实现和与手动创建的区别,如何实现线程池共享资源的访问10.mutex和spinlock的区别,和使用场景,然后中断能不能使用spinlock11.项目中算法的原理详细说明(自己的项目)12.设计模式用了哪些(单例模式、策略模式、工厂模式全部细节都问了)13.如何部署yolov8到板子上的,然后如何进行量化和裁剪,如何提高识别速度14.对国内、国外板卡的认识15.对AI+嵌入式的理解16.反问:具体业务🙌面试感想:一共面试了1小时40分钟,鏖战所有的八股和linux驱动和内核开发,面试到1小时30分钟的时候,不用写八股了,面试官很满意,然后直接反问,同值通知一周内二面
查看16道真题和解析
点赞 评论 收藏
分享
评论
8
39
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务