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

【6】阿里面试题整理

[1]. ThreadLocal原理

ThreadLocal提供了一种线程隔离的机制,使得每个线程拥有自己独立的变量副本。

它的底层实现是ThreadLocalMap,以ThreadLocal对象为键,变量副本为值的键值对。

为了避免内存泄漏,ThreadLocalMap的Key使用了弱引用。使用完毕后,需要手动调用remove()方法清理。

[2]. ThreadLocal与线程池一起使用可能发生的问题?

ThreadLocal和线程池一起使用时,主要有两个问题:内存泄漏和数据错乱。

内存泄漏是因为线程池复用线程,导致ThreadLocal变量的副本一直存在于线程的ThreadLocalMap中。

数据错乱是因为线程没有正确重置ThreadLocal变量,导致下一次任务使用到上一次任务遗留下来的值。

[3]. CMS和垃圾回收器G1的区别。

CMS和G1都是旨在减少停顿时间的垃圾回收器,但G1的目标是在减少停顿时间的同时实现高吞吐量。

CMS基于标记-清除算法,容易产生内存碎片,而G1通过分区和复制算法来减少碎片。

CMS适用于对停顿时间敏感,CPU资源充足的应用,而G1适用于大堆内存,对停顿时间有要求的应用。

[4]. JDK自带的两个调优工具是什么?

JDK自带的两个主要的调优工具是JConsoleVisualVM

JConsole是一个图形化的监控和管理工具,可以连接到JVM,实时监控内存使用、线程状态、类加载等信息。

可以用它来观察JVM的运行状况,比如内存是否溢出,线程是否存在死锁。

VisualVM是一个功能更强大的工具,不仅包含了JConsole的所有功能,还提供了性能分析器,可以分析CPU和内存的使用情况,帮助定位性能瓶颈。

此外,VisualVM还可以分析线程堆栈和堆转储文件,帮助诊断线程问题和内存泄漏。

[5]. 分布式缓存项目如何进行磁盘持久化的?

分布式缓存常见的持久化方案:

全量快照:定期将整个缓存数据集完整地保存到磁盘文件。优点是简单,恢复速度快。缺点是占用大量磁盘空间和I/O资源,快照期间可能影响性能。适用于数据量较小,对数据丢失不敏感的场景。

增量日志:将每次写操作都记录到日志文件中。优点是可以实现更细粒度的持久化,对性能影响较小。缺点是恢复速度较慢,日志文件会不断增长。适用于对数据一致性要求较高,写操作频繁的场景。

混合持久化:结合全量快照和增量日志的优点。定期进行全量快照,同时记录增量日志。在缓存服务重启后,先加载快照,然后重放快照之后的日志。优点是既能保证恢复速度,又能降低数据丢失的风险。

[6]. JVM内存模型中堆区的结构?

JVM内存模型主要包括程序计数器、虚拟机栈、本地方法栈、堆和方法区。

堆是JVM管理的最大的一块内存区域,所有线程共享。它的结构主要分为新生代和老年代两个部分。

新生代又分为Eden区和两个大小相等的幸存者区(Survivor 0和Survivor 1)。新创建的对象通常分配在Eden区,经过Minor GC后仍然存活的对象会进入幸存者区。

老年代用于存放经过多次Minor GC仍然存活,并且年龄达到一定阈值的对象。

[7]. ZGC是哪个版本出现的?

ZGC最初是在JDK 11中以实验特性引入的,并在后续版本中不断改进和完善。
从JDK 15开始,ZGC已经从实验状态转为正式可用。

[8]. G1为什么要给Region设置分代?

主要原因有以下几点:

提高垃圾回收效率:分代垃圾回收基于“弱分代假设”和“强分代假设”,认为大部分对象都是朝生夕灭的。因此,G1可以优先回收年轻代Region,因为年轻代Region通常包含大量的垃圾对象,回收成本较低。

优化GC停顿时间:G1的目标是可预测的停顿时间。通过优先回收年轻代Region,G1可以快速释放内存,降低GC停顿时间,保证应用的流畅运行。

