Java开发一些偏冷门的面试题

文章目录

  • 1.进程间的通信,线程间的通信
      • 首先可以先回答进程、线程和协程
      • 关于线程和进程通信
  • 2.MySQL中的缓存情况,以及缓存命中率查询

主要从别人的面经那里看来的,以及自己被问住的一些面试题。
拿出来给自己做记录,也顺便给大家做参考!

1.进程间的通信,线程间的通信

这个题是面猿辅导时候被问到的,先是被问了进程和线程的区别,后来问到了管道,用自己模糊的本科时期的记忆回答了一下,管道本质上是要考进程通信。

首先可以先回答进程、线程和协程

  1. 进程是程序启动的实例,进程之间相互独立。进程之间是相互隔离的,不能直接共享数据。
  2. 线程是程序实际的执行者,一个进程最少要有一个线程。
  3. 协程是一种轻量级的线程,它可以在同一个线程内执行多个任务,而不是使用多个线程。协程通常被称为"用户态线程",因为它们由应用程序代码来管理,而不是由操作系统内核来管理。
  4. 关于空间:进程有自己独立的堆空间、线程有自己独立的栈空间,进程之间不能直接进行信息共享,同一进程之间的线程可以共享堆空间。

关于线程和进程通信

进程通信:首先要明确的是进程之间不能进行直接的信息共享,同时进程很有可能来自不同的服务甚至不同的机器(比如QQ和微信就是两个进程)。所以进程之间的信息共享可以利用一些网络通讯,比如利用消息队列MQ、基于socket套接字。如果整狠活可以利用共享内存来进行通讯,但需要谨慎处理同步问题。
线程通讯:多个线程在同一进程中可以通过共享内存来实现通信。这通常需要使用锁(如互斥锁、读写锁)来确保数据一致性。信号量是一种计数器,用于控制同时访问共享资源的线程数量。它可以用于线程之间的互斥和同步。
最后你要好好讲讲管道!

管道的本质是一种数据流通道,它用于在进程之间或线程之间传递数据。管道是操作系统提供的一种通信机制,它允许一个进程或线程将数据写入一个端口,同时另一个进程或线程可以从另一个端口读取相同的数据。
单向通信: 管道通常是单向的,有一个写入端和一个读取端。数据从写入端流入,然后从读取端流出。
阻塞操作: 当管道为空时,读取操作可能会被阻塞,直到有数据可读。同样,当管道已满时,写入操作可能会被阻塞,直到有足够的空间可用。
FIFO(先进先出): 管道通常采用先进先出的原则,确保数据的顺序保持一致。

2.MySQL中的缓存情况,以及缓存命中率查询

这个是看到了别人的面经(应该是滴滴的面经)

MySQL数据库中有多种缓存机制,这些缓存有助于提高查询性能和降低数据库服务器的负载。与其他缓存类似他也是在内存中开辟空间进行缓存的存放,最主要的是innoDB缓冲池。
InnoDB缓冲池(InnoDB Buffer Pool):它使用一个称为缓冲池的内存区域来缓存数据和索引。缓冲池用于加速对表数据的读取和写入操作,减少了磁盘 I/O 的次数,从而提高了性能。
查询缓存(Query Cache): 查询缓存是 MySQL 中的一个可选组件,用于存储以前执行的 SELECT 查询的结果集。如果一个查询在查询缓存中找到匹配项,MySQL 将返回缓存中的结果,而不会执行实际的查询。尽管查询缓存可以提高查询性能,但它在高并发和频繁更新的情况下可能会导致性能下降,因此在新版本的 MySQL 中已经被弃用。
剩下的还有键缓存、表缓存、日志缓存等…
关于配置: InnoDB 存储引擎使用一个称为缓冲池的内存区域来缓存数据页和索引页。缓冲池的大小可以通过配置参数 innodb_buffer_pool_size 来设置。
程序员可以通过SHOW STATUS进行性能信息统计

SELECT (Qcache_hits / (Qcache_hits + Com_select)) * 100 AS cache_hit_ra% Com_select:这个变量表示执行的 SELECT 查询次数。
% Qcache_hits:这个变量表示查询缓存命中的次数。

SHOW VARIABLES 命令: 使用 SHOW VARIABLES 命令可以查看 MySQL 的配置变量。你可以查看以下两个与查询缓存有关的变量:
query_cache_type:这个变量表示查询缓存的类型,通常为 ON 表示开启。
query_cache_size:这个变量表示查询缓存的大小。
另外还可以使用一些外部的检测工具进行数据库情况的统计。

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

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

相关文章

【Spring笔记02】Spring中的IOC容器和DI依赖注入介绍

这篇文章,主要介绍一下Spring中的IOC容器和DI依赖注入两个概念。 目录 一、IOC控制反转 1.1、什么是IOC 1.2、两种IOC容器 (1)基于BeanFactory的IOC容器 (2)基于ApplicationContext的IOC容器 二、DI依赖注入 2.…

stm32-SPI协议

SPI协议详解(图文并茂超详细) SPI通讯协议 于是我们想有没有更好一点的串行通讯方式;相比较于UART,SPI的工作方式略有不同。 SPI是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和…

RT1 RT2 RTX() 学习

RT-1: 初生代的 ‘视觉-语言-动作模型’ 作品 RT-2: RT1使用130k条机器人遥操作数据训练,展示出了其处理多种任务的能力和很强的泛化能力。但其通用性仍受限于数据集的大小。 若想要得到一个表现出当前LLMs能力的机器人大模型,收集数以亿计…

