2万字大厂面经:小米嵌入式面试题及参考答案(持续更新)

目录

U-Boot启动流程是什么?

BIOS是什么?BIOS的作用是什么?它是如何引导后续启动的?

BIOS定义

BIOS的作用

BIOS引导后续启动的过程

嵌入式系统的启动流程简介

驱动下半部分需要做些什么?

C语言和C++有什么区别?例如 static,malloc 和 new 的用法。

C语言和C++的主要区别

static 的用法

malloc 和 new 的用法

C++的三大特性是什么?

C++中的重写(override)、重载(overload)和隐藏(hiding)分别是什么?

单片机 STM32F103 和 STM32F429 的区别是什么?

在串口通信和中断处理中有哪些需要注意的事项?

在项目中,实时操作系统(RTOS)是如何实现的?

遇到偶发性bug时,应该如何进行调试?

Linux中有哪些用于查看系统性能的命令?

进程和线程之间有何区别?

数组和链表之间的区别是什么?它们的存储方式有何不同?如何处理数组越界问题?

为什么不在栈上分配所有内存而是选择动态分配?

对小米公司的了解有哪些?

项目过程中遇到的最大困难是什么?

如何调试项目中的bug?

Linux中有哪些类型的文件设备?硬盘属于哪种类型的设备?

驱动设备节点通常保存在哪个目录?

哪个运算符要求其操作数必须是整数?

在Linux中,如何改变文件的所属组?

STM32 GPIO的基本介绍是什么?

如何防止重复引用头文件?

保护宏方法

使用#pragma once方法

比较

C文件的预编译过程是怎样的?

C/C++程序的内存分布情况如何?常量存储在哪个区域?

C编译到执行的四个阶段是什么?

malloc 和 free 存在哪些问题?

在裸机开发中,如何避免内存碎片问题?

堆和栈有何区别?如何管理堆区?

C/C++程序中的常量存储在哪个区域?

Linux中有哪七种文件设备类型?硬盘属于哪种类型的设备?

驱动设备节点通常保存在哪个目录?

哪个运算符要求其操作数必须是整数?

在Linux中,如何改变文件的所属组?

什么是 inline 函数?

C语言与C++的主要区别有哪些?

volatile 关键字的作用是什么?

驱动层的同步机制是怎样的?

const 与 #define 有何区别?

static 关键字有哪些用途?

使用 select 函数时,其返回值代表什么含义?

两个线程能否同时访问进程中的同一资源?

socket 通信的过程是怎样的?涉及到哪些传输层协议?

对内存管理有哪些理解?

哪些函数可用于动态分配内存?

malloc 返回值需要注意什么?

在Linux中,查找文件的指令是什么?

在Git中如何提交日志?

交叉编译器的选择依据是什么?

select 模型的工作流程是什么?

如何评判代码的好坏?

vector 类型的插入效率如何?

如何有效地管理代码?

C++中的滑动窗口算法是如何工作的?

C语言中 # 的作用是什么?

宏定义函数与普通函数有何区别?

数据结构中队列和栈的区别是什么?平衡二叉树又是什么?

数组的访问方式有哪些?

I2C通信的过程及其相关知识点是什么?

SPI总线的工作原理是什么?

当操作系统中的任务具有相同的优先级时,如何进行调度?

如何定义一个指向接受两个 int 参数并返回 int 的函数的指针类型?

如何使用宏定义表示“一年”的时间常量?

如何对地址 0x1000000 进行赋值?

Linux的驱动模型是什么?

OSI七层网络模型及其对应各层的网络协议是什么?

const 和 static 关键字有何用途?

C++中 private、protected 和 public 访问修饰符的特点是什么?

中断服务程序是否可以添加自旋锁?互斥锁呢?信号量呢?

电路中的上拉电阻和下拉电阻是什么?

UART 串口通信和 I2C 通信的基本概念是什么?

GPS模块的AT指令有哪些?

ADC采样时是否有任何优化方法?


U-Boot启动流程是什么?

U-Boot (Universal Boot Loader) 是一个广泛使用的开源嵌入式系统引导加载程序。它支持多种架构,包括但不限于ARM、PowerPC、x86等。U-Boot的启动流程大致可以分为以下几个步骤:

  1. 初始化硬件

    • 复位处理器和外设。
    • 设置时钟频率。
    • 初始化内存控制器以正确配置SDRAM。
    • 初始化串口或其他调试端口以便进行调试输出。
  2. 环境变量加载

    • 加载环境变量,这些变量通常存储在非易失性存储器中,如NAND Flash或EEPROM。
    • 环境变量包含重要的启动参数,例如启动内核映像的位置、启动参数等。
  3. 内存测试

    • 执行简单的内存测试,以确保内存正常工作。
  4. 检测存储介质

    • 检测可用的存储介质,如NAND Flash、NOR Flash、SD卡等,并设置相应的驱动程序。
  5. 加载内核映像

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大模型大数据攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值