面试(六)

一. 根据 int foo[8]的定义,int foo[8]={0,1,2,3,4,5,6,7};*((int*)((char*)&foo+sizeof(int)))的值是?

&foo:这是数组foo的地址,其类型是int(*)[8] (指向包含8个int的数组的指针)

[char*]&foo:里我们将&foo的类型转换为char*.这是因为char类型通常被用作字节操作的基础类型,其大小为1字节(在大多数系统上)。

(char*)&foo + sizeof(int):这里我们将char*指针向前移动了sizeof(int)个字节。这相当于跳过了数组foo的第一个元素(因为sizeof(int)通常等于一个整数的大小)。

(int*)((char*)&foo + sizeof(int)):现在我们将上述得到的char*指针再次转换为int*类型。

*((int*)((char*)&foo + sizeof(int))):最后,我们解引用这个int*指针,即访问数组中第二个元素的值。

二. RT-Thread 支持邮箱和消息队列

在RT-Thread中,邮箱的长度为4字节。。而消息队列(Message Queue)则能够接收不固定长度的消息,消息的长度可以根据实际应用需求设定。

RT-Thread的邮箱和消息队列设计时就考虑到了线程安全和中断上下文的使用

RT-Thread的邮箱和消息队列都支持多种等待策略,包括按线程优先级等待和按先进先出(FIFO)方式获取消息。

三. bin文件或hex文件包含哪些部分

包含RO段和RW段,RO段中保存了Code和RO-data,RW段中保存了RW-data

四. 在RT-Thread中,主线程和空闲线程属于系统线程,用户编写的打印线程和处理中断服务的线程属于用户线程

五. 在Linux中,request请求和bio的关系?

通常一个 bio 对应一个 I/O 请求。I/O 调度算法可将连续的 bio 合并成一个请求,每个 request 里面会有多个 bio。所以,一个请求可以包含多个 bio。所以请求和bio的关系是一对多.

六. 在Linux中,块设备的结构?

包括三部分,段:由若干个块组成,是Linux内存管理机制中一个内存页或者内存页的一部分。

块:由Linux制定对内核或文件系统等数据处理的基本单位。通常由1个或多个扇区组成

扇区:块设备的基本单位,通常在512字节到32768字节之间,默认512字节

七. RISC和CISC的区别

RISC:精简指令集,执行的是等长精简指令集,可以同时执行多条指令。

CISC:复杂指令集,处理的是不等长指令集,执行单一指令集需要比较多的处理工作

八. 说说对MMU和TLB的理解

MMU是计算机系统的一种硬件设备,主要用于处理内存管理的任务,负责将程序中的虚拟地址映射到物理内存中的实际地址,以及管理内存访问权限。

TLB是MMU中的一种高速缓存,用于加速虚拟地址到物理地址的转换过程

九. volatile关键字作用?

1. 防止编译器过度优化

#include <stdio.h>int global_var = 0;void increment() {// 没有使用volatile,编译器可能优化掉这个操作global_var++;
}int main() {for (int i = 0; i < 1000000; i++) {increment();}printf("Final value of global_var: %d\n", global_var);return 0;
}

