技术问答集锦—JVM垃圾回收

chrome-headless-shell-mac-x64-160.0.8160.0(Canary).zip 内容概要:Chrome for Testing 官方 chrome-headless-shell 160.0.8160.0 x64 平台(金丝雀版通道),原版未修改,附来源说明。 适合人群:x64 上的自动化测试工程师、爬虫开发者、CI 环境搭建者。 使用场景及目标:①无头浏览器(Playwright/Puppeteer/Selenium 无界面自动化与爬虫的运行内核);②服务器/容器离线内置;③版本精准匹配(chromedriver 与 Chrome 需同大版本)。 其他说明:Chrome for Testing 为 Google 官方发布、允许自由分发的文件;本资源为第三方整理的下载便利服务。 立即下载

1 判断对象是否可回收有几种方式?

  1. 引用计数算法

优点:实现简单,判定高效;

缺点:很难解决对象之间相互循环引用的问题;

  1. 可达性分析算法

通过一系列"GC Roots"对象作为起始点,开始向下搜索,当一个对象到GC Roots没有任何引用链相连时(从GC Roots到这个对象不可达),则证明该对象是不可用的;

优点:更加精确和严谨,可以分析出循环数据结构相互引用的情况;

缺点:实现比较复杂;需要分析大量数据,消耗大量时间;分析过程需要GC停顿(引用关系不能发生变化),即停顿所有Java执行线程(称为"Stop The World",是垃圾回收重点关注的问题);

2 "GC Roots"对象都包含哪些

  1. 虚拟机栈 (栈帧中本地变量表)中引用的对象;
  2. 方法区中 类静态属性引用的对象 ;
  3. 方法区中 常量引用的对象;
  4. 本地方法栈 JNI(Native方法)中引用的对象;

3 Java四种引用类型分别是什么?及存活时间

  1. 强引用:程序代码普遍存在的,类似"Object obj=new Object()";只要强引用还存在,GC永远不会回收被引用的对象;
  2. 软引用:描述还有用但并非必需的对象;直到内存空间不够时(抛出OutOfMemoryError之前),才会被垃圾回收;最常用于实现对内存敏感的缓存;SoftReference类实现;
  3. 弱引用:用来描述非必需对象;只能生存到下一次垃圾回收之前,无论内存是否足够;WeakReference类实现;
  4. 虚引用:完全不会对其生存时间构成影响;唯一目的就是能在这个对象被回收时收到一个系统通知;PhantomRenference类实现;

4 Java四种引用使用场景

  1. 强引用-FinalReference

地球人都知道,但是我讲不出来;

  1. 软引用-SoftReference

创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建的对象。PS:图片编辑器,视频编辑器之类的软件可以使用这种思路。

软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

  1. 弱引用-WeakReference

Java源码中的java.util.WeakHashMap中的key就是使用弱引用,一旦不需要某个引用,JVM会自动处理它,这样就不需要做其它操作。

弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

  1. 虚引用-PhantomReference

主要用来跟踪对象被垃圾回收器回收的活动。虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入ReferenceQueue中。注意哦,其它引用是被JVM回收后才被传入ReferenceQueue中的。由于这个机制,所以虚引用大多被用于引用销毁前的处理工作。

程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

对象销毁前的一些操作,比如说资源释放等。Object.finalize()虽然也可以做这类动作,但是这个方式即不安全又低效。

5 JVM如何进行对象标记

  1. 第一次标记:在可达性分析后发现到GC Roots没有任何引用链相连时,被第一次标记;并且进行一次筛选:此对象是否必要执行finalize()方法;没有必要执行的情况,则标记对象已死;有必要执行的情况,则对象被放入F-Queue队列中;
  2. 第二次标记:GC将对F-Queue队列中的对象进行第二次小规模标记;finalize()方法是对象逃脱死亡的最后一次机会;一个对象的finalize()方法只会被系统自动调用一次,经过finalize()方法逃脱死亡的对象,第二次不会再调用;

6 为何不建议使用finalize()方法

因为其执行的时间不确定,甚至是否被执行也不确定(Java程序的不正常退出),而且运行代价高昂,无法保证各个对象的调用顺序(甚至有不同线程中调用);如果需要"释放资源",可以定义显式的终止方法,并在"try-catch-finally"的finally{}块中保证及时调用;

