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

说明:

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

1.什么是进程?什么是线程?

答案:
进程资源分配的基本单位,他是程序执行时的一个实例,在程序运行是创建。

线程程序执行的最小单位,是进程的一个执行流,一个进程里包含多个线程。

2.进程、线程、协程的区别?

答案:
协程是微线程,在子程序内部执行,可在子程序内部中断,转而执行别的子程序,在适当的时候再返回来接着执行。

进程和线程区别:(开销问题、通信、线程(进程)之间影响)

  • 进程是资源最小分配单位
  • 线程是最小的执行单位,也是处理器调度的基本单位
  • 进程拥有自己的独立地址空间,每启动一个进程,系统就会分配地址空间,建立数据表来维护代码段,数据段,堆栈段,进程的全局变量是不共用的,这种开销是非常大,而线程是共享进程的数据,使用相同的地址空间,因此,CPU切换一个线程的开销远小于进程的切换
  • 线程之间的通信更加方便,同一进程下的线程共享全局变量、静态数据、而进程间的通信需要以通信的方式IPC进行,但是线程的缺点是同步和互斥是编写多线程的难点,多进程的优点是一个进程死掉不会对另个进程有影响,而多线程只要一个线程死掉整个进程就会死掉
  • 每个线程拥有自己的栈段和寄存器组

线程和协程的区别:

  • 协程执行效率极高:协程直接操作栈基本没有内核切换的开销,所以上下文切换非常快
  • 协程不需要多线程的锁机制,因为多个线程从属一个线程,不存在同时写冲突

其他区别:

  • —个线程可以多个协程,一个进程也可以单独拥有多个协程
  • 线程进程都是同步机制,而协程则是异步
  • 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态。
  • 线程是抢占式,而协程是非抢占式的,所以需要用户自己释放使用权来切换到其他协程,因此同
  • 协程并不是取代线程,而且抽象于线程之上,线程是被分割的CPU资源,协程是组织好的代码流程,协程需要线程来承载运行,线程是协程的资源,但协程不会直接使用线程,协程直接利用的是执行器(Interceptor),执行器可以关联任意线程或线程池,可以使当前线程,UI线程,或新建新程
  • 线程是协程的资源。协程通过Interceptor来间接使用线程这个资源

3.何时使用多进程?何时使用多线程?(考虑优缺点)

答案:
对资源保护和管理要求高,不限制开销和效率使用多进程
要求效率高,切换频繁,使用多线程

4.创建进程的方式?

答案:

  • 系统初始化,像后台进程,守护进程
  • 一个进程开启另个进程fork()
  • 用户的交互式请求

子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符,父进程与子进程并不共享这些存储空间,这是子进程对父进程相应部分存储空间的完全复制,执行fork()之后,每个进程均可修改各自的栈数据以及堆段中的变量,而并不影响另一个进程
如果是vfork的话就会有影响

5.进程有几种状态?

答案:
有五种状态:创建、就绪、运行、阻塞、终止
在linux系统中,进程的生命周期是从执行到终止
在这里插入图片描述

6.进程间通信方式有哪些?

答案:
1.管道(pipe)
2.信号量(semophore)
3.消息队列(messge queue)
4.信号(signal)
5.共享内存(Shared memory)
6.套接字(socket)

管道:分为有名和无名管道,无名管道只能有血缘关系的进程间通信,是半双工通信,而有名管道允许无血缘进程之间通信
信号量:是个计数器,用来控制多个进程对共享资源的访问,用于进程间的同步和互斥
消息队列:消息的链接表,放在内核中,消息队列独立于发送和接收的进程,进程终止后,消息队列并不会消失,消息队列可以实现消息的随机查询,可以按照消息的类型读取
信号:用于通知接收进程某个事件已经发生。主要作为进程间以及同一进程的不同线程间的同步手段
共享内存:共享内存就是映射一段能被其他进程访问的内存,这段共享内存有一个进程创建,但多个进程都可以访问,共享内存是最快的IPC,它往往配合其他通信机制使用,如:信号量来实现同步和通信
原理:开辟一个物理内存空间,各个进程物理地址映射到自己的虚拟地址空间,通过虚拟地址就可以直接访问,进而实现数据共享,共享内存是最快的通信方式,因为少了数据的拷贝

 //1.开辟共享内存shmid=shmget(key,size,IPC_CREAT);//2.映射到进程虚拟地址addr=shmat(shmid,NULL,0);//3.操作数据memcpy(addr,buf,sizeof(buf));//4.解除映射int ret=shmdt(addr);

