面试知识点——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 知识点进行复习和学习一番,大 ...
随机推荐
- spring cloud 使用ribbon简单处理客户端负载均衡
假如我们的multiple服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改 ...
- 学习REST
REST:Representational State Transfer,资源的表现状态转换.可以理解为对资源的操作. 1. 资源 资源就是业务对象,如图片.文本.歌曲或者客户.交易等.这些是用户 ...
- tensorflow:验证码的识别(下)
上两篇详细的说明了验证码的识别,不过我们采用的是方法二,下面采用方法一.注意和方法二的区别. 验证码识别方法一: 把标签转为向量,向量长度为40.(4位数字验证码) 验证码的生成和tf.record的 ...
- vsftp日志xferlog格式分析
vsftp日志xferlog格式分析 [日期:2014-06-25] 来源:Linux社区 作者:Linux [字体:大 中 小] 1.开始vsftp记录日志.修改/etc/vsftpd/vsf ...
- expect 安装 salt 客户端
#!/bin/bash for i in $(cat ./host.txt) do echo $i > ./tmp.txt HOSTNAME=$(cut -d ':' -f1 ./tmp.txt ...
- Android Https双向认证 + GRPC
keywords:android https 双向认证android GRPC https 双向认证 ManagedChannel channel = OkHttpChannelBuilder.for ...
- java运算符-算数、赋值、比较
1.算术运算符 运算符是用来计算数据的符号.数据可以是常量,也可以是变量.被运算符操作的数我们称为操作数. 运算符 运算规则 范例 结果 + 正号 +3 3 + 加 2+3 5 + 连接字符串 “中” ...
- 求自然数幂和 B - The Sum of the k-th Powers CodeForces - 622F
题解: 很多方法 斯特林数推导略麻烦但是不依赖于模数 代码: 拉格朗日插值 由于可以证明这是个K+1次多项式于是可以直接用插值 #include <bits/stdc++.h> using ...
- Principles and strategies for mathematics study
Make mathematics study a habit with dogged perseverance Don't build mansion on top of loose sand. Co ...
- HTML5拖放牛刀小试
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...