【2024秋招】2023-9-14 最右线下后端开发二面
1 OS
1.1 讲讲什么是虚拟内存,怎么实现的
虚拟内存是一种存储器管理能力,它使得一个应用程序似乎有更多的物理内存(RAM)可用,而实际上,系统使用了一部分硬盘空间来模拟额外的 RAM。通过使用虚拟内存,系统可以运行更大、更复杂的应用程序,甚至在物理内存不足的情况下也不会崩溃。
以下是虚拟内存的工作原理和它是如何实现的:
-
分页和分段:大多数现代操作系统都使用分页或分段技术来实现虚拟内存。分页是将物理内存分为固定大小的页面,而分段是根据应用程序的需求将内存分为不同大小的段。
-
页表:页表是一个数据结构,用于映射虚拟地址到物理地址。每当应用程序访问一个地址,页表被用来找出这个地址在物理内存中的位置。
-
页面错误:当一个程序尝试访问一个当前不在物理内存中的页面时,会发生页面错误。这时,操作系统需要从磁盘上将所需的页面载入到物理内存中。
-
置换算法:当物理内存满了,并且需要为新的页面腾出空间时,操作系统必须决定哪个页面被移出物理内存。这是通过所谓的置换算法来完成的,如LRU(最近最少使用)或FIFO(先进先出)。
-
后备存储:当页面从物理内存被移除时,它们被存放在一个称为后备存储或交换空间的磁盘区域。这样,当这个页面再次被访问时,它可以被重新载入到物理内存中。
-
写回与写通过:当数据被修改时,有两种方法可以更新后备存储中的数据。写回方法是在页面被移出物理内存时才更新后备存储。而写通过方法是在数据被修改时立即更新后备存储。
-
页大小:页的大小可以根据硬件和操作系统的设计而变化,常见的页大小有4KB、8KB等。
虚拟内存的实现和管理涉及操作系统、硬件和应用程序之间的密切协作。虽然虚拟内存为应用程序提供了更多的可用内存,但过度的页面交换(称为"页面抖动")可能导致性能下降,因为访问磁盘要比访问物理内存慢得多。
1.2 每一个进程都有自己独立的虚拟地址空间嘛?
-
每个进程是否都有一个页表?
是的,每个进程都有其自己的页表。这是因为每个进程都有自己的虚拟地址空间,需要一个独立的映射机制来映射其虚拟地址到物理地址。这样,进程A中的虚拟地址0x1000可能映射到物理地址0x2000,而进程B中的同一个虚拟地址0x1000可能映射到一个完全不同的物理地址,例如0x3000。这个独立的地址空间为进程提供了隔离,确保一个进程不能轻易地访问或干扰另一个进程的内存。
-
每个进程可以是分页、分段或段页式布局吗?
是的,进程的内存布局可以基于分页、分段或者两者的组合,即段页式布局。
-
分页:这是现代操作系统中最常用的方式,它将虚拟内存和物理内存都分割成固定大小的页。每一页都有一个独立的虚拟到物理的映射。
-
分段:分段是基于变长区段的,这些区段是根据程序的不同部分(如代码段、数据段)来划分的。每个段都有其自己的基址和限制。
-
段页式布局:这是分段和分页的结合。首先,内存被分成多个段,每个段再进一步被分页。这样,首先会使用段表找到对应的段,然后在该段中使用页表找到具体的页。
这三种布局中,分页是最常用的,因为它简化了内存管理并允许更细粒度的内存保护。而段页式布局则结合了分段和分页的优点,但也增加了一些复杂性。纯分段的布局现在在现代操作系统中不太常见。
-
1.2 进程和线程的区别
进程和线程都是操作系统中用于并发执行的基本单位,但它们之间存在明显的区别。以下列举了进程和线程之间的主要区别:
-
定义:
- 进程:进程是程序在执行时的一个实例。它是一个独立的执行实体,拥有自己的私有地址空间和系统资源。
- 线程:线程是进程内的一个执行单位或执行路径。它分享父进程的地址空间和资源,但执行自己的指令序列。
-
资源独立性:
- 进程:每个进程都有其独立的地址空间、数据栈以及系统资源。这使得进程之间相对隔离,但也增加了进程切换的开销。
- 线程:所有线程共享同一进程的地址空间和系统资源。线程之间的切换因此比进程切换要快得多。
-
通信:
- 进程:进程间通信 (IPC) 相对复杂,通常涉及如管道、消息队列、共享内存、套接字等机制。
- 线程:由于线程共享相同的地址空间,所以它们之间的通信比进程间通信更为简单。线程可以直接读写同一进程中的数据结构,但这也带来了同步问题。
-
创建和终止开销:
- 进程:创建或终止一个进程的开销通常比线程更大,因为涉及到更多的资源分配和回收。
- 线程:线程的创建和终止相对更为轻量级。
-
故障隔离:
- 进程:由于进程拥有独立的地址空间,一个进程崩溃不太可能影响其他进程。
- 线程:一个线程在执行中出现问题(如访问非法内存)可能会影响同一进程中的其他线程。
-
调度和上下文切换:
- 进程:进程的上下文切换涉及更多的开销,因为要保存和恢复更多的信息。
- 线程:线程的上下文切换相对较快,因为大部分资源(如地址空间)都是共享的。
-
应用场景:
- 进程:适用于需要更强隔离或运行在不同地址空间的应用。
- 线程:适用于需要频繁的通信和快速上下文切换的应用。
总之,进程和线程都有各自的优点和缺点。在设计并发系统或应用时,开发者需要根据特定需求来选择合适的执行实体。
1.3 进程间的通信方式
进程间通讯的7种方式
2 java
2.1 讲讲jvm的垃圾回收机制吧
3 快手实习
3.1 基础crud启动器是怎么回事
相关文章:
【2024秋招】2023-9-14 最右线下后端开发二面
1 OS 1.1 讲讲什么是虚拟内存,怎么实现的 虚拟内存是一种存储器管理能力,它使得一个应用程序似乎有更多的物理内存(RAM)可用,而实际上,系统使用了一部分硬盘空间来模拟额外的 RAM。通过使用虚拟内存&…...
LeetCode 2678. 老人的数目
【LetMeFly】2678.老人的数目 力扣题目链接:https://leetcode.cn/problems/number-of-senior-citizens/ 给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息,信息用长度为 15 的字符串表示,表示方式如下&#…...