提升空间利用率:通过分代,能更快的清理掉死亡对象,从而释放空间,提升空间利用率。

[9]. Redis的AOF和RDB的优缺点?应用场景?

Redis提供了两种持久化机制:RDB和AOF。

RDB是通过快照的方式将内存中的数据保存到磁盘上,AOF是通过追加写命令的方式将每个写命令保存到磁盘上。

RDB的优点是文件紧凑、恢复速度快、对性能影响小,缺点是存在数据丢失的风险。AOF的优点是数据安全性高、可读性强、支持损坏修复,缺点是文件体积大、恢复速度慢、对性能有一定影响。

RDB适合用于数据备份、灾难恢复和大规模数据恢复等场景,例如,定期备份Redis数据到云存储上。AOF适合用于数据安全性要求高的场景,例如,金融系统的缓存层,需要保证数据的完整性和可靠性。

[10]. 如何理解Spring IoC?

IoC,即控制反转,是一种设计思想,它将对象之间的依赖关系的控制权从对象自身转移到外部容器。以前是由对象自己负责创建依赖对象,现在是由IoC容器负责创建和管理这些对象,并将它们注入到需要的对象中。

Spring通过依赖注入来实现IoC,常用的依赖注入方式有构造器注入和Setter方法注入。可以使用XML配置文件或注解来声明Bean之间的依赖关系,然后由Spring IoC容器负责创建和管理Bean的实例。

[11]. InnoDB和MyISAM之间的区别?

事务支持:InnoDB支持事务,提供ACID事务特性,可以保证数据的一致性。而MyISAM不支持事务。

锁机制:InnoDB支持行级锁,可以并发地对不同的行进行操作,提高并发性能。而MyISAM只支持表级锁,并发性能较差。

外键约束:InnoDB支持外键约束,可以定义表之间的关系,保证数据的完整性。而MyISAM不支持外键约束。

[12]. 手撕算法题:leetcode129. 求根到叶子节点数字之和

