嵌入式软件工程师面试题——2025校招社招通用(二十一)

说明:

  • 面试群,群号: 228447240
  • 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
  • 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
  • 博主与大家一起学习,一起刷题,共同进步;
  • 写文不易,麻烦给个三连!!!
  • 操作系统篇

1.Linux内核的主要组成部分是什么

答案:
在这里插入图片描述

2.线程的同步和互斥的区别和联系

答案:

同步 是指按照一定顺序执行,同步里面包含了互斥;
互斥 是指一个资源只能出现一个进程进行访问,但是互斥没办法按照顺序执行,是无序的。

3.你知道Linux中的特殊进程吗

答案:
Linux下有3个特殊的进程:
idle进程(PID = 0), idle进程是由系统自动创建,运行在内核态。
init进程(PID = 1),init进程是由idle创建运行在用户空间,其父进程就是idle。
kthreadd(PID = 2),内核线程,负责内核线程的创建工作,其父进程就是idle。

4.软中断和硬中断的作用与区别

答案:
硬中断主要用于实时响应硬件设备的请求,而软中断则用于实现操作系统的功能和服务,并处理程序运行过程中的异常情况。

区别:
1.软中断是执行中断指令产生的,而硬中断是由外设引发的。
⒉硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
3.硬中断是可屏蔽的,软中断不可屏蔽。
4.硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
5.软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。

5.fork和vfork的区别

答案:

  1. fork()的子进程拷贝父进程的数据段和代码段;vfork()的子进程与父进程共享数据段。
  2. fork()的父子进程的执行次序不确定;vfork()保证子进程先运行,在调用exec或exit之前与父进程数据是共享的,在它调用exec或exit之后父进程才可能被调度运行。
  3. vfork()保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前,子进程依赖于父进程的进一步动作,则会导致死锁。
  4. 当需要改变共享数据段中变量的值,fork()需要拷贝父进程。
  5. vfork()中子进程修改全局变量会影响父进程的全局变量。

6.什么是虚拟内存

答案:

虚拟内存是一种内存管理技术,之所以有这个虚拟内存,主要是为了扩张内存,因为我们的这个代码数据什么都是存在硬盘中的,而CPU是没办法直接去拿硬盘的数据,必须借助内存,但是这个内存是有限的,所以在内存不够的时候就会把一部分这个硬盘作为虚拟内存,这样cpu就可以读取虚拟内存的数据。

7.并发编程的三个概念

答案:
原子性问题,可见性问题,有序性问题

原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。

可见性:是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

有序性:即程序执行的顺序按照代码的先后顺序执行。

8.说明什么是上下文切换?

答案:
你可以有很多角度,有进程上下文,有中断上下文。

进程上下文:一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容,当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。

中断上下文:由于触发信号,导致CPU中断当前进程,转而去执行另外的程序。那么当前进程的所有资源要保存,比如堆栈和指针。保存过后转而去执行中断处理程序,快读执行完毕返回,返回后恢复上一个进程的资源,继续执行。这就是中断的上下文。

9.一个进程可以创建多少线程,和什么有关?

答案:
理论上,一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上最多只能创建2048个线程。如果要创建多于2048的话,必须修改编译器的设置。

因此,一个进程可以创建的线程数由可用虚拟空间和线程的栈的大小共同决定,只要虚拟空间足够,那么新线程的建立就会成功。如果需要创建超过2K以上的线程,减小你线程栈的大小就可以实现了,虽然在一般情况下,你不需要那么多的线程。过多的线程将会导致大量的时间浪费在线程切换上,给程序运行效率带来负面影响。

10.外中断和异常有什么区别?

答案:

外中断 是指由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。

异常 是由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。

11.进程调度算法你了解多少?

答案:

  1. 先来先服务 first-come first-serverd(FCFS)
    非抢占式的调度算法,按照请求的顺序进行调度。
    有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。

  2. 短作业优先 shortest job first(SJF)
    非抢占式的调度算法,按估计运行时间最短的顺序进行调度。
    长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。

  3. 最短剩余时间优先 shortest remaining time next(SRTN)
    最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。
    如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。

  4. 时间片轮转
    将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。

    当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。

    时间片轮转算法的效率和时间片的大小有很大关系:
    因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。而如果时间片过长,那么实时性就不能得到保证。
    在这里插入图片描述

  5. 优先级调度
    为每个进程分配一个优先级,按优先级进行调度。
    为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。

  6. 多级反馈队列
    一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。

    多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,…。进程在第一个队列没执行完,就会被移到下一个队列。

    这种方式下,之前的进程只需要交换 7 次。每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。

    可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。
    在这里插入图片描述

12.内存交换和覆盖有什么区别?

答案:
交换技术主要是在不同进程(或作业)之间进行,而覆盖则用于同一程序或进程中。

13.动态分区分配算法有哪几种?可以分别说说吗?

答案:

在这里插入图片描述

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

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

相关文章

软件开发架构

【 一 】软件开发架构图 【 1】ATM和选课系统 三层的开发架构 前段展示台 后端逻辑层 数据处理层 【二】软件开发架构的步骤流程 需求分析:在软件开发架构设计之前,需要对应用系统进行需求分析,明确用户需求、功能模块、业务流程等内容。…

CSS Day10

10.1 2D位移 属性名:transform 属性值:translateX 水平方向的位移 相对于自身位置移动 translateY 垂直方向的位移 相对于自身位置移动 transform:translate(x,y); 位移和定位搭配使用: position:absolute; top:50%; left:50%; tr…

基于springboot+vue的校园管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

npm install 无反应 npm run serve 无反应