java--三元运算符、运算符的优先级
1.三元运算符介绍 1.格式:条件表达式?值1:值2; 2.执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2 2.运算符优先级 1.在表达式中…...
在推荐系统中,BPRloss、Embloss、CrossEntropyloss是怎么计算的,代表的意义是什么
一、BPRloss(Bayesian Personalized Ranking loss)是一种用于推荐系统中的损失函数,用于衡量预测的排序与真实的用户行为排序之间的差异。BPRloss的计算过程如下: 输入:BPRloss的输入包括用户u、物品i和物品jÿ…...

【Python语言速回顾】——异常文件操作
目录 一、异常 1、检测异常try语句 2、抛出异常 3、异常处理流程 二、文件操作 1、打开文件 ①文件模式acess_mode ②文件缓冲区 2、基本的文件方法 ①读和写、关闭文件 ②读取行 ③文件重命名 ④删除文件(系统中已存在的文件) 3、基本的目…...

SAP POorPI RFC接口字段调整后需要的操作-针对SP24及以后的PO系统
文章目录 问题描述解决办法 问题描述 在SAP系统的RFC接口结构中添加了字段,RFC也重新引用到了PO系统,Cache和CommunicationChannel都刷新或启停了,但是新增的字段在调用接口的时候数据进不到SAP系统,SAP系统内的值也出不来。经过…...

【ArcGIS模型构建器】03:多个shp批量按属性分割(多个县区批量提取乡镇)
文章目录 一、数据预览二、模型构建三、保存模型一、数据预览 加载实验数据: 本试验实现将两个县区的数据分割为乡镇数据。 二、模型构建 1. 添加数据文件夹 将县区数据所在的根目录文件夹拖进模型。 2. 添加要素类迭代器 插入→迭代器→要素类。 用连接工具,将数据文件…...
JavaScript中JSON和Bom对象模型
JSON JSON是一种轻量级的数据交换格式 简洁和清晰的层次结构使得JSON成为理想的数据交换语言 易于人们解析和生成,并有效的提升网络传输效率 javaScript一切皆为对象,任何js支持的对象都可以使用JSON来表示 格式: 对象都用[] 数组都用{}…...