如果有关键资源,必须显式的终止方法;一般情况下,应尽量避免使用它,甚至可以忘掉它;

7 什么是安全点,为什么需要

运行中,非常多的指令都会导致引用关系变化;如果为这些指令都生成对应的OopMap,需要的空间成本太高;

只在特定的位置记录OopMap引用关系,这些位置称为安全点(Safepoint);

8 如何选定安全点

不能太少,否则GC等待时间太长;也不能太多,否则GC过于频繁,增大运行时负荷;

所以,基本上是以程序"是否具有让程序长时间执行的特征"为标准选定,如:方法调用、循环跳转、循环的末尾、异常跳转等;

只有具有这些功能的指令才会产生Safepoint;

9 如何使Java线程在安全点上停顿

  1. 抢先式中断(Preemptive Suspension):在GC发生时,首先中断所有线程;如果发现不在Safepoint上的线程,就恢复让其运行到Safepoint上;
  2. 主动式中断(Voluntary Suspension):在GC发生时,不直接操作线程中断,而是仅简单设置一个标志;让各线程执行时主动去轮询这个标志,发现中断标志为真时就自己中断挂起;
  3. 而轮询标志的地方和Safepoint是重合的;

10 什么是安全区域,为什么需要安全区域

线程不执行时没有CPU时间(Sleep或Blocked状态),无法运行到Safepoint上再中断挂起;

安全区域:指一段代码片段中,引用关系不会发生变化;在这个区域中的任意地方开始GC都是安全的;

11 如何使用安全区域解决问题

  1. 线程执行进入Safe Region,首先标识自己已经进入Safe Region;
  2. 线程被唤醒离开Safe Region时,其需要检查系统是否已经完成根节点枚举(或整个GC);
  3. 如果已经完成,就继续执行;否则必须等待,直到收到可以安全离开Safe Region的信号通知,这样就不会影响标记结果;

12 GC算法:标记-清楚优缺点

优点:基于最基础的可达性分析算法,它是最基础的收集算法;而后续的收集算法都是基于这种思路并对其不足进行改进得到的;

缺点:效率问题,标记和清除两个过程的效率都不高;空间问题,标记清除后会产生大量不连续的内存碎片;这会导致分配大内存对象时,无法找到足够的连续内存;从而需要提前触发另一次垃圾收集动作;

13 GC算法:复制算法优缺点

优点:使得每次都是只对整个半区进行内存回收;内存分配时也不用考虑内存碎片等问题;实现简单,运行高效;

缺点:空间浪费;效率随对象存活率升高而变低;

14 GC算法:HotSpot虚拟机复制算法

  1. 将新生代内存分为一块较大的Eden空间和两块较小的Survivor空间;
  2. 每次使用Eden和其中一块Survivor;
  3. 当回收时,将Eden和使用中的Survivor中还存活的对象一次性复制到另外一块Survivor;
  4. 而后清理掉Eden和使用过的Survivor空间;
  5. 后面就使用Eden和复制到的那一块Survivor空间,重复步骤3;

默认Eden:Survivor=8:1,即每次可以使用90%的空间,只有一块Survivor的空间被浪费;

15 什么是分配担保

如果另一块Survivor空间没有足够空间存放上一次新生代收集下来的存活对象时,这些对象将直接通过分配担保机制(Handle Promotion)进入老年代;

16 GC算法:标记-整理优缺点

优点:不会产生内存碎片;

缺点:增加了对存活对象需要整理的过程,效率更低;

17 分代收集算法

"分代收集"(Generational Collection)算法结合不同的收集算法处理不同区域。

新生代:每次垃圾收集都有大批对象死去,只有少量存活;所以可采用复制算法;

老年代:对象存活率高,没有额外的空间可以分配担保;使用"标记-清理"或"标记-整理"算法;

优点:根据各个年代的特点采用最适当的收集算法;

缺点:仍然不能控制每次垃圾收集的时间;

18 G1垃圾收集算法

19 JVM有哪些收集器?分别用于哪些代?

JDK7/8后,HotSpot虚拟机所有收集器及组合(连线),如下图:

JVM收集器

 

新生代收集器:Serial、ParNew、Parallel Scavenge; 老年代收集器:Serial Old、Parallel Old、CMS; 整堆收集器:G1;

 

20 Serial收集器

新生代、复制算法、单线程收集;

缺点:进行垃圾收集时,必须暂停所有工作线程,直到完成;即会"Stop The World";

