当前位置: 首页 > news >正文

面试知识点总结篇三

一、arm中断流程和函数

  1. ARM 中断流程
  • 中断触发
  • 保存上下文
  • 中断向量表
  • 执行ISR
    - 清除中断标志
  • 恢复上下文
  • 返回中断

二、STM32任务间通信有哪些方式

消息队列、 信号量、共享内存、任务通知

三、uboot内存没驱动之前是怎么操作的

  1. 硬件初始化
  2. 内存检测
  3. 设置内存映射
  4. 控制台初始化
  5. 启动加载器

四、用户态调用内核态怎么调用

  1. 用户态调用内核态主要通过系统调用(syscall)实现
  2. 具体步骤
1. 系统调用接口(例如文件操作)
2. 设置系统调用参数(参数通常包括:系统调用号(识别要调用的内核服务)
相关的输入参数(如文件描述符、缓冲区地址等))
3. 触发上下文切换
4. 内核态处理
5. 返回用户态

五、设备树的作用

  1. 设备树是一种数据结构,主要用于在系统启动时向操作系统描述硬件设备的信息。这种机制特别适合在那些不能自动探测硬件设备的系统。
  2. 主要作用
  • 硬件描述 :包括处理器、总线、存储设备、外设等。这包括设备的类型、配置参数、内存映射、中断号和其他必要的硬件信息。
  • 系统启动和配置:在系统引导时,操作系统内核会解析设备树文件(通常为 .dtb,即 Device Tree Blob),以获取硬件配置和结构信息。这样做允许操作系统理解如何与已安装的硬件进行交互,尤其是在系统中包含多个不同的硬件组件时。
  • 操作系统的移植性:使用设备树可以提高操作系统的可移植性。开发者可以为不同的硬件平台使用相同的内核代码,通过更改设备树文件来适配不同的硬件。这样,操作系统内核无需为每个硬件平台编写特定的硬件抽象层代码。
  • 动态配置:设备树使得动态配置成为可能,允许系统根据设备树中描述的信息在运行时调整硬件配置。这对于可以热插拔的设备特别有用。
  • 简化驱动开发:通过使用设备树,驱动开发人员可以更容易地编写与硬件无关的驱动代码。驱动程序可以读取设备树中的信息,而不是硬编码设备的参数,这使得同一驱动能够支持多种略有不同的硬件设备。

六、sizeof用法

  1. sizeof是一个编译时运算符,用于计算变量或类型所占的字节数。

七、int a=5, b=7; int c = a+++b;

  1. 这里c = a+++b;被解析为c = a++ + b;。首先a的值增加1,然后将增加前的a(5)与b(7)相加,所以c为12,a变为6。

八、printf, strcpy, memcpy用法和区别

  1. printf用于格式化输出。
  2. strcpy用于复制字符串。
  3. memcpy用于内存复制。
  • 区别:strcpy只适用于字符串,结束于第一个空字符;memcpy可以复制任意数据,包括含有空字符的数据,需要指定复制的字节数。

九、extern "C"用法

  • 用于C++代码中,用以告诉编译器按照C的链接方式处理所标记的代码,主要用于使得C++代码能够链接到C编写的库

十、全局变量和局部变量可以重名吗

  • 可以重名,局部变量在其作用域内会隐藏同名的全局变量。

十一、const的用法

  1. 用于声明常量,即不可变的值。这有助于提高程序安全性和可读性

十二、C++中STL之间的关系

  1. STL(标准模板库)提供了一系列模板化的数据结构和算法,包括容器(如vector, map)、迭代器、函数对象、算法等,它们之间高度集成,支持高效的数据存储和操作。

十三、信号与槽要注意些什么

  1. 在Qt中,信号和槽用于对象间的通信。注意信号不能被阻塞,槽可以是任意的成员函数,不必声明为slot。
  2. 保证连接正确且不产生无限递归或循环调用。

十四、Qt中多线程需要注意些什么

  1. 使用QThread时,尽量不要直接继承QThread,而是继承QObject并将其移动到QThread。
  2. 避免跨线程直接操作GUI元素。

十五、在主线程中初始化函数,怎么在子线程中调用

  1. 在主线程创建和初始化对象,通过信号和槽安全地在子线程中调用。

