【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博客 …...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
