当前位置: 首页 > news >正文

【2024秋招】2023-9-14 最右线下后端开发二面

1 OS

1.1 讲讲什么是虚拟内存,怎么实现的

虚拟内存是一种存储器管理能力,它使得一个应用程序似乎有更多的物理内存(RAM)可用,而实际上,系统使用了一部分硬盘空间来模拟额外的 RAM。通过使用虚拟内存,系统可以运行更大、更复杂的应用程序,甚至在物理内存不足的情况下也不会崩溃。

以下是虚拟内存的工作原理和它是如何实现的:

  1. 分页和分段:大多数现代操作系统都使用分页或分段技术来实现虚拟内存。分页是将物理内存分为固定大小的页面,而分段是根据应用程序的需求将内存分为不同大小的段。

  2. 页表:页表是一个数据结构,用于映射虚拟地址到物理地址。每当应用程序访问一个地址,页表被用来找出这个地址在物理内存中的位置。

  3. 页面错误:当一个程序尝试访问一个当前不在物理内存中的页面时,会发生页面错误。这时,操作系统需要从磁盘上将所需的页面载入到物理内存中。

  4. 置换算法:当物理内存满了,并且需要为新的页面腾出空间时,操作系统必须决定哪个页面被移出物理内存。这是通过所谓的置换算法来完成的,如LRU(最近最少使用)或FIFO(先进先出)。

  5. 后备存储:当页面从物理内存被移除时,它们被存放在一个称为后备存储或交换空间的磁盘区域。这样,当这个页面再次被访问时,它可以被重新载入到物理内存中。

  6. 写回与写通过:当数据被修改时,有两种方法可以更新后备存储中的数据。写回方法是在页面被移出物理内存时才更新后备存储。而写通过方法是在数据被修改时立即更新后备存储。

  7. 页大小:页的大小可以根据硬件和操作系统的设计而变化,常见的页大小有4KB、8KB等。

虚拟内存的实现和管理涉及操作系统、硬件和应用程序之间的密切协作。虽然虚拟内存为应用程序提供了更多的可用内存,但过度的页面交换(称为"页面抖动")可能导致性能下降,因为访问磁盘要比访问物理内存慢得多。

1.2 每一个进程都有自己独立的虚拟地址空间嘛?

  1. 每个进程是否都有一个页表?

    是的,每个进程都有其自己的页表。这是因为每个进程都有自己的虚拟地址空间,需要一个独立的映射机制来映射其虚拟地址到物理地址。这样,进程A中的虚拟地址0x1000可能映射到物理地址0x2000,而进程B中的同一个虚拟地址0x1000可能映射到一个完全不同的物理地址,例如0x3000。这个独立的地址空间为进程提供了隔离,确保一个进程不能轻易地访问或干扰另一个进程的内存。

  2. 每个进程可以是分页、分段或段页式布局吗?

    是的,进程的内存布局可以基于分页、分段或者两者的组合,即段页式布局。

    • 分页:这是现代操作系统中最常用的方式,它将虚拟内存和物理内存都分割成固定大小的页。每一页都有一个独立的虚拟到物理的映射。

    • 分段:分段是基于变长区段的,这些区段是根据程序的不同部分(如代码段、数据段)来划分的。每个段都有其自己的基址和限制。

    • 段页式布局:这是分段和分页的结合。首先,内存被分成多个段,每个段再进一步被分页。这样,首先会使用段表找到对应的段,然后在该段中使用页表找到具体的页。

    这三种布局中,分页是最常用的,因为它简化了内存管理并允许更细粒度的内存保护。而段页式布局则结合了分段和分页的优点,但也增加了一些复杂性。纯分段的布局现在在现代操作系统中不太常见。

1.2 进程和线程的区别

进程和线程都是操作系统中用于并发执行的基本单位,但它们之间存在明显的区别。以下列举了进程和线程之间的主要区别:

  1. 定义

    • 进程:进程是程序在执行时的一个实例。它是一个独立的执行实体,拥有自己的私有地址空间和系统资源。
    • 线程:线程是进程内的一个执行单位或执行路径。它分享父进程的地址空间和资源,但执行自己的指令序列。
  2. 资源独立性

    • 进程:每个进程都有其独立的地址空间、数据栈以及系统资源。这使得进程之间相对隔离,但也增加了进程切换的开销。
    • 线程:所有线程共享同一进程的地址空间和系统资源。线程之间的切换因此比进程切换要快得多。
  3. 通信

    • 进程:进程间通信 (IPC) 相对复杂,通常涉及如管道、消息队列、共享内存、套接字等机制。
    • 线程:由于线程共享相同的地址空间,所以它们之间的通信比进程间通信更为简单。线程可以直接读写同一进程中的数据结构,但这也带来了同步问题。
  4. 创建和终止开销

    • 进程:创建或终止一个进程的开销通常比线程更大,因为涉及到更多的资源分配和回收。
    • 线程:线程的创建和终止相对更为轻量级。
  5. 故障隔离

    • 进程:由于进程拥有独立的地址空间,一个进程崩溃不太可能影响其他进程。
    • 线程:一个线程在执行中出现问题(如访问非法内存)可能会影响同一进程中的其他线程。
  6. 调度和上下文切换

    • 进程:进程的上下文切换涉及更多的开销,因为要保存和恢复更多的信息。
    • 线程:线程的上下文切换相对较快,因为大部分资源(如地址空间)都是共享的。
  7. 应用场景

    • 进程:适用于需要更强隔离或运行在不同地址空间的应用。
    • 线程:适用于需要频繁的通信和快速上下文切换的应用。

总之,进程和线程都有各自的优点和缺点。在设计并发系统或应用时,开发者需要根据特定需求来选择合适的执行实体。

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.在表达式中&#xf…...

在推荐系统中,BPRloss、Embloss、CrossEntropyloss是怎么计算的,代表的意义是什么

一、BPRloss(Bayesian Personalized Ranking loss)是一种用于推荐系统中的损失函数,用于衡量预测的排序与真实的用户行为排序之间的差异。BPRloss的计算过程如下: 输入:BPRloss的输入包括用户u、物品i和物品j&#xff…...

【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博客 …...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...