面试知识点——Java
Java容器
hashmap实现原理
存储结构是链表数组,数组的每个元素都是链表(为了解决冲突,还可以将链表变成红黑树进一步降低复杂度)。
put方法:根据Key类的hashCode函数得到散列码(这就要求Key类实现hashCode函数),根据散列码找到数组里对应的位置(散列码到下标的转换有不同方法),查找是否已经有Key(这就要求Key类实现equals函数),如果碰撞导致链表过长(大于等于TREEIFY_THRESHOLD),就把链表转换成红黑树(此时要求Key实现Comparable);
get方法:思路同上,根据hashcode函数得到散列码,查找数组相应位置
如何设计好的hashcode函数?
hash=C0;
hash=C1 * hash + field.hashcode;
//C0、C1为常数
负载因子(过大,过小),再散列
java多线程
jvm内存模型
java 垃圾回收机制
对象存活状态检查
- 引用计数法(对象添加引用计数器,优点:简单高效,缺点:对象之间循环引用)
- 可达性分析算法
垃圾收集算法
对象的判定到回收之间还有两次标记,如果对象没有实现finalize方法或者已经执行过finalize方法,则直接回收,否则对象进入待回收队列(同一对象的finalize方法最多被系统调用一次)
- 标记-清除算法
- 标记-整理算法
- 复制算法
- 分代算法
新生代由于存活率较低,适合复制算法,老年代由于存活率高,适合标记清除或者标记整理算法
垃圾收集器
垃圾收集器之间的组合
Serial:新生代,单线程,复制算法收集内存,Stop the world
ParNew:新生代,复制算法,Serial的多线程版本
Parallel Scanvenge:新生代,复制算法,多线程,注重吞吐量(用户时间/总时间)
Serail Old:老年代,单线程,标记-整理算法
Parallel Old:PS的老年代版本,多线程,标记-整理算法
CMS(Concurrent Mark Sweep):老年代,多线程,标记-清除算法,四个步骤:初始标记、并发标记、重新标记、并发清除。各个阶段的作用,CMS的缺点
G1:多线程,内存分区,新生代与老年代不再物理隔离,都由一组区域组成。G1的特点。G1维护优先列表,优先回收价值大的区域。步骤:初始标记,并发标记,最终标记,筛选回收。各个阶段的作用
内存分配与回收策略
内存分为新生代和老年代,新生代分为一块较大的eden区和两块较小的survivor区,eden区和其中一块survivor区时可用的,另一块survivor区用于复制算法放置回收的对象。
对象优先分配在新生代,如果对象过大或者年龄达到条件即可晋升到老年代。
新生代对象内存分配过程:首先查看eden区空间是否够用,不够用则进行一次minor gc到survivor区,如果survivor区也不够用,通过分配担保机制转移到老年代。
java nio
面试知识点——Java的更多相关文章
- 知名互联网公司校招 Java 开发岗面试知识点解析
天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...
- Java 面试知识点解析(一)——基础知识篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(二)——高并发编程篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(三)——JVM篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(四)——版本特性篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(五)——网络协议篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java开发岗面试知识点解析
本文作者参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 高并发编 ...
- Java 面试知识点解析(六)——数据库篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(七)——Web篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
随机推荐
- echarts + timeline 显示多个options
var option = { //timeline基本配置都写在baseoption 中 baseOption: { timeline: { //loop: false, axisType: 'cat ...
- Centos7.4上Apache(http)编译安装
前提:1.这个centos操作系统能上网 2.yum 安装apr,apr-util,zlib-devel,groupinstall Development Tools,gcc 1.在apache的 ...
- 集腋成裘-01 sublime常用的快捷键
sublime使用的快捷键 1:Html 结构代码 : Html:xt + tab键 2:补全标签代码 : tab键 3:快速复制一行代码 : Ctrl+shift+d 4:快速选中一行代码 : ...
- Git基础(三) 跟踪文件
检查当前文件状态 git status 跟踪新文件 git add README 状态简览 git status -s 或 git status --short 忽略文件 创建一个名为.gitigno ...
- rsa证书ssh登陆服务器
好久不用,又生疏了. 今晚实操了一下,作一个记录. 使用rsa的密钥对登陆linux服务器,主要是为了安全. 这种证书级别的登陆,比最复杂的root用户名和帐号的安全性都要高一个等级. 至少服务器不会 ...
- jquery.pjax 单页面, 无刷新打开页面.
介绍: pushState+ajax=pjax 工作原理: 什么是pjax? 现在很多网站(facebook, twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳 ...
- [转]sqlplus /nolog 出错解决 SP2-0667: Message file sp1<lang>.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
http://techxploration.blogspot.com/2012/01/resolving-sp2-0750-you-may-need-to-set.html Resolving SP2 ...
- VMware安装操作系统提示 " Intel VT-x 处于禁用状态"解决方法
VMWARE WORKSTATION 在安装64为操作系统(kali)报错,报错内容为:“已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. 此主机支持 Intel VT- ...
- Json传递数据两种方式(json大全)
1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...
- sql重点题
--https://blog.csdn.net/weixin_39718665/article/details/78161013/*1.用系统管理员登陆,我这里用户名是system,密码是manage ...