十六、Qt中UDP/TCP流程

  1. TCP:使用QTcpSocket,建立连接,进行读写操作。
  2. UDP:使用QUdpSocket,进行绑定后可以直接发送和接收数据报。

十七、 U-Boot是什么

  1. U-Boot(Universal Boot Loader)是一个开源的启动加载程序,广泛用于嵌入式设备。
  2. 它负责在设备启动时初始化硬件(如内存控制器、时钟、网络等),并加载并执行操作系统。
  3. U-Boot 支持多种操作系统,如 Linux、Android 等,并且提供了灵活的命令行界面用于开发和调试。

十八、Linux驱动中字符设备驱动模型

  1. Linux内核支持三种主要类型的设备驱动:字符、块和网络。字符设备驱动允许用户对设备进行字节流式访问
  2. 字符设备驱动:管理那些按字符进行数据传输的设备,例如串口、打印机等。它们通常实现了一组标准操作:open、close、read、write 和 ioctl。

十九、 主设备号和次设备号

  1. 主设备号:用来标识驱动程序的。
  2. 次设备号:用来标识由相同驱动程序控制的不同设备。
  • 它们共同构成设备号,用于区分系统中的设备。

二十、 总线设备

  1. 总线用于连接各种硬件组件,允许数据在这些组件间传输。常见的总线设备包括 PCI、USB、I2C、SPI 等。

二十一、驱动加载到内核的方法

  1. 静态链接:在编译内核时将驱动编译进内核镜像。
  2. 模块加载:在系统运行时动态加载驱动模块。

二十二、字符型驱动设备怎么创建

  1. 通过编写字符设备驱动并在内核中注册设备号和设备操作集合。
  2. 使用register_chrdev()或alloc_chrdev_region()注册设备号,然后使用cdev_add()添加字符设备结构。

二十三、联合体介绍

  1. 联合体(union)允许在相同的内存位置存储不同的数据类型,成员共享内存。

二十四、DMA和中断的应用和区别

  1. 在需要高速数据传输且CPU负载较重的项目中使用,如音视频处理或网络通信。
  2. 区别
    • DMA:直接内存访问,用于高速数据传输,无需CPU介入。
    • 中断:响应外部或内部事件的机制,中断当前CPU操作。

相关文章:

面试知识点总结篇三

一、arm中断流程和函数 ARM 中断流程 中断触发保存上下文中断向量表执行ISR - 清除中断标志恢复上下文返回中断 二、STM32任务间通信有哪些方式 消息队列、 信号量、共享内存、任务通知 三、uboot内存没驱动之前是怎么操作的 硬件初始化内存检测设置内存映射控制台初始化…...

数据加密标准(DES)详解:原理、步骤及Python实现

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...

每日OJ_牛客_OR59字符串中找出连续最长的数字串_双指针_C++_Java

目录 牛客_OR59字符串中找出连续最长的数字串 题目解析 C代码1 C代码2 C代码3 Java代码 牛客_OR59字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 题目解析 双指针: 遍历整个字符串,遇到数字的时候,用双…...

虚幻引擎UE5如何云渲染,教程来了

​步骤一:获取云渲染权限 访问渲染101官网,使用云渲码6666进行注册。 下载并安装渲染客户端。 步骤二:设置渲染环境 确保云渲染环境与您的本地环境一致,避免出错。 步骤三:任务提交 完成环境配置后,解析…...

使用Python实现图形学光照和着色的光线追踪算法

目录 使用Python实现图形学光照和着色的光线追踪算法引言1. 光线追踪算法概述2. Python实现光线追踪算法2.1 向量类2.2 光源类2.3 材质类2.4 物体类2.5 光线追踪器类2.6 使用示例 3. 实例分析4. 光线追踪算法的优缺点4.1 优点4.2 缺点 5. 改进方向6. 应用场景结论 使用Python实…...

通过openAI的Chat Completions API实现一个支持追问的ChatGPT功能集成

文章目录 前言准备工作代码实现思路完整代码实现备注前言 本文介绍如何通过openAI的Chat Completions API实现一个支持追问的后台功能,追问打个比方,就是当你问了一句”窗前明月光的下一句是什么?“之后,想再往下问就可以直接问”再下一句呢?“,模型也能基于上下文理解你…...

