面试问题总结(2)

news2024/11/28 23:42:47
  • (꒪ꇴ꒪ ),Hello我是祐言QAQ
  • 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
  • 快上🚘,一起学习,让我们成为一个强大的攻城狮!
  • 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏

先提问题,看看你能否全部回答呢

1、指针函数和函数指针。
2、内存分布介绍。
3、堆区申请内存除了malloc还有哪些接口。
4、IIC读写时序。
5、字符设备驱动注册流程。
6、线程通信方式。
7、信号和信号量的区别。
8、中断下半段的处理方式。
9、uboot启动流程。

1. 指针函数和函数指针


        指针函数和函数指针是两种不同的概念。

        (1) 指针函数:这是一个返回指针的函数,即函数的返回值是指针。
        (2)函数指针:这是一个指向函数的指针,即指针的值是函数的地址。


2. 内存分布介绍


        在典型的计算机系统中,内存分布可以划分为以下几个部分:

        代码区(Text Segment):存储程序的指令;
        数据区(Data Segment):存储初始化的全局变量和静态变量;
        BSS区:存储未初始化的全局变量和静态变量;
        堆(Heap):动态内存分配区域,用于存储动态创建的数据结构;
        栈(Stack):用于存储局部变量和函数调用的执行信息。


3. 堆区申请内存除了malloc还有哪些接口


        除了malloc(),还可以使用以下接口申请堆区内存:

        calloc():分配指定数量和大小的连续内存,并初始化为零;
        realloc():改变已分配内存的大小。


4. IIC读写时序


        IIC(Inter-Integrated Circuit)或I2C是一种总线通信协议。它的读写时序通常包括以下步骤:

        开始条件(START):数据线(SDA)在时钟线(SCL)为高电平时从高电平变为低电平;
        地址/读写位:发送8位地址和1位读写位(读为1,写为0);
        ACK位:接收设备发送一个ACK信号;
        数据传输:发送或接收8位数据;
        停止条件(STOP):数据线在时钟线为高电平时从低电平变为高电平。


5. 字符设备驱动注册流程


        在Linux系统中,字符设备驱动的注册流程通常包括以下步骤:

        定义设备驱动结构体;
        初始化设备驱动结构体;
        注册设备驱动。


6. 线程通信方式


        线程间的通信方式主要包括:

        共享变量:线程共享同一进程的内存空间,可以通过修改和读取共享变量进行通信;
        信号量(Semaphore):可以用来同步和保护共享资源;
        消息队列:允许线程发送和接收消息;
        条件变量:可以使线程在满足某种条件时得到通知。


7. 信号和信号量的区别


        信号(Signal):是一种软件中断,用于通知进程发生了某种情况;
        信号量(Semaphore):是一种同步机制,用于保护共享资源,防止多个线程或进程同时访问。


8. 中断下半段的处理方式


        在Linux内核中,中断处理被分为两个部分:上半部(top half)和下半部(bottom half)。下半部处理方式主要有以下几种:

        软中断(Softirq):是一种静态分配的下半部机制,主要处理高优先级的异步工作;
        任务队列(Tasklet):是一种基于软中断的简化机制,它提供了两种优先级(普通和高);
        工作队列(Workqueue):是一种可睡眠的下半部机制,它允许下半部在进程上下文中运行。


9. uboot启动流程


        uboot是一种常用的嵌入式系统引导程序。其启动流程大致分为以下几个步骤:

        启动:CPU启动后执行预设的启动代码;
        初始化硬件:设置CPU和硬件设备的工作模式;
        加载uboot到RAM:通过启动设备(如NOR Flash)将uboot加载到RAM;
        执行uboot:跳转到RAM中uboot的起始地址,开始执行uboot;
        初始化uboot:uboot进行自身的初始化,包括初始化控制台、检测内存等;
        启动Linux内核:uboot加载并启动Linux内核。

        更多C/C++语言Linux系统数据结构ARM板实战相关文章,关注专栏:

   手撕C语言

            玩转linux

                    脚踢数据结构

                            系统、网络编程

                                     探索C++

                                             6818(ARM)开发板实战

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉🎉🎉感谢关注🎉🎉🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC之JSON数据返回异常处理机制

目录 前言 一、JSON数据返回 1.导入依赖 2.配置spring-mvc.xml 3.使用ResponseBody注解 4.Jackson 4.1.介绍 4.2.常用注解 二、异常处理机制 1.为什么要全局异常处理 2.异常处理思路 3.SpringMVC异常分类 4.综合案例 4.1.异常处理方式一 4.2.异常处理方式二 4.3…

《PostgreSQL事务管理深入解析》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

分类预测 | Matlab实现GRNN-Adaboost多特征分类预测

分类预测 | Matlab实现GRNN-Adaboost多特征分类预测 目录 分类预测 | Matlab实现GRNN-Adaboost多特征分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 1.Matlab实现GRNN-Adaboost多特征分类预测(Matlab完整程序和数据) 2.多特征输入…

【Redis】Redis作为缓存

【Redis】Redis常见面试题(2) 文章目录 【Redis】Redis常见面试题(2)1. 缓存2. Redis作为缓存2.1 缓存雪崩2.2 缓存穿透2.3 缓存击穿2.4 缓存雪崩、缓存穿透、缓存击穿的区别2.5 缓存预热2.6 如何保证缓存和MySQL双写一致 【Redis…

阿里云产品试用系列-云服务器 ECS

阿里云为个人开发者或者企业用户提供云产品的免费试用,本文主要描述ECS云服务器试用体验。 如上所示,在阿里云官方网站中,可使用云服务器ECS构建应用服务。 如上所示,在阿里云控制台中,可以显示成功定制免费使用阿里云…