class Solution {public int sumNumbers(TreeNode root) {return dfs(root,0);}public int dfs(TreeNode root, int prevSum){// 如果当前节点为空,返回0if(root==null){return 0;}// 计算当前路径的和int sum = prevSum*10 + root.val;// 如果当前节点是叶子节点,返回当前路径的和if(root.left==null && root.right==null){return sum;} else {// 递归遍历左子树和右子树,并将当前路径的和传递给子树return dfs(root.left, sum) + dfs(root.right, sum);}}}

[13]. 手撕:leetcode230.二叉搜索树中第K小的元素

public class KthSmallestBST{private int count = 0;private int result = -1; // 默认值,表示没找到public int kthSmallest(TreeNode root, int k){inorderTraversal(root, k);return result;}private void inorderTraversal(TreeNode root, int k){if (root == null){return;}inorderTraversal(root.left, k); // 先遍历左子树count++;  // 访问当前节点,计数器加一if (count == k){result = root.val; // 找到第 k 个元素return; // 提前结束,避免不必要的遍历}inorderTraversal(root.right, k); // 再遍历右子树}}

相关文章:

【6】阿里面试题整理

[1]. ThreadLocal原理 ThreadLocal提供了一种线程隔离的机制,使得每个线程拥有自己独立的变量副本。 它的底层实现是ThreadLocalMap,以ThreadLocal对象为键,变量副本为值的键值对。 为了避免内存泄漏,ThreadLocalMap的Key使用了…...

Spring系统学习——持续更新

spring概述 1.轻量级的开源的JAVAEE框架 2.解决企业应用开发的复杂性 3.两大核心 :IOC(控制反转)和AOP(面向切面) 4.Spring特点: 1.方便解耦,简化开发。2.Aop编程支持3.方便程序测试4.方便和其…...

【自学笔记】机器学习基础知识点总览-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 机器学习重点知识点总览一、机器学习基础概念二、机器学习理论基础三、机器学习算法1. 监督学习2. 无监督学习3. 强化学习 四、机器学习处理流程五、机器学习常见问…...

QT笔记——QRadioButton

文章目录 1、概要2、实际的应用2.1、创建多个QRadioButton,只可同时选中其中一个,点击后实现对应的槽函数 1、概要 实现QRadioButton相关的应用;2、实际的应用 2.1、创建多个QRadioButton,只可同时选中其中一个,点击后实现对应的槽函数 创建…...

微服务面试题:远程调用

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

共享设备管理难?MDM助力Kiosk模式一键部署

目录 1. 简化设备部署与配置:实现一键式部署 2. 自动化应用更新与内容推送:确保设备始终保持最新状态 3. 权限控制与设备安全:防止滥用与数据泄露 4. 远程管理与故障诊断:保障设备长期稳定运行 5. 数据分析与报告&#xff1a…...

C++17 中的 std::reduce:详细教程

文章目录 1. 简介2. 函数签名3. 使用场景3.1 简单的累加操作3.2 自定义归并操作3.3 并行计算的性能优势 4. 注意事项4.1 归并操作的结合律和交换律4.2 默认值的使用 5. 总结 1. 简介 std::reduce 是 C17 标准库中引入的一个算法,用于对范围内的元素进行归并操作。它…...

Navicat导入海量Excel数据到数据库(简易介绍)

目录 前言正文 前言 此处主要作为科普帖进行记录 原先Java处理海量数据的导入时,由于接口超时,数据处理不过来,后续转为Navicat Navicat 是一款功能强大的数据库管理工具,支持多种数据库系统(如 MySQL、PostgreSQL、…...

【Map vs Set】:Java数据存储的“双子星”对决

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 🍰一、搜索 🍮1.概念 🍮2.模型 🍰二、Map 🍨1.什么是Map? 🍨2.Map的实例化 &…...

储能能量管理监测系统在储能物联网中的应用优势

安科瑞刘鸿鹏 摘要 本文探讨了微电网能量管理系统在现代储能物联网中的应用。随着能源危机和新能源技术的发展,微电网技术成为利用新能源电力的重要方向。微电网能量管理系统通过实时监控、智能预测、协调控制和经济调度等功能,优化能源使用&#xff0…...

用户管理中心--注册登录功能的设计

文章目录 1.定义接口2.注册逻辑的实现2.1引入依赖2.2注册逻辑2.3测试方法 3.登录逻辑的实现3.1接口的定义与实现3.2记录用户的登录态3.3脱敏处理 1.定义接口 在userService这个接口里面定义我们的userRegister方法,表示的是我们的用户的注册的相关的逻辑&#xff1…...

【删除tomcat默认管理控制台】

停止Tomcat: ./catalina.sh stop 删除管理控制台应用: 进入Tomcat的webapps目录: cd /path/to/tomcat/webapps List item 删除manager和host-manager文件夹: rm -rf manager host-manager 启动Tomcat: ./catali…...

Java虚拟机面试题:JVM调优

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

MySQL 插入替换语句(replace into statement)

我们日常使用 insert into 语句向表中插入数据时,一定遇到过主键或唯一索引冲突的情况,MySQL的反应是报错并停止执行后续的语句,而replace into语句可以实现强制插入。 文章目录 一、replace into 语句简介1.1 基本用法1.2 使用set语句 二、注…...

基于单片机的多功能热水器设计(论文+源码)

2.1系统方案设计 基于单片机的多功能热水器系统,其系统框图如图2.1所示。主要采用了DS18B20温度传感器,HC-SR04超声波模块,STC89C52单片机,液晶,继电器等来构成整个系统。硬件上主要通过温度传感器进行水温的检测&…...

DeepSeek R1本地部署 DeepSeek Api接口调用 java go版本

1、本地ollama的API接口 接着上一章所本地部署deepseek,这一章我们调用ollama api 对应的curl: curl --request POST \--url http://localhost:11434/api/generate \--header Accept: */* \--header Accept-Encoding: gzip, deflate, br \--header Con…...

使用python脚本提取html网页上的所有文本信息

你可以使用 BeautifulSoup 库来提取 HTML 网页上的所有文本信息。以下是一个示例脚本: 步骤 安装 beautifulsoup4 和 requests(如果尚未安装): pip install beautifulsoup4 requestsPython 脚本: import requests fro…...

基于SSM+uniapp的购药小程序+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:用户管理、商家管理、药品管理、药品信息管理、发票管理、订单管理、收藏管理、购物车、充值、下单等技术选型:SSM,Vue(后端管理web),uniapp等测…...

YOLO11网络结构以及改进1

YOLO11 1.YOLO11网络结构图在哪里?2.对应的网络结构图3.每一个模块详解3.1 Conv模块3.2关于卷积模块3.3 关于给各个模块指定参数的细节 4.加入CBAM 1.YOLO11网络结构图在哪里? 2.对应的网络结构图 3.每一个模块详解 3.1 Conv模块 位置:ultr…...

AI 编程私有化部署,在使用 cline 时,可能无法避免私隐的泄漏问题

摘录:Cline Privacy Policy https://github.com/cline/cline/blob/main/docs/PRIVACY.md Key Points Cline operates entirely client-side as a VS Code extensionNo code or data is collected, stored, or transmitted to Clines servers 问题是&#xff1a…...

计算机视觉-局部特征

一、局部特征 1.1全景拼接 先用RANSAC估计出变换,就可以拼接两张图片 ①提取特征 ②匹配特征 ③拼接图像 1.2 点的特征 怎么找到对应点?(才能做点对应关系RANSAC) :特征检测 我们希望找到的点具有的特征有什么特…...

数据结构:Map Set(一)

目录 一、搜索树 1、概念 2、查找 3、插入 4、删除 二、搜索 1、概念及场景 2、模型 (1)纯key模型 (2)Key-Value模型 三、Map的使用 1、什么是Map? 2、Map的常用方法 (1)V put(K …...

关闭浏览器安全dns解决访问速度慢的问题

谷歌浏览器加载速度突然变慢了?检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址,因此对于增强用户的…...

C语言-章节 4:函数的定义与声明 ——「神秘法术的卷轴」

少年和 Inta 成功通过运算符与表达式的考验后,继续在函数城堡中探索。他们沿着一条闪烁着幽光的走廊前行,走廊两侧的墙壁上刻满了奇异的符号,仿佛在诉说着古老的编程秘密。终于,他们来到了一间神秘的房间,房间中央悬浮…...

47.实验室管理系统(基于SSM和html的Java项目)

目录 1.系统的受众说明 2.系统可行性分析 2.1 经济可行性 2.2 技术可行性 2.2.1 Java Web技术 2.2.2 Eclipse 2.2.3 Tomcat 2.2.4 数据库 2.2.5 Layui框架 2.2.6 SSM框架 3.系统需求分析 3.1 用户需求分析 3.2 功能需求分析 3.3 其他需求分析 4.系统设计 4.1 系…...

flutter doctor 报错—CocoaPods not installed

执行命令 brew install cocoapodscommand not found: brew报错解决: 添加链接描述...

二叉树进阶:平衡二叉树、完全二叉树、满二叉树详解

在上一篇博客中,我们介绍了二叉树的基本概念、遍历方式以及常见操作。本篇将深入探讨二叉树的几种特殊类型:平衡二叉树、完全二叉树和满二叉树,并通过Java代码示例帮助大家更好地理解这些概念。 1. 满二叉树 (Full Binary Tree) 定义 满二叉…...

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》

本博主免费赠送读者3本书,书名为《MySQL 9从入门到性能优化(视频教学版)》。 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...

【人工智能】通过python练习机器学习中的8大算法

python一系列练习在前面几节中基本练习了一遍,本篇通过机器学习的算法加强python的训练。我印象中常用的几种算法有:线性回归、逻辑回归,决策树,向量机SVM,KNN-近邻,朴素贝叶斯,K-means&#xf…...

机器学习数学基础:21.特征值与特征向量

一、引言 在现代科学与工程的众多领域中,线性代数扮演着举足轻重的角色。其中,特征值、特征向量以及相似对角化的概念和方法,不仅是线性代数理论体系的核心部分,更是解决实际问题的有力工具。无论是在物理学中描述系统的振动模式…...