说明情况:其实最开始我就是发现我跟着黑马的苍穹外卖的前端day2的环境搭建做的时候,到这一步出现了问题,无论我怎么 npm install 和 npm run serve 都没有像黑马一样有很多东西进行加载,因此我换了一种方法 1.在这个文件夹下cmd …

2024年1月【ORACLE战报】| 新年第一波OCP证书来了!

相关文章: 2023年12月【考试战报】|ORACLE OCP 19C考试通过 2023年10月【考试战报】|ORACLE OCP 19C考试通过 2023.7月最新OCP考试通过|微思-ORACLE官方授权中心 OCP 19C题库稳定!https://download.csdn.net/download/XMWS_IT/88309681?ops_request_…

【昕宝爸爸小模块】深入浅出之POI是如何做大文件的写入的

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…

酷狗音乐逆向(js逆向)

免责声明:     本篇博文的初衷是分享自己学习逆向分析时的个人感悟,所涉及的内容仅供学习、交流,请勿将其用于非法用途!!!任何由此引发的法律纠纷均与作者本人无关,请自行负责!&…

使用easyexcel 导出多级表头demo

先看效果&#xff1a; 1、引入maven依赖 <!--EasyExcel --> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency> 2、实体类 package com.…

Spring框架面试题

目录 1.Spring中bean的生命周期 2.Spring中bean的循环依赖 3.SpringMVC执行流程 4.Springboot自动装配原理 5.Spring框架常见注解(Spring、Springboot、SpringMVC) 6.mybatis执行流程 7.mybatis延迟加载使用及原理 8.mybatis一级、二级缓存 1.Spring中bean的生命周期 2.…

Unity向量叉乘

叉乘计算公式 Unity中叉乘计算 Vector3.Cross(A.position, B.position); 几何意义 假设向量A和B 都在XZ平面上 向量A叉乘向量B y大于0 证明 B在A右侧 y小于0 证明 B在A左侧 示例 Vector3 C Vector3.Cross(A.position, B.position); if(C.y > 0) {print("B在A右侧&qu…

rust跟我学六:虚拟机检测

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎么检测是否在虚拟机里运行的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:…

网络攻防和CTF有什么区别和关系?

网络攻防和CTF&#xff08;Capture The Flag&#xff09;之间存在着密切的联系和区别。在理解它们的关系之前&#xff0c;我们需要先了解每个概念的含义和特点。 网络攻防是一种针对网络系统的攻击和防御技术&#xff0c;主要涉及黑客攻击和安全防护两个方面。攻击方会利用各…

基于改进凸优化算法的多机编队突防航迹规划

源自&#xff1a;系统工程与电子技术 作者&#xff1a;刘玉杰, 李樾, 韩维, 崔凯凯 “人工智能技术与咨询” 摘要 为更好地发挥多机编队在低空突防作战中的优势, 对已有的凸优化算法进行改进, 提出一种多机编队低空突防航迹规划方法。首先, 根据低空突防任务特点进行问题建…

课表排课小程序怎么制作?多少钱?

在当今的数字化时代&#xff0c;无论是购物、支付、点餐&#xff0c;还是工作、学习&#xff0c;都离不开各种各样的微信小程序。其中&#xff0c;课表排课小程序就是许多教育机构和学校必不可少的工具。那么课表排课小程序怎么制作呢&#xff1f;又需要多少钱呢&#xff1f; …

electron+vue项目使用serialport报错Cannot read property ‘indexOf‘ of undefined解决办法

描述 使用ElectronVue项目时引入serialport串口后启动时报下面错误 Cannot read property indexOf of undefined解决方法 打开vue.config.js找到pluginOptions -> electronBuilder -> externals添加serialport module.exports {pluginOptions: {electronBuilder: {e…

MBTI+大模型=甜甜的恋爱?美国新年AI裁员潮;中国大模型人才分布图;20分钟览尽NLP百年;Transformer新手入门教程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f251; GenAI 是美国「2024 年裁员潮」罪魁祸首吗&#xff1f;来看几组数据 https://www.trueup.io/layoffs 补充一份背景&#xff1a;&#…

Javaassist:编写字节码,改变Java的命运

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Javaassist&#xff1a;编写字节码&#xff0c;改变Java的命运 前言javaassist简介基本用法高级技巧实际应用与示例与其他字节码工具的对比结语 前言 Java是一门强大的编程语言&#xff0c;但有时候&…

【印象深刻的实战经历】两次全国大学生数学建模经历分享

目录 &#x1f33c;初次接触 初次参加培训 分享培训所得 比赛开始 &#x1f525;再次接触 参加校赛 机缘巧合 再次培训 比赛开始 &#x1f4d5;技巧总结 从问题的实际意义分析大体上可分为 从问题的解决方法上分析 做国赛题目的步骤 赛前准备 选题 寻找思路…

vue二次封装ant-design-vue中的Modal弹窗组件,实现拖拽,全屏两种功能,原有参数属性不变

在我们的项目的有的地方需要用弹框的拖拽&#xff0c;以及弹窗自定义全屏显示的需求&#xff0c;所以再次将二次合一&#xff0c;同时弹框里面内容自适应屏幕高度 在ant-design-vue中&#xff0c;已经实现了拖拽&#xff0c;全屏的功能&#xff0c;下面是ant官网的示例 自定义…

开发实践6_project

要求&#xff1a; ① 页面写入超链接&#xff0c;获取所有数据item&#xff0c;显示在另一个页面&#xff0c;1min内&#xff0c;即使数据有变化&#xff0c;页面内容不变&#xff0c;1min后点击超链接可获取最新信息&#xff1b; ② 使用middleware完成用户请求路径判断 &am…