比如这一段代码,当没加volatile修饰变量的时候,编译器可能不会真正执行global_var++的操作,因为从编译器的角度来看,global_var的值在整个循环中都没有变化的必要,如果我们要运行验证的话,需要使用编译器的优化级别(如GCC的-O2-O3

十. 宏函数和内联函数的区别

宏函数由预处理器在编译时进行文本替换,而内联函数是由编译器在编译时将函数体代码插入到调用处。

内联函数提供类型检查,而宏函数不提供。

内联函数具有正常的作用域规则,而宏函数则没有作用域限制

十一. 虚拟地址怎么转换成物理地址

虚拟地址转换成线性地址,通过MMU的页表将线性地址转换为物理地址

十二. 简述TCP三次握手的过程

第一次握手:客户端创建传输控制块,然后向服务器发出连接请求报文(将标志位syn置1,随机产生一个序列号seq=x),客户端接着进入SYN_SENT状态

第二次握手服务器收到请求报文,回复确认报文(SYN和ACK置1,ack=x+1,随机产生序列号seq=y)

第三次握手:检查ack是否等于x+1,ACK是否等于1,是则发送确认报文,将ACK置1,ack=y+1,序列号seq=x+1

十三. 简述TCP四次挥手的过程

第一次挥手:客户端发送FIN报文

第二次挥手:服务器确认FIN报文

第三次挥手:服务器发送FIN报文

第四次挥手:客户端确认FIN报文

十四. 为什么三次握手的时候ack=seq+1

告诉发送方收到了发出的同步信息

十五. 引用和指针区别

引用时变量的别名,指针是指向一段地址的变量

十六. 动态库和静态库的区别

1.扩展名不一样,静态库的扩展名一般为“.a”或“.lib”;动态库的扩展名一般为“.so”或“.dll”

2.链接时间不一样,静态库是在编译时链接,而动态库是在运行时链接

3.速度不一样,静态库的速度更快

十七. 异步IO和同步IO区别?

异步IO在调用一个功能时,得不到结果就去做下一件事,有结果后回调通知给调用者

同步IO在调用一个功能时,这个功能没有结束就一直等待它结束,必须做完一件事后再做下一件事,没有结果该调用就不会返回

十八. linux的进程状态?

七大详细状态

1. 运行态(正在运行或在运行队列中等待)

2. 就绪态

3. 中断睡眠状态(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

4. 不可中断睡眠状态(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

5. 僵尸态(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

6. 暂停态

7. 终止态

五大最基本状态:创建、就绪、运行、阻塞、终止。
 

十九. 常见的操作系统进程调度策略有哪些?

时间片轮转,高优先级优先,先来先服务,短作业优先

二十. 逻辑地址、线性地址、物理地址、总线地址、虚拟地址的区别

逻辑地址:与内存段相关偏移的部分

线性地址=逻辑地址+基地址

物理地址=总线地址

虚拟地址=由内存管理单元(MMU)虚拟映射出来的地址

二十一. 死锁的必要条件是什么?

互斥、请求和保持条件、不可剥夺、环形链

二十二. 什么是优先级翻转,如何避免优先级翻转?

由于共享资源规则,导致高优先级线程被低优先级线程阻塞。解决办法:1、优先级天花板:将申请某资源的线程的优先级提升到最高;2、优先级继承:将占用资源的进程的优先级提升,与其他申请进程的优先级相同,等释放后再恢复。
 

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

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

相关文章

人工智能生成音乐,从 Illiac Suite 到 EMI 到 Magenta,和人工智能创作流行音乐的六个标签

人工智能(Artificial intelligence,AI)在各个行业掀起了巨大的浪潮,音乐界也不例外。随着科技的不断发展,AI生成的音乐成为了一个激动人心且创新的领域,吸引了众多艺术家、研究人员和科技公司的关注。 其实,AI生成音乐的历史可以追溯到20世纪50年代,当时计算机科学家开…

SpringBoot接入JPA连接数据库H2或MySQL例子

一&#xff0c;JPA相关的常用注解和对象 Entity&#xff0c;用于实体类声明语句之前&#xff0c;‌指出该Java类为实体类&#xff0c;‌将映射到指定的数据库表&#xff1b;Table&#xff0c;当实体类与其映射的数据库表名不同名时需要使用。‌该标注与Entity标注并列使用&…

轻量化YOLOv7系列:结合G-GhostNet | 适配GPU,华为诺亚提出G-Ghost方案升级GhostNet

轻量化YOLOv7系列&#xff1a;结合G-GhostNet | 适配GPU&#xff0c;华为诺亚提出G-Ghost方案升级GhostNet 需要修改的代码models/GGhostRegNet.py代码 创建yaml文件测试是否创建成功 本文提供了改进 YOLOv7注意力系列包含不同的注意力机制以及多种加入方式&#xff0c;在本文…

pytest:4种方法实现 - 重复执行用例 - 展示迭代次数

简介&#xff1a;在软件测试中&#xff0c;我们经常需要重复执行测试用例&#xff0c;以确保代码的稳定性和可靠性。在本文中&#xff0c;我们将介绍四种方法来实现重复执行测试用例&#xff0c;并显示当前迭代次数和剩余执行次数。这些方法将帮助你更好地追踪测试执行过程&…

Linux 常用命令分类及示例

目录 文件系统操作进程管理网络工具系统信息文本处理包管理和软件安装 文件系统操作 1. ls 用途: 列出目录内容示例: ls -l 显示当前目录下的文件列表&#xff0c;并包含详细信息。 2. cd 用途: 改变工作目录示例: cd /etc 进入 /etc 目录。 3. mkdir 用途: 创建目录示例…

maven复习用

文章目录 一、Maven工具的使用1.1 Maven的介绍1.2 简化依赖的导入1.3 GAVP1.4 创建maven普通工程和Web工程1.5 maven依赖的传递 一、Maven工具的使用 1.1 Maven的介绍 Maven是什么&#xff1f; 软件 为什么服务&#xff1f; java项目 主要功能&#xff1f; 项目构建管理、依赖…

k8s部署kafka集群

k8s部署kafka集群 kafka&#xff08;Kafka with KRaft&#xff09; mkdir -p ~/kafka-ymlkubectl create ns kafkacat > ~/kafka-yml/kafka.yml << EOF apiVersion: v1 kind: Service metadata:name: kafka-headlessnamespace: kafkalabels:app: kafka spec:type: C…

【Java题解】以二进制加法的方式来计算两个内容为二进制数字的字符串相加的结果

&#x1f389;欢迎大家收看&#xff0c;请多多支持&#x1f339; &#x1f970;关注小哇&#xff0c;和我一起成长&#x1f680;个人主页&#x1f680; &#x1f451;目录 分析&#xff1a;&#x1f680; 数字层面分析⭐ 字符串层面分析⭐ 代码及运行结果分析:&#x1f6…

生活实用英语口语“拆迁”用英文怎么说?柯桥成人学英语到蓝天广场

● 1. “拆迁”英语怎么说&#xff1f; ● 01. 其实国外也有拆迁 但国外的拆迁&#xff0c;只管拆 不管安置&#xff0c;你爱去哪去哪 英文可以说 housing removal 02. 但我们中国的“拆迁” 既管“拆”也管“迁” &#xff08;还是中国人幸福~&#xff09; 英文可以说 housin…

仓颉语言 -- 泛型

1、泛型概述 在仓颉编程语言中&#xff0c;泛型指的是参数化类型&#xff0c;参数化类型是一个在声明时未知并且需要在使用时指定的类型。类型声明与函数声明可以是泛型的。最为常见的例子就是 Array<T>、Set<T> 等容器类型。以数组类型为例&#xff0c;当使用数组…

网络安全基础知识及安全意识培训(73页可编辑PPT)

引言&#xff1a;在当今数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要议题。随着互联网的普及和技术的飞速发展&#xff0c;网络威胁日益复杂多变&#xff0c;从简单的病毒传播到高级持续性威胁&#xff08;APT&#xff09;、勒索软件攻击、数据泄露等&#x…

【Python】Facebook开源时间序列数据预测模型Prophet

文章目录 一、简介二、项目的文件解读三、Prophet类主要方法和参数3.1 主要参数3.2 主要方法 四、用法示例 一、简介 Prophet 是由 Facebook 开发的一个开源工具&#xff0c;用于时间序列数据的预测。它特别适用于处理具有强季节性和趋势的时间序列数据&#xff0c;并且对节假…

09-软件易用性

易用性是用户体验的一个重要方面&#xff0c;网站建设者一般会沉溺于自己的思维习惯&#xff0c;而造成用户使用的不畅。易用性不仅是专业UI/UE人员需要研究&#xff0c;对于网站建设其他岗位的人也应该了解一定的方法去检验和提升网站的易用性。通常对易用性有如下定义: 易理解…

【iOS】isMemberOfClassisKindOfClass

目录 前言class方法isMemberOfClass和isKindOfClass实例方法分析类方法分析 实例验证总结 前言 认识这两个方法之前&#xff0c;首先要了解isa指向流程和继承链&#xff08;【iOS】类对象的结构分析&#xff09;关系&#xff0c;以便理解得更透彻 上经典图&#xff1a; 要注意…

AM62x和rk3568的异同点

AM62x 和 RK3568 是两款不同的处理器&#xff0c;分别来自 Texas Instruments&#xff08;TI&#xff09;和 Rockchip。它们在设计目标、架构、性能和应用领域等方面存在一些异同。以下是这两款处理器的对比&#xff1a; 1. 基本架构 AM62x&#xff1a; 架构&#xff1a;基于…

与大数据相关的 Python 第三方库和工具

Python 在大数据领域有着广泛的应用&#xff0c;以下是一些与大数据相关的 Python 第三方库和工具&#xff1a; 1. **Pandas**&#xff1a;Pandas 是 Python 中最常用的数据处理和分析库之一&#xff0c;提供了高效的数据结构和数据分析工具&#xff0c;可以进行数据清洗、转换…

机器学习数学基础(1)--线性回归与逻辑回归

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 1 线性回归和逻辑回归与机器学习的关系 线性回归属于机器学习 – 监督学习 – 回归 – 线性回归&#xff0c; 逻辑…

Maven概述

目录 1.Maven简介 2.Maven开发环境搭建 2.1下载Maven服务器 2.2安装&#xff0c;配置Maven 1.配置本地仓库地址 2.配置阿里云镜像地址 2.3在idea中配置maven 2.4在idea中创建maven项目 3.pom.xml配置 1.项目基本信息 2.依赖信息 3.构建信息 4.Maven命令 5.打包Jav…

企业微信报错,api forbidden 错误码 48002

业务场景是这边后端页面点同步就去企微接口拉取客户数据&#xff0c;然后报错如下。 后端抓包返回的json如下 {“errcode”:48002,“follow_user”:[],“errmsg”:“api forbidden, hint: [1721869790252850672734303], from ip: 203.88.203.216, more info at https://open.w…

数据结构(链表)

&#x1f30f;个人博客主页&#xff1a;心.c 前言&#xff1a; 最近练习算法回去学了链表&#xff0c;收获挺大的&#xff0c;大概内容整理了一下&#xff0c;语言是用c写的&#xff0c;所以在这里分享给大家&#xff0c;希望大家可以有所收获 &#x1f525;&#x1f525;&…