面试问题总结(2)

  • (꒪ꇴ꒪ ),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.mzph.cn/news/78623.shtml

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

相关文章

类和对象(2)

文章目录 1.类的6个默认成员函数(天选之子)2.构造函数3.析构函数3.1特性 4.拷贝构造 1.类的6个默认成员函数(天选之子) C语言中,可能中途return也可能最后return,destroy的地方很多,比较麻烦。…

数据在内存中的存储

目录 数据类型 大小端 判断大小端 练习 1 2 浮点数在内存中储存 存M 存E 取E 数据类型 整形家族: char unsigned char signed char short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed…

云原生服务无状态(Stateless)特性的实现

文章目录 为何要使用无状态服务?无状态服务的实现方法1. 会话状态外部化2. 负载均衡3. 自动伸缩4. 容器编排5. 数据存储6. 安全性 示例:使用Spring Boot实现无状态服务结论 🎉欢迎来到云计算技术应用专栏~云原生服务无状态(Statel…

BOM操作

文章目录 BOM事件页面加载调整窗口事件定时器停止计时器Location对象History对象Offsetleft获取元素偏移Offset与style的区别可视区client系列滚动scroll系列Mouseover和mousenter区别 动画原理实现动画封装给不同对象添加定时器缓动动画原理多个位置间移动 BOM事件 页面加载 …

【Tomcat服务部署及优化】

Tomcat 一、什么是Tomcat?二、Tomcat 核心组件2.1 Tomcat 组件2.3 Container组件的结构2.4 Tomcat 请求过程 三、Tomcat 部署3.1 安装JDK3.2 设置JDK环境变量3.3 安装Tomcat并用supervisor启动解压添加到supervisord服务测试能否通过supervisorctl启动 四、Tomcat的端口和主要…

普中51-蜂鸣器实验

蜂鸣器实验 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工 作电压),多谐振荡…

c++ day 6

1、 将之前定义的栈类和队列类都实现成模板类 #include <iostream>using namespace std;#define MAX 128template<typename T>class Stack { public://构造函数Stack();//析构函数~Stack();//拷贝构造函数Stack(const Stack &other);//入栈int push(T e);//出…

​LeetCode解法汇总1222. 可以攻击国王的皇后

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 在一个 8x…

Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库

目录 一、基本信息1.1 系统信息1.2 git版本[^1]1.2.1 服务器端git版本1.2.2 客户端TortoiseGit版本1.2.3 客户端Git for windows版本 二、创建git用户和群组[^2]2.1 使用groupadd创建群组2.2 创建git用户2.2.1 使用useradd创建git用户2.2.2 配置新建的git用户ssh免密访问 2.3 创…

AndroidStudio 编译输出中文乱码

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言现象如何解决 前言 Android studio 编译输出乱码 现象 如何解决 在弹出的 studio64.exe.vmoptions 文件中 , 输入如下内容 : -Dfile.encodingUTF-8上述文件配…

基于小程序的理发店预约系统

一、项目背景及简介 现在很多的地方都在使用计算机开发的各种管理系统来提高工作的效率&#xff0c;给人们带来很多的方便。计算机技术从很大的程度上解放了人们的双手&#xff0c;并扩大了人们的活动范围&#xff0c;是人们足不出户就可以通过电脑进行各种事情的管理。信息系…

真空腔体的设计要点

真空腔体是保持内部为真空状态的容器&#xff0c;真空腔体设计制作要考虑容积、材质和形状。 1、根据应用需求选择腔体形状。几种代表性的真空腔体包括垂直真空腔体、水平真空腔体、立方真空腔体和球形真空腔体。 2、根据获得真空度选择腔体材质。钛用于极高真空&#xff1b;…

qt 移植到vs后,常见问题汇总????

1.第一次在VS中编译QT项目&#xff0c;因为在MinGW中不能编译带有qtwebengine的程序&#xff0c;因为这个引擎使用的google浏览器的内核&#xff0c;据QT官方的说法&#xff1a;google不喜欢MinGW,所以QT5.5以后的版本中带有这个模块的的部分将无法编译通过&#xff0c;我们只能…

2023年五一杯数学建模A题无人机定点投放问题求解全过程论文及程序

2023年五一杯数学建模 A题 无人机定点投放问题 原题再现&#xff1a; 随着科学技术的不断发展&#xff0c;无人机在许多领域都有着广泛的应用。对于空中执行定点投放任务的无人机&#xff0c;其投放精度不仅依赖于无人机的操作技术&#xff0c;而且还与无人机执行任务时所处状…

【C++】匿名对象 ① ( 匿名对象引入 | 匿名对象简介 | 匿名对象概念 | 匿名对象作用域 - 对象创建与销毁 )

文章目录 一、匿名对象引入二、匿名对象简介1、匿名对象概念2、匿名对象作用域 - 对象创建与销毁3、代码示例 - 创建并使用匿名对象 一、匿名对象引入 匿名对象引入 : 在上一篇博客 【C】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 ) 中 , 讲到了 如…

Science adv | 转录因子SPIC连接胚胎干细胞中的细胞代谢与表观调控

代谢是生化反应网络的结果&#xff0c;这些反应吸收营养物质并对其进行处理&#xff0c;以满足细胞的需求&#xff0c;包括能量产生和生物合成。反应的中间体被用作各种表观基因组修饰酶的底物和辅助因子&#xff0c;因此代谢与表观遗传密切相关。代谢结合表观遗传涉及疾病&…

不安全的反序列化(phpjava)及漏洞复现

不安全的反序列化 1. 序列化与反序列化 A8:2017-不安全的反序列化 A08:2021-Software and Data Integrity Failures 为什么要序列化&#xff1f; 序列化&#xff0c;将对象的状态信息转换为可以存储或传输的形式的过程&#xff0c;这种形式大多为字节流、字符串、json 串。…

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

文章目录 序幕概述1. 安装 PHP2. 安装MySQL数据库3. 安装 Wordpress4. 设置您的 WordPress 数据库设置 MySQL/MariaDB创建 WordPress 数据库 5. WordPress configuration6. 将WordPress站点发布到公网安装相对URL插件修改config.php配置 7. 支持好友链接样式8. 定制主题 序幕 …

OpenCV(四十一):图像分割-分水岭法

1.分水岭方法介绍 OpenCV 提供了分水岭算法&#xff08;Watershed Algorithm&#xff09;的实现&#xff0c; 使用分水岭算法对图像进行分割&#xff0c;将图像的不同区域分割成互不干扰的区域。分水岭算法模拟了水在图像中的扩散和聚集过程&#xff0c;将标记的边界被看作是阻…

Edge官方鼠标手势

前言 日期&#xff1a;2023年8月 Edge浏览器目前已自带官方的鼠标手势功能&#xff0c;若要使用首先将浏览器更新至最新版&#xff0c;下文介绍使用方法。 官方鼠标手势 前提 更新Edge至最新版&#xff0c;并关闭其它鼠标手势扩展。 开启鼠标手势 打开Edge浏览器的设置&…