MySQL中的 增 删 查 改(CRUD)

目录 新增 insert into 表名 value(数据,数据),.......; insert into 表名(列1,列2.....) value(数据,数据),.......; datatime 类型的数据如何插入? 查询 select * from 表名…

动态调整系统主题色(4): CssVar 与 Variant 方案的探索

动态调整系统主题色(4): CssVar 与 Variant 方案的探索 动态调整系统主题色(4): CssVar 与 Variant 方案的探索 前言方案的介绍与比较 CssVar (CSS 变量方案)CSS 变量方案与 tailwindcss 的结合Variant 方案 2种方案在小程序上的示例之前的几篇 前言 这篇已经是动态调整系统…

Docker 的数据管理与Docker 镜像的创建

------------------Docker 的数据管理--------------------- 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1.数据卷 数据卷是一个供容器使用的特殊…

什么是Vue的JSX语法?如何使用JSX语法

Vue的JSX语法:更接近JavaScript的模板语言 Vue.js是一个流行的JavaScript框架,用于构建交互式的Web应用程序。虽然Vue通常使用模板语法来构建用户界面,但它也提供了JSX语法的支持,使开发人员能够更接近JavaScript的表达方式来构建…

分享几个优秀开源免费管理后台模版,建议收藏!

大家好,我是 jonssonyan 今天和大家分享一些免费开源的后台管理页面,帮助大家快速搭建前端页面。为什么要用模板?道理很简单,原因是方便我们快速开发。我们不应该花太多的时间在页面调整上,而应该把精力放在核心逻辑和…

re学习(37)DASCTF 2023 0X401七月暑期挑战赛 controflow

程序通过改变栈里面的返回地址来控制程序的控制流 从而达到混淆的效果 左侧有许多被hook的函数 在每个函数开头设置断点 然后观察程序的运行流程 会发现输入的数据会进行 异或 相加 异或 相减 相乘 异或等操作 要注意部分运算的索引是 从[10]开始的 具体思路参考&#xf…

黑豹程序员-架构师学习路线图-百科:JSON替代XML

文章目录 1、数据交换之王2、XML的起源3、JSON诞生4、什么是JSON 1、数据交换之王 最早多个软件之间使用txt进行信息交互,缺点:纯文本,无法了解其结构;之后使用信令,如:电话的信令(拨号、接听、…

三十、【进阶】B-Trees的演变过程

1、索引结构 (1)二叉树 (2)B-Tree树 B-Tree树最大度数为5,代表每一个节点最多存储4个key(每个节点最多存储4个数据),5个指针(可以指向5个子节点)。 2、演变过程(最大度数为5) &…

数据挖掘(3)特征化

从数据分析角度,DM分为两类,描述式数据挖掘,预测式数据挖掘。描述式数据挖掘是以简介概要的方式描述数据,并提供数据的一般性质。预测式数据挖掘分析数据建立模型并试图预测新数据集的行为。 DM的分类: 描述式DM&#…

记录本地部署Stable-diffusion所依赖的repositories和一些插件

今天按照其他文章的步骤拉取好了https://github.com/AUTOMATIC1111/stable-diffusion-webui后,点击webui-user.bat后发现,repositories和models还得慢慢拉取,好吧,GitHub Desktop,启动! BLIP: https://git…

使用sqlmap获取数据步骤

文章目录 1.使用sqlmap获取所有数据库2.使用sqlmap获取当前连接数据库3.使用sqlmap获取当前数据库下所有表名4.使用sqlmap获取当前数据库下某个表下所有列名5.使用sqlmap获取当前数据库下某个表下指定字段的数据6.测试当前用户是否是管理员7.使用burpsqlmap批量检测8.脱库命令9…

621. 任务调度器

题目描述 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态…

c++使用ifstream和ofstream报错:不允许使用不完整的类型

学习《C Primer》关于IO库的部分&#xff0c;输入284页的的代码&#xff0c;出现了报错&#xff1a; 不允许使用不完整的类型 原来的代码&#xff1a; #include <iostream> #include <vector> using namespace std;int main(int argc, char **argv) {ifstream in…

Next.js 入门笔记

前言 之前初步体验了 React 的魅力, 又看文档理解了一下 useState 和 useEffect, 目前初步理解的概念是: useState 用来声明在组件中使用并且需要修改的变量 useEffect 用来对 useState 声明的变量进行初始化赋值 可能理解的不太准确, 不过大概差不多是这么个意思. 但是再往后…

【AI视野·今日NLP 自然语言处理论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 4 Oct 2023 Totally 73 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Contrastive Post-training Large Language Models on Data Curriculum Authors Canwen Xu, Corby Rosset, Luc…

数字孪生、AR和VR如何改进数据中心设计

数据中心基础设施管理(DCIM)已存在多年&#xff0c;它在许多数据中心被广泛使用&#xff0c;但还没有普遍使用&#xff0c;由于两个因素&#xff0c;这种情况正在改变&#xff1a;数字化的概念正在普及&#xff0c;IT与运营技术(OT)系统(如建筑管理系统(BMS)和电源管理工具)的集…

从零开始的C++(五)

1.类和对象的补充 当对象是const修饰的常量时&#xff0c;形参中的this是隐含的&#xff0c;那么该如何写函数才能传常量对象呢&#xff1f;如果还是按照正常的方式写&#xff0c;则会出现实参是const修饰的&#xff0c;形参没有&#xff0c;出现了权限的扩大&#xff0c;无法…