Serial/Serial Old组合收集器运行示意图如下:

Serial/Serial Old组合

 

 

21 ParNew收集器

新生代、复制算法、多线程收集;

缺点:进行垃圾收集时,必须暂停所有工作线程,直到完成;即会"Stop The World";

ParNew/Serial Old组合收集器运行示意图如下:

ParNew/Serial Old组合

 

 

22 Parallel Scavenge收集器

新生代、复制算法、多线程收集;

CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间;而Parallel Scavenge收集器的目标则是达一个可控制的吞吐量(Throughput);

23 Serial Old收集器

老年代、"标记-整理"算法(还有压缩,Mark-Sweep-Compact)、单线程收集;

24 Parallel Old收集器

老年代、"标记-整理"算法(还有压缩,Mark-Sweep-Compact)、多线程收集;

25 CMS收集器

老年代、"标记-清除"算法(不进行压缩操作,产生内存碎片)、并发收集、低停顿

CMS收集器运行示意图如下:

CMS收集器

 

 

整个过程中耗时最长的并发标记和并发清除都可以与用户线程一起工作;所以总体上说,CMS收集器的内存回收过程与用户线程一起并发执行;

CMS收集器3个明显的缺点:

  1. 对CPU资源非常敏感;
  2. 无法处理浮动垃圾,可能出现"Concurrent Mode Failure"失败;
  3. 产生大量内存碎片;

26 G1收集器

27 JVM如何进行对象内存分配

在堆上分配(JIT编译优化后可能在栈上分配),主要在新生代的Eden区中分配;

如果启用了本地线程分配缓冲,将线程优先在TLAB上分配;

少数情况下,可能直接分配在老年代中;

分配的细节取决于当前使用哪种垃圾收集器组合,以及JVM中内存相关参数设置;

28 哪些情况下对象内存分配会直接进入老年代

  1. 当Eden区没有足够空间进行分配时,JVM将发起一次Minor GC(新生代GC);Minor GC时,如果发现存活的对象无法全部放入Survivor空间,只好通过分配担保机制提前转移到老年代。
  2. 需要大量连续内存空间的Java大对象会直接进入老年代,容易提前触发老年代GC;
  3. 经过多次Minor GC,如果年龄达到一定程度,就晋升到老年代;
  4. 动态对象年龄判定:如果在Survivor空间中相同年龄的所有对象大小总和大于Survivor空间的一半,大于或等于该年龄的对象就可以直接进入老年代;

29 方法区中可回收哪些对象

  1. 废弃常量:与回收Java堆中对象非常类似;
  2. 无用的类:(1)该类所有实例都已经被回收(即Java椎中不存在该类的任何实例);(2)加载该类的ClassLoader已经被回收,也即通过引导程序加载器加载的类不能被回收;(3)该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法;

30 JDK HotSpot虚拟机方法区调整

  1. 在JDK7中,使用永久代(Permanent Generation)实现方法区,这样就可以不用专门实现方法区的内存管理,但这容易引起内存溢出问题;
  2. 在JDK8中,永久代已被删除,类元数据(Class Metadata)存储空间直接在本地内存中分配;



链接:https://juejin.im/post/5b04d7aef265da0ba063834f
 

具有PWM控制VSC-HVDC链路的IEEE30总线传输系统(Simulink仿真实现) 内容概要:本文构建了一个包含PWM控制VSC-HVDC链路的IEEE30节点电力传输系统,并基于Simulink平台完成了系统的建模仿真。该模型聚焦于高压直流输电(HVDC)技术在区域电网互联中的应用,采用电压源型换流器(VSC)与脉宽调制(PWM)技术实现高效、灵活的电能传输。研究重点在于分析VSC-HVDC链路在复杂多节点电网中对潮流分布、系统稳定性及电能质量的调控能力,特别关注其在区域电网互联、新能源大规模接入以及跨区域电力交换等场景下的动态响应特性与控制性能,为现代智能电网的发展提供技术支撑与仿真验证手段。; 适合人群:具备电力系统、电气工程或自动化等相关专业背景的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究VSC-HVDC在多节点电网(如IEEE30节点)中的建模与仿真方法;②分析PWM控制策略下HVDC链路对电网潮流分布、电压稳定性和故障穿越能力的影响;③为区域电网互联、新能源并网及智能电网调度等课题提供仿真基础和技术验证。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者在掌握电力电子技术和电力系统分析基础知识的前提下,结合仿真模型深入理解VSC-HVDC的工作原理与控制策略。在学习过程中,应着重关注模型参数设置、控制环路设计及仿真结果的分析,以达到理论与实践相结合的目的。 立即下载