8,STM32CubeMX配置SPI工程(读取norflash的ID)

1,前言 单片机型号:STM32F407 编程环境 :STM32CubeMX Keil v5 硬件连接 :SPI1,CS/SS--->PB14 注:本工程在1,STM32CubeMX工程基础(配置Debug、时钟树)基础上完…...

【MATLAB源码-第178期】基于matlab的8PSK调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 在通信系统中,频率偏移是一种常见的问题,它会导致接收到的信号频率与发送信号的频率不完全匹配,进而影响通信质量。在调制技术中,QPSK(Quadrature Phase Shift Keyi…...

AIGC学习笔记—minimind详解+训练+推理

前言 这个开源项目是带我的一个导师,推荐我看的,记录一下整个过程,总结一下收获。这个项目的slogan是“大道至简”,确实很简。作者说是这个项目为了帮助初学者快速入门大语言模型(LLM),通过从零…...

计算机毕业设计 在线项目管理与任务分配系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

小程序用户截屏事件

原生小程序: wx.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值,范围 0~1,0 最暗,1 最亮 uniapp: uni.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值&a…...

HashMap为什么线程不安全?如何实现线程安全

HashMap线程不安全的原因主要可以从以下几个方面解释: 1. 数据覆盖 假设两个线程同时执行put操作,并且它们操作的键产生相同的哈希码,导致它们应该被插入到同一个桶中。以下是可能发生的情况: 线程A读取桶位置为空,准…...

Python爬虫之requests模块(一)

Python爬虫之requests模块(一) 学完urllib之后对爬虫应该有一定的了解了,随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块? requests其实就是py原生的一个基于网络请求的模块,模拟…...

当微服务中调度返回大数据量时如何处理

FeignClient 和 Dubbo 可能不是最佳选择。以下是一些适合处理大数据量的技术和方法: 消息队列 简介:消息队列是一种异步通信方式,用于在不同系统之间传递消息。常见的消息队列包括 RabbitMQ、Kafka、ActiveMQ 等。 优点:消息队列…...

【项目经验分享】深度学习点云算法毕业设计项目案例定制

以下是深度学习与点云算法相关的毕业设计项目案例,涵盖了点云数据的分类、分割、重建、配准、目标检测等多个领域,适用于智能驾驶、机器人导航、3D建模等多个应用场景: 案例截图: 基于PointNet的3D点云分类与分割PointNet在大规…...

【Redis 源码】2项目结构说明

1 文件目录结构 deps 这个目录主要包含 Redis 所依赖的第三方代码库。 Jemalloc,内存分配器,默认情况下选择该内存分配器来代替 Linux 系统的 libc-malloc,libc-malloc 性能不高,且碎片化严重。hiredis,这是官方 C 语…...

RP2040 C SDK GPIO和IRQ 唤醒功能使用

RP2040 C SDK GPIO和中断功能使用 SIO介绍 手册27页: The Single-cycle IO block (SIO) contains several peripherals that require low-latency, deterministic access from the processors. It is accessed via each processor’s IOPORT: this is an auxiliary…...

@Transactional导致数据库连接数不够

在Spring中进行事务管理非常简单,只需要在方法上加上注解Transactional,Spring就可以自动帮我们进行事务的开启、提交、回滚操作。甚至很多人心里已经将Spring事务Transactional划上了等号,只要有数据库相关操作就直接给方法加上Transactiona…...

python3中的string 和bytes有什么区别

在Python中,string(字符串)和bytes(字节序列)是两种不同的数据类型,分别用于表示文本和二进制数据。它们的主要区别在于存储的数据类型、编码方式以及使用场景。 1. 存储数据类型 string (字符串,str):用来表示文本数据。string是一个Unicode字符串,其中的每个字符是…...

C~排序算法

在C/C中,有多种排序算法可供选择,每种算法都有其特定的应用场景和特点。下面介绍几种常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,并给出相应的示例代码和解释。 冒泡排序(Bubble …...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

二维数组 行列混淆区分 js

二维数组定义 行 row&#xff1a;是“横着的一整行” 列 column&#xff1a;是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...