当前位置: 首页 > 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博客 …...

突破设备救援瓶颈:MTKClient五维解决方案实现联发科设备底层修复

突破设备救援瓶颈:MTKClient五维解决方案实现联发科设备底层修复 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 当你按下电源键,屏幕毫无反应;当系统更…...

3分钟开启浏览器编程:Core72在线IDE零配置开发指南 [特殊字符]

3分钟开启浏览器编程:Core72在线IDE零配置开发指南 🚀 【免费下载链接】core Online IDE powered by Visual Studio Code ⚡️ 项目地址: https://gitcode.com/gh_mirrors/core72/core 还在为复杂的开发环境配置而烦恼吗?Core72在线ID…...

C 标准库 - `<ctype.h>`

C 标准库 - <ctype.h> 概述 在C语言编程中,字符处理是基础且常见的需求。《ctype.h》是C标准库中的一个头文件,提供了丰富的字符处理函数。这些函数用于检测字符的类型(如字母、数字、空白字符等),以及转换字符的大小写。本篇文章将详细介绍 <ctype.h> 头文…...

WinClaw实战教程 01|安全版OpenClaw从零部署:5分钟上手+全功能实测+避坑大全

摘要:2026年AI Agent已然从极客小众工具进化为全民级效率神器,OpenClaw(小龙虾)凭借AI直控电脑的核心能力引爆开源社区,但恶意Skill泛滥、AI误删数据、配置门槛极高、资产暴露等安全与易用性问题频发——某互联网公司员工因使用OpenClaw第三方Skill导致核心项目文档泄露,…...

如何解决网页图片格式转换难题?这款Chrome扩展让效率提升3倍

如何解决网页图片格式转换难题&#xff1f;这款Chrome扩展让效率提升3倍 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirrors/sa/…...

连续血糖监测数据集终极指南:解锁糖尿病研究的标准化数据宝库

连续血糖监测数据集终极指南&#xff1a;解锁糖尿病研究的标准化数据宝库 【免费下载链接】Awesome-CGM List of CGM datasets 项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-CGM 在精准医疗与人工智能交叉融合的时代&#xff0c;连续血糖监测&#xff08;CGM&a…...

游戏音频解密全流程:acbDecrypter高效处理指南

游戏音频解密全流程&#xff1a;acbDecrypter高效处理指南 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 在游戏开发与音频 mod 创作中&#xff0c;如何突破加密音频格式的限制&#xff0c;将 ACB、HCA、ADX 等专用格式转换…...

如何用Dism++终极优化你的Windows系统:免费开源工具的完整指南

如何用Dism终极优化你的Windows系统&#xff1a;免费开源工具的完整指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Dism是一款强大的Windows系统优化和维护…...

别再只写CRUD了!用SpringBoot拦截器和自定义注解,给你的课程设计项目加上专业的权限控制

从零构建SpringBoot权限控制系统&#xff1a;拦截器与注解实战指南 每次课程设计答辩现场&#xff0c;总能看到这样的场景&#xff1a;学生演示着千篇一律的增删改查功能&#xff0c;评委老师皱着眉头问"权限控制怎么实现的"&#xff0c;然后全场陷入尴尬的沉默。如果…...

**标题:MLOps实战进阶:用Python+Docker+Kubernetes打造自动化模型部署流水

标题&#xff1a;MLOps实战进阶&#xff1a;用PythonDockerKubernetes打造自动化模型部署流水线 在现代机器学习工程中&#xff0c;模型从实验到上线的全流程自动化已成为企业级落地的关键瓶颈。传统手动部署模式不仅效率低下&#xff0c;还容易因环境差异导致“在我电脑上能跑…...