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

java高频面试题(2024最新)

HashMap使用哪些方法来解决哈希冲突?

  1. 使用链地址法(使用散列表)来链接拥有相同hash值的数据;
  2. 使用2次扰动函数(hash函数)来降低哈希冲突的概率,使得数据分布更平均;
  3. 引入红黑树进一步降低遍历的时间复杂度,使得遍历更快;

Java内存模型

​ 堆->用来存放对象,数组等信息;方法区->用来存放常量,静态变量,类信息等;虚拟机栈->用来存放局部变量等;本地方法栈->用来供程序调用native方法使用;程序计数器->用来记录程序运行到哪一步。

类加载机制

​ 加载-链接-初始化,链接又包含验证,准备,解析

​ 加载:通过全类名获取该类的二进制字节流,将字节流代表的静态存储数据结构转化为方法区中的运行时数据结构,在内存中生成一个代表该类的Class对象作为方法区这些数据的访问入口。

​ 验证:文件格式验证==》验证字节流是否符合Class文件格式规范。元数据验证==》对字节码描述的信息进行语义分析。字节码验证==》通过数据流和控制流分析,确定程序语义是合法的。符号引用验证==》确保解析动作能正确执行

​ 准备:是正式为类变量分配内存并设置类变量初始值的,这些内存都将在方法区中分配。注意:这时候分配的只包括类变量(static),不包括实例变量。初始值通常情况下是默认的零值。

​ 解析:就是虚拟机将常量池中的符号引用替换为直接引用的过程。也就是得到类,方法或字段在内存中的偏移量或指针

​ 初始化:是执行类构造器()方法的过程

更多更全面试题尽在:

https://pan.quark.cn/s/0700b37c6577

在这里插入图片描述

内存泄漏和内存溢出

内存泄漏只分配出去的内存回收不回来了
内存溢出指的是内存不够用,类如OOM


http://www.mrgr.cn/news/29839.html

相关文章:

  • 数据结构——快速排序
  • linux虚拟机无法使用yum在线拉取
  • 7.4、实验四:RIPv2 认证和触发式更新
  • leetcode268 丢失的数字
  • 数据结构Python版
  • go语言使用总结(持续更新)
  • MySQL高阶1831-每天的最大交易
  • 视频转文字工具:开启视频内容深度挖掘的钥匙
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • [语言月赛 202408] 因友情而终结
  • linux网络编程2
  • Ansible——Playbook基本功能
  • 深入理解Go语言中的并发封闭与for-select循环模式
  • Spring 源码解读:手动实现Spring的资源管理机制
  • 大数相乘,大数相加
  • 上市公司-客户ESG数据集(dta+xlsx+参考文献)(2009-2023年)
  • 城市级河流三维处理及展示的一些技术
  • 【七篇文章从零速通transformer】01 从零开始解密神经网络:深度学习基础全解析
  • 数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)
  • npm包管理工具
  • python运行时错误:找不到fbgemm.dll
  • 828华为云征文|Flexus云服务器X实例部署宝塔运维面板
  • 【kafka-03】springboot整合kafka以及核心参数详解
  • C++——求3个数中最大的数(分别考虑整数、双精度数、长整数数的情况),用函数重载方法。
  • leetcode01——27. 移除元素(双指针)、977. 有序数组的平方(双指针)、209. 长度最小的子数组(双指针/滑动窗口)
  • WINDOWS AGENTARENA:EVALUATING MULTI-MODAL OS AGENTS AT SCALE论文学习