相关推荐

基于KDE-CDF置信带的不确定综合能源系统鲁棒调度优化研究(Matlab代码实现)

内容概要:本研究针对不确定综合能源系统中的鲁棒调度优化问题,提出一种基于核密度估计-累积分布函数(KDE-CDF)置信带的建模方法,用以精确刻画风能、光伏及负荷等不确定性因素的非正态概率分布特征。通过构建KDE-CDF模型,能够有效捕捉实际运行中新能源出力与负荷需求的波动性与随机性,并在此基础上设计鲁棒优化调度框架,提升系统在不确定性环境下的运行可靠性与经济性。该方法结合Matlab编程实现,综合考虑系统运行成本、峰谷差、碳排放等多重目标,实现多维度协调优化。研究还探讨了与智能优化算法(如粒子群算法)相结合的应用路径,增强了模型的求解效率与工程实用性,为含多种储能装置、电转气设备及碳捕集系统的复杂综合能源系统提供了科学的调度决策支持。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员,以及从事综合能源系统规划、运行与调度工作的工程技术人员。; 使用场景及目标:①解决高比例可再生能源接入背景下综合能源系统调度中的不确定性建模难题;②提升调度方案在面对新能源强波动性时的鲁棒性与适应能力;③为融合多类型灵活性资源(如储能、电转气、碳捕集)的综合能源系统提供精细化、可落地的优化运行策略。; 阅读建议:建议读者在掌握概率统计、随机优化与电力系统运行基础知识的前提下,结合文中提供的Matlab代码进行实践操作,重点关注KDE-CDF置信带的构建流程及其在鲁棒优化模型中的嵌入机制,通过调整输入数据分布、参数设置与场景配置开展仿真对比实验,深入理解不确定性建模精度对调度决策质量的影响,进而掌握从数据驱动角度提升系统鲁棒性的关键技术路径。

技术问答集锦(17)JVM垃圾回收

1 判断对象是否可回收有几种方式? 引用计数算法 优点:实现简单,判定高效; 缺点:很难解决对象之间相互循环引用的问题; 可达性分析算法 通过一系列"GC Roots"对象作为起始点,开始向下搜索,当一个对象到GC Roots没有任何引用链相连时(从GC Roots到这个对象不可达),则证明该对象是不可用的; 优点:更加精确和严谨,可以分析出循环数据结构相互引用的情况; 缺点:实现比...

weixin_34081595的博客 123

【经验分享】使用Keil5烧录代码遇到的问题及解决方法

本文介绍了在使用Keil5烧录代码过程中可能遇到的常见问题,主要为编译错误和下载失败,并提供了解决方案和注意事项。通过本文中提供的具体解决方案和注意事项,希望能够帮助读者更加顺利地进行Keil5烧录代码操作,提高开发效率和成果实现。

qq_63195670的博客 1万+

JVM知识问答集锦

JVM知识问答集锦 JVM结构与机制 JVM类加载

huangshulang1234的博客 741

GEE影像重采样实战:从10米到500米,如何用.reduceResolution和.reproject统一尺度?

本文详细介绍了在Google Earth Engine (GEE)平台中,如何利用`.reduceResolution()`和`.reproject()`方法解决多源遥感影像的尺度统一难题。通过实战案例,从哨兵2号10米分辨率影像聚合至MODIS 500米尺度,阐述了聚合规则选择、参数配置及效果验证的全流程,为环境监测、农业分析等领域的跨尺度数据融合提供了关键方法。

weixin_29223603的博客 86

LightGBM之LGBMRegressor()参数详解以及调参

LightGBMLight Gradient Boosting Machine)是一种梯度提升框架,它使用决策树作为基学习器。LightGBM 可以说是在 XGBoost 上做的优化。LightGBM 为高效并行计算而生,它的 Light 体现在以下几个点上:更快的训练速度更低的内存使用支持单机多线程,多机并行计算,以及 GPU 训练能够处理大规模数据。

我走的每一步都算数 3753

技术问答集锦(三)