锂离子电池和电池组安全使用指南

声明 本文是学习GB-T 42729-2023 锂离子电池和电池组安全使用指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了锂离子电池和电池组使用过程中的安全指导和建议,给出了锂离子电池和电池组制 造厂商向用户提供可能…

【ShardingSphere】单实例模式创建分片表、广播表、单表

文章目录 1、简介2、ShardingSphere-Proxy 默认行为2.1 安装2.2 启动 3、设计测试环境3.1 架构3.2 数据映射关系 4、 准备工作4.1 配置 server.yaml4.2 配置 config-logic_db.yaml4.3 创建数据源所配置的物理库4.3.1 ds_0、ds_14.3.2 ds_2 4.4 启动4.5 (可选&#x…

4基于pytorch的蚁群算法求解TSP(旅行商问题),访问一座城市并回到最初位置的最佳路径,解决组合中的NP问题。程序已调通,替换自己的数据可以直接运行。

基于pytorch的蚁群算法求解TSP(旅行商问题),访问一座城市并回到最初位置的最佳路径,解决组合中的NP问题。程序已调通,替换自己的数据可以直接运行。 4pytorchTSP路径优化 (xiaohongs4pytorchTSP路径优化 (xiaohongshu.com)4pytorchTSP路径优化…

ARM如何利用PMU的Cycle Counter(时钟周期)来计算出CPU的时钟频率

本章将学习如何利用ARM PMU的Cycle Counter,来计算出CPU的时钟周期,从而计算出CPU的时钟频率。在介绍计算方法前,有必要先介绍下什么是时钟周期、机器周期以及指令周期。 如何计算出CPU的时钟频率 一,时钟周期,机器周…

AP5191 DC-DC降压恒流IC LED智能控制电源芯片 线性 PWM调光

产品描述 AP5191是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于4.5-150V输入的高精度降压LED恒流驱动芯片。输出最大功率150W,最大电流6A。AP5191可实现线性调光和PWM调光,线性调光脚有效电压范围0.55-2.6V.AP5191 工作频率可以…

86 # express 基本实现

koa 和 express 的区别 koa 内部原理使用 es6 来编写的(promise async await),express 是使用 es5 来编写的,内部是基于回调函数来实现express 内置了很多中间件(功能会比 koa 强大一些,内部集成了路由&a…

【应用笔记】Sub-1G系列产品CW32W031单片机CAD应用参考

一、功能介绍 CW32W031 的射频部分支持 CAD 中断。从 Deepsleep 进入 STB3,开启 CAD 功能并进入 RX 模式后, CW32W031 会检测信道中是否会有 ChirpIOT ™信号 , 如果存在将 CAD-IRQ 置高,MCU 内核可以通过一定的时间来检测 CAD-IRQ 信号是否…

DenseNet网络详解及Pytorch实现

DenseNet网络详解及Pytorch实现 DenseNet网络简介 DenseNet(Densely Connected Convolutional Networks)是由Gao Huang等研究人员于2017年提出的一种深度神经网络架构。DenseNet的主要思想是在网络的每一层之间建立密集的连接,这种密集连接…

[NLP] LLM---扩充词表LLama2-构建中文tokenization

使用SentencePiece的除了从0开始训练大模型的土豪和大公司外,大部分应该都是使用其为当前开源的大模型扩充词表,比如为LLama扩充通用中文词表(通用中文词表,或者 垂直领域词表)。那这部分工作有没有意义呢?…

Flutter 中的单元测试:从工作流基础到复杂场景

对 Flutter 的兴趣空前高涨——而且早就应该出现了。 Google 的开源 SDK 与 Android、iOS、macOS、Web、Windows 和 Linux 兼容。单个 Flutter 代码库支持所有这些。单元测试有助于交付一致且可靠的 Flutter 应用程序,通过在组装之前先发制人地提高代码质量来确保不…

【多尺度增强网络:超分】

Remote Sensing Image Super-Resolution via Multiscale Enhancement Network (基于多尺度增强网络的遥感图像超分辨率) 近年来,遥感图像因其特殊的价值而引起了人们的广泛关注。然而,卫星遥感图像通常是低分辨率的,…

案例实践丨基于SkyWalking全链路监控的微服务系统性能调优实践篇

1背景 随着开源社区和云计算的快速推进,云原生微服务作为新型应用系统的核心架构,得到了越来越广泛的应用。根据Gartner对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。” 微服务之父&…

markdown学习笔记

markdown学习笔记 1.文字&#xff08;依靠HTML&#xff09; 1.1文字缩进-空格转义符 单字符空&#xff1a;&emsp; 半字符空&#xff1a;&ensp;1.2文字对齐 「居中&#xff1a;」<center> 居中 </center> or <p align"center"> 居中 …

Java线程池中哪些事??

需要提前把线程准备好&#xff01;&#xff01;创建线程不是直接从系统申请&#xff0c;而是从池子里拿&#xff01; 等到线程不用了&#xff0c;也是还给池子&#xff01;&#xff01; 池子的目的是为了提高效率 线程的创建虽然比进程轻量&#xff0c;但是在频繁创建的情况下…

【计算机网络】图解应用层协议

图解应用层协议 1.应用层2.远程登录2.1 Telnet2.2 SSH 3.文件传输3.1 FTP3.2 TFTP 4.电子邮件4.1 通信架构4.2 邮件地址4.3 SMTP 协议4.4 POP3 协议4.5 IMAP 协议 5.WWW5.1 URI5.2 HTML5.3 HTTP 6.网络管理应用6.1 DHCP 协议6.2 DNS 协议 1.应用层 我们前面介绍过 TCP / IP 模…