套接字:它可用于不同机器之间的进程通信

注意:信号量、信号、消息队列可以用来同步

7.进程间通信的选择

答案:
管道通信主要是应用在进程间互发短小、频率很高的消息
共享内存主要是在接进程间共享数据庞大、读写频繁的数据(因为是把物理地址映射到进程)
其他考虑socket

8.什么是僵尸进程、孤儿进程、守护进程?

答案:
僵尸进程:一个进程使用fork出一个子进程,如果子进程退出,但是父进程没有使用 wait或者waitpid函数回收子进程的资源,那么该进程就是僵尸进程

孤儿进程:是指父进程异常退出,而子进程还没退出,那么子进程就会被1号进程(init)收养

守护进程:是指后台进程,有意把父进程先结束,然后被1号进程收养

9.僵尸进程有什么危害?

答案:
僵尸进程的进程号并不会被释放,但是系统的进程号是有限的,如果出现大量僵尸进程就会导致系统无进程号可用就无法产生新进程
如何杀死僵尸进程:
可以通过杀死其父进程来结束僵尸进程

10.线程间通信方法有哪些?

答案:
临界区、互斥量、信号量、事件、条件变量、读写锁

临界区:每个线程访问临界资源的那段代码叫临界区,每次只允许一个线程进入临界区,进入后其他线程无法进入
互斥量:采用互斥对象机制,只有拥有互斥对象的线程才可以访问
信号量:计数器,允许多个线程同时访问统一资源
条件变量:通过条件变量通知操作的方式保持多线程同步
读写锁:读写锁和互斥量类似,但互斥量要么是锁住状态,要么就是不加锁状态。读写锁一次只允许一个线程写,但允许一次多个线程读,这样效率就比互斥锁要高

11.什么是内核线程和用户线程?

答案:
用户线程是由用户进行管理,用户线程的创建、调度、同步和销毁全又库函数在用户空间完成,不需要内核的帮助,这种线程开销是比较小的

内核线程由操作系统创建和销毁

12.如何实现守护进程?

答案:

  1. 创建子进程,终止父进程
  2. 调用setsid创建一个新会话
  3. 将当前目录更改为根目录
  4. 重设文件权限掩码,文件权限掩码是指屏蔽掉文件权限的对应位
  5. 关闭不再需要的文件描述符

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

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

相关文章

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图的圆切图,Kotlin(4)

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图的圆切图,Kotlin(4) 这篇 Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin&am…

电阻表示方法和电路应用

电阻 电阻的表示方法 直标法 直标法是将电阻器的类别及主要技术参数的数值直接标注在电阻器表面上 通常用3位阿拉伯数字来标注片状电阻的阻值,其中第1位数代表阻值的第1位有效数;第2位数代表阻值的第二位有效数字;第3位数代表阻值倍率&…

腾讯云服务器多少钱?2024年腾讯云服务器报价明细表

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

小迪安全第二天

文章目录 一、Web应用,架构搭建二、web应用环境架构类三、web应用安全漏洞分类总结 一、Web应用,架构搭建 #网站搭建前置知识 域名,子域名,dns,http/https,证书等 二、web应用环境架构类 理解不同web应用组成角色功能架构 开发…

探索未来餐饮:构建创新连锁餐饮系统的技术之旅

随着数字化时代的发展,连锁餐饮系统的设计和开发不再仅仅关乎订单处理,更是一场充满技术创新的冒险。在本文中,我们将深入研究连锁餐饮系统的技术实现,带你探索未来餐饮业的数字化美食之旅。 1. 构建强大的后端服务 在设计连锁…

【网络取证篇】Windows终端无法使用ping命令解决方法

【网络取证篇】Windows终端无法使用ping命令解决方法 以Ping命令为例,最近遇到ping命令无法使用的情况,很多情况都是操作系统"环境变量"被改变或没有正确配置导致—【蘇小沐】 目录 1、实验环境(一)无法ping命令 &a…