1 Java基础 1.1 编译型语言VS解释型语言 编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。因此效率比较高。比如 C 语言。 解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程序,每个语句都是执行的时候才...

weixin_34007906的博客 482

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

本文讲述英飞凌TC3xx的通用计时器GTM的架构。

无所适从的我的博客 4601

java 里如何实现逻辑返回值_☆技术问答集锦(五)

1 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别区别主要答两点:条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型;逻辑操作不会产生短路,而条件操作符会产生短路,短路是指当进行条件操作符运算时,前面条件如果确定了条件表达式值的话,就不在进行后面条件的判断。位逻辑运算通常是针对两个数而言,执行位操作;条件逻辑运算是针对两个条件表达式而言,执...

weixin_34217656的博客 424

【红绿灯识别】基于计算机视觉实现道路信号灯检测识别系统附Matlab代码

随着自动驾驶技术的快速发展,对道路交通信号灯的检测识别技术也提出了更高的要求。本文提出了一种基于计算机视觉的道路信号灯检测识别系统,该系统能够准确地检测和识别道路交通信号灯,并输出信号灯的颜色信息。该系统采用深度学习方法,利用卷积神经网络(CNN)对道路交通信号灯进行检测和识别。实验结果表明,该系统能够在复杂的环境中准确地检测和识别道路交通信号灯,具有较高的实用价值。道路交通信号灯是道路交通管理的重要组成部分,它能够有效地组织交通,提高道路通行效率,保障交通安全。

qq_59747472的博客 341

【C++实战(62)】从0到1:C++打造TCP网络通信实战指南

本文是 C++ 网络编程实战专栏第 62 篇,聚焦 TCP 客户端与服务端开发。先阐述 TCP 协议特点、核心 API 及阻塞与非阻塞 IO 区别,打牢基础;再详解 TCP 服务端初始化、客户端连接处理与数据收发,以及客户端初始化、异常处理和协议设计;最后通过简易聊天系统实战,介绍线程池应用、协议解析及稳定性测试,助力开发者掌握 TCP 网络编程实操技能。

邓邓子的博客 999

从0到1打造出海SaaS:独立开发者的技术选型与避坑复盘

SaaS是当今软件产品化的主流形态,独立开发者通过订阅模式实现可持续营收。构建一个完整的SaaS服务,关键在于打通从需求验证、技术选型到支付结算的全链路。借助Next.js、PostgreSQL、Prisma与Stripe等成熟工具,可以有效降低单人维护成本,让开发者聚焦核心业务逻辑。在垂直场景如视频字幕批量本地化中,通过异步任务队列与AI翻译接口,能够解决跨语言内容分发的真实痛点。出海市场为产品提供了全球化的用户基础,但支付接入、套餐定价与部署运维中的细节往往决定成败。作者第一个出海SaaS项目从0到1的

weixin_34208283的博客 449

从0入门LocoTrack:6倍加速的SLAM追踪新范式实战指南

传统点追踪方法(如CorrTracker、TAPIR)在处理大规模场景或实时任务时,要么精度不足,要么速度太慢。而LocoTrack通过“局部4D相关性”和“Transformer全局关联”的创新设计,实现了精度与速度的双重突破速度:比现有SOTA方法快6倍,吞吐量高达数万点/秒;精度:在Kinetics、DAVIS等数据集上,定位误差显著低于传统方法;鲁棒性:能应对低纹理、动态场景等复杂环境,这是传统方法的“噩梦场景”。

m0_71589036的博客 95

面试/笔试第五弹 —— Java面试问题集锦(上篇)

本文对面试过程中经常会被问到的一些关于Java基础问题进行了梳理和总结,包括 JVM虚拟机、常用容器、设计原则与模式以及Java语言特性等基础知识点,一方面方便自己温故知新,另一方面也希望为找工作的同学们提供一个复习参考。考虑到篇幅太长,现将 《Java面试问题集锦》 一文分为上下两篇:《面试/笔试第五弹 —— Java面试问题集锦(上篇)》和《面试/笔试第五弹 —— Java面试问题集锦(下篇)》。

Rico's Blogs 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

技术问答集锦(二)

4 如何通过JDK命令,分析排查死锁、死循环? top 命令:显示当前的活动进程,默认它是按消耗 CPU 的厉害程度进行排序,每5秒钟刷新一次列表,你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键。 命令:top -Hp pid 可以实时的跟踪并获取指定进程中最耗cpu的线程。再用 jstack方法提取到对应的线程堆栈信息。 jps 命令: jps用来查看JVM里面所...