Ubuntu下载、安装QGIS软件的方法
本文介绍在Linux操作系统Ubuntu版本中,通过命令行的方式,配置QGIS软件的方法。 在Ubuntu等Linux系统中,可以对空间信息加以可视化的遥感、GIS软件很少,比如ArcGIS下属的ArcMap就没有对应的Linux版本(虽然有ArcGIS Serv…...
spring sharding JDBC 动态调整数据库连接
spring sharding JDBC 动态调整数据库连接 通过重写ShardingSphereDataSource类来实现 代码 package org.apache.shardingsphere.driver.jdbc.core.datasource;import com.alibaba.druid.pool.DruidDataSource; import lombok.extern.slf4j.Slf4j; import org.apache.shardi…...

解决CondaHTTPError HTTP 000 CONNECTION FAILED for url解决方法
解决CondaHTTPError: HTTP 000 CONNECTION FAILED for url解决方法 问题:使用conda install命令安装包提示CondaHTTPError: HTTP 000 CONNECTION FAILED for url 分析:网络连接问题,大概率是网速不行或者源没有换 解决方案:修改国…...

10 创建型模式-原型模式
引言: 创建对象的五种方式: 通过new关键字通过Class类的newInstance()方法通过Constructor类的newInstance()方法利用Clone方法反序列化 Clone方法: 其实现方式正是通过调用 Object 类的 clone() 方法来完成。 protected native Object cl…...

MSQL系列(七) Mysql实战-SQL语句Join,exists,in的区别
Mysql实战-SQL语句Join,exists,in的区别 前面我们讲解了索引的存储结构,BTree的索引结构,以及索引最左侧匹配原则及讲解一下常用的SQL语句的优化建议,今天我们来详细讲解一下 我们经常使用的 join, exist&…...

最新壁纸自动采集系统网站PHP源码/360壁纸官方数据接口采集/ZHEYI采集源码
源码介绍: 最新壁纸自动采集系统网站PHP源码,它是ZHEYI自动采集源码,能够在360壁纸官方数据接口采集。很好用的壁纸网站源码分享,仅供学习,请勿商用。 ZHEYI自动采集壁纸PHP源码,能全自动采集高清壁纸网源…...

Redis在分布式场景下的应用
分布式缓存 缓存的基本作用是在高并发场景下对应服务的保护缓冲 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: redis由于高强度性能采用内存 但是意味着丢失的风险单结点redis并发能力有限分布式服务中数据过多 依赖内存的redis 明显单机不…...

2316. 统计无向图中无法互相到达点对数
2316. 统计无向图中无法互相到达点对数 难度: 中等 来源: 每日一题 2023.10.21 给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为 0 到 n - 1 。同时给你一个二维整数数组 edges ,其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间…...
Selenium定向爬取海量精美图片及搜索引擎杂谈
我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的。首先通过这篇文章,你能学到以下几点: 1.可以了解Python简单爬取图片的一些思路和方法 2.学习Selenium自动、测试分析动态网页和正则表达式的区别和共同点 …...

面试题—JAVA基础①
文章目录 1.Java面向对象有哪些特征?2.ArrayList和LinkedList有什么区别?3.Java接口和抽象类有哪些区别?4.hashcode和equals如何使用?5.try-catch6.局部变量和实例变量7.String、StringBuffer、StringBuilder 的区别?8…...
naive-ui的n-data-table标签奇特bug记录
具体参考之前的博文:vueday02——使用naive-ui做一个ACM看榜-CSDN博客 具体代码在这里面 原因:在本地运行的时候,datatable里面使用列表渲染成字符串前端设置样式进行转换,但是在正式部署的时候,这个组件没有将其自动…...

微信小程序OA会议系统个人中心授权登入
在我们的完成微信登入授权之前,首先我们要完成我们前面所写的代码,如果有不会的大家可以去看以下我发的前面几个文章链接我发下面了,各位加油! 微信小程序OA会议系统数据交互-CSDN博客 微信小程序会议OA系统其他页面-CSDN博客 …...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

Python异步编程:深入理解协程的原理与实践指南
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...

以太网PHY布局布线指南
1. 简介 对于以太网布局布线遵循以下准则很重要,因为这将有助于减少信号发射,最大程度地减少噪声,确保器件作用,最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确,然…...