中霖教育:2024年注册会计师报名缴费时间

注册会计师考试的报考人数逐年攀升,对于想要报考注会的考生来说,了解报名时间做好备考规划十分重要。 2024年注会报名时间已经确定 报名时间:4月8日8:00—4月30日20:00。 交费时间:6月13日—6月28日8:00-20:00。 温馨提示&…

stable diffusion使用相关

IP Adapter,我愿称之它为SD垫图 IP Adapter是腾讯lab发布的一个新的Stable Diffusion适配器,它的作用是将你输入的图像作为图像提示词,本质上就像MJ的垫图。 IP Adapter比reference的效果要好,而且会快很多,适配于各种…

gogs git创建仓库步骤

目录 引言创建仓库clone 仓库推送代码 引言 Gogs 是一款类似GitHub的开源文件/代码管理系统(基于Git),Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。 创建仓库 git中的组织可以把它看成是相关仓库的集合&#xff0c…

阳光抑郁症测试

大部分人对抑郁症的理解,就是每天无精打采,死气沉沉,可实际上,还有一种阳光抑郁症,完全不是这个样子。这种抑郁症的人,做事情非常有活力,魅力十足,给人感觉十分有自信,但…

网络基础学习(3):交换机

1.交换机结构 (1)网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡。 如果在计算机上安装多个网卡,并让网卡接收所有网络包,再安装具备交换机功能的软件&#xff0…

第十二章 Java内存模型与线程(二)

文章目录 12.4 Java与线程12.4.1 线程的实现12.4.2 Java线程调度12.4.3 状态转换 12.4 Java与线程 12.4.1 线程的实现 实现线程主要有三种方式:使用内核线程实现(1: 1 实现),使用用户线程实现(1&#xff…

入门实战丨Python小游戏经典案例

文章目录 写在前面判断与循环小游戏猜数游戏龙的世界 写在后面 写在前面 本期内容:两个个简单的Python小游戏入门案例。 实验需求:python 实验目标:掌握基本的判断与循环语句。 判断与循环 判断与循环是编程中非常重要的两个概念&#x…

【JaveWeb教程】(21) MySQL数据库开发之多表设计:一对多、一对一、多对多的表关系 详细代码示例讲解

目录 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案例 2. 多表设计 关于单表的操作(单表的设计、单表的增删改查)我们就已经学习完了。接下来我们就要来学习多表的操作,首先来学习多表的设计。 项目开发中,在进行数据库…

Vue高级(二)

3.搭建vuex环境 创建文件:src/store/index.js //引入Vue核心库import Vue from vue//引入Vueximport Vuex from vuex//应用Vuex插件Vue.use(Vuex)//准备actions对象——响应组件中用户的动作const actions {}//准备mutations对象——修改state中的数据const mutat…

NetCore部署微服务(三)

接上文,服务端部署完成之后,同样我们也需要修改一下客户端代码 Blocking Queries 1.1 服务发现 在客户端代码中使用Nuget安装consul包 修改配置文件,我们首先需要把consul的请求地址配置在配置文件中 修改control方法 using Consul; usin…

java+vue基于Spring Boot的渔船出海及海货统计系统

该渔船出海及海货统计系统采用B/S架构、前后端分离进行设计,并采用java语言以及springboot框架进行开发。该系统主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、渔船信息、渔船航班、海货价格、渔船海货、非法举报、渔船黑名单等功能。该系统操…

2024年腾讯云服务器多少钱1个月?

2024年腾讯云服务器多少钱1个月?5元一个月,62元一年,更多腾讯云服务器精准报价。腾讯云服务器租用优惠价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,…

记录一次git merge后发现有些文件不对的问题,排查过程

分支进行merge(A merge到B)之后,发现string.xml中有些字段的值没有merge过来,一开始还以为自己是自己merge错误,检查了一遍自己的merge操作没有问题。 那为啥没有merge过来呢?有一种可能是,merg…

java通过okhttp方式实现https请求的工具类(绕过证书验证)

目录 一、引入依赖包二、okhttp方式实现的https请求工具类2.1、跳过证书配置类2.2、okhttp方式的 https工具类 三、测试类 一、引入依赖包 引入相关依赖包 <!--okhttp依赖包--> <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>…