weixin_33739523的博客 200

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java问答社区源码,不愧是大佬

阿里巴巴一面 自我介绍这个就不说了,开头必问的 说一下StringBuilder 和 StringBuffer Spring bean加载,实例化的过程 Spring AOP源码看过吗 java内存模型说一下 如果给你一个map,里面有很多很多对象,那么这个map存放在哪 了解GC算法吗? 说一下CMS垃圾回收器 B+树和B树的区别? haspmap底层讲一讲 ConcurrentHashMap的底层实现? CAS是硬件实现还是软件实现? volatile是锁吗? 淘宝和京东的区别,你觉得是什么? 项目

m0_58590364的博客 185

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LiuJuan20260223Zimage生成技术面试题与答案详解:以Java八股文为例

本文介绍了如何在星图GPU平台上自动化部署LiuJuan20260223Zimage镜像,以高效生成Java技术面试题与答案。该镜像能根据输入的关键词(如JVM、HashMap),智能生成结构化的面试题并提供深度解析,帮助开发者系统性地准备技术面试,提升复习效率。

weixin_42471823的博客 31

android mappedbytebuffer 并发写_2019.07 Android 面试真题集锦

本文作者作者:nanchen本文转载自 nanchen 公众号。南尘也是我为数不多的私下交流的朋友,最近他刚好面试了一波大厂,最终也是功夫不负有心人,实现了自己的愿望,入职了心仪的公司,给大家分享一波面试经验。虽然他嘴里说没准备,实际上刷了不少题,而且每天都在写技术原创博客,对玩 Android 的问答参与度也非常高,所以可以理解为长期保持着随时可以面试的状态。而且私下交流比较多的同学,...

weixin_31486289的博客 217

超全面的大型IT公司Java开发岗面试题集锦

一、Java基础 1.String类为什么是final的。 2.HashMap的源码,实现原理,底层结构。 3.说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。 4.描述一下ArrayList和LinkedList各自实现和区别 5.Java中的队列都有哪些,有什么区别。 6.反射中,Class.forName和classloader的区别 7.Ja...

weixin_39047791的博客 295

阿里面试总结

1.如何防止网络抖动产生的重复建单?答:原因:你这种情况应该是客户端请求发过去了,服务器写到数据库了,返回完成状态的时候网断了,这时客户端没有收到反馈以为订单没有生成,再点击下单,这时网络好了,结果生成了两个。解决办法:(1).待支付订单如果正在支付,就把这边订单锁定,变更为一个中间状态,这样就不会重复去支付这笔订单了(前端将提交按钮第一次点击提交时变成disable状态,直到后台返回状态后提交按...

zhx86890057的博客 382

2026年Java面试核心考点与云原生趋势解析

Java作为企业级开发的主流语言,其技术生态持续演进。从JVM调优原理到Spring框架设计,开发者需要深入理解内存管理、并发编程等底层机制。随着云原生成为技术趋势,容器化部署、微服务架构等技术价值凸显,Java在K8s环境下的性能优化、Serverless适配等成为工程实践重点。本文聚焦2026年大厂面试高频考点,涵盖JVM深度优化(如ZGC调优)、Spring 6响应式编程等热词,并解析云原生监控、AI辅助开发等新兴场景,帮助开发者构建符合现代架构要求的技术体系。

cuanji3287的博客 336

面经不是题库:程序员面试的正确备战方式

技术面试是程序员求职的关键环节,而面经常被误认为“题库”,实际却是他人面试经历的回忆录,存在主观性、片面性和时效性。本文从面经的三种类型出发,剖析其背后的原理,指出单纯刷题无法建立扎实的知识体系,容易在面试官的深度追问中暴露短板。真正高效的做法是以面经为线索,结合算法、系统设计、项目深挖等核心能力,构建考点体系图,并通过复盘与模拟演练将知识内化。文章提供了可落地的四周复习计划,帮助求职者在有限时间内从“背答案”转向“建体系”,全面提升技术面试的通过率,最终获得理想offer。

chubaisheng8627的博客 497
上一篇: 全面了解mysql锁机制(InnoDB)与问题排查
下一篇: 创建多线程的第三种方法
曾梦想仗剑闯天涯
博客等级 码龄11年 9725粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值