Java面试细节整理(不断更新)

1. 内存模型

1.1 对象缓存

public static void main(String[] args) {
    Integer a = 127, b = 127, c = -128, d = -128;
    Integer e = 128, f = 128, g = -129, h = -129;
    System.out.println(a == b); // true
    System.out.println(c == d); // true
    System.out.println(e == f); // false
    System.out.println(g == h); // false
}

  JVM对基本类型(boolean, float, double除外)进行了缓存,Integer默认范围是-128~127并可通过JVM参数修改上限,由于Integer是final类,故缓存范围内的Integer自动装箱时不产生新对象。

2. 集合框架

2.1 方法 List<E> subList(int fromIndex, int toIndex)

public static void main(String[] args) {
    List<Integer> arrayList = new ArrayList<Integer>(10);
    List<Integer> linkedList = new LinkedList<Integer>();
    for (int i = 0; i < 10; i++) {
        arrayList.add(i);
        linkedList.add(i);
    }
    List<Integer> subArrayList = arrayList.subList(1, 4);
    List<Integer> subLinkedList = arrayList.subList(1, 4);
    System.out.println(subArrayList.getClass()); // class java.util.ArrayList$SubList
    System.out.println(subLinkedList.getClass()); // class java.util.ArrayList$SubList
    arrayList = (ArrayList<Integer>) subArrayList; // throws java.lang.ClassCastException
}

  List接口声明了subList方法,ArrayList与LinkedList中subList返回ArrayList中非静态内部内SubList作为原List的视图,对SubList的修改会造成原List的变化。

原文地址:https://www.cnblogs.com/miluroe/p/10886854.html

时间: 2024-07-30 07:25:52

Java面试细节整理(不断更新)的相关文章

【Java基础】Java面试题目整理与解说(二)

1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的差别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

【Java基础】Java面试题目整理与讲解(二)

1.Collection 和 Collections 的区别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的区别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

Java面试题目整理

一.引言:本文主要整理遇到的面试题目,以及提供自己的见解,将会持续更新,如有问题,可评论交流,一起进步. 二.问题及我的见解: 1. n个结点可以组合成多少棵不同的二叉树? 答:2^n-n棵 2. 什么是bean? 答: bean本质上就是可复用的类,比如在spring中的bean就是表示组件的意思. 3. String.StringBuffer.StringBuilder的有什么区别? 答:String是内容和长度固定的类 StringBuffer是内容和长度可变的类,并且线程安全 Strin

Java面试要点整理

1.      Java的GC的理解 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对 JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerv

java面试问题整理-垃圾回收

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址.大小以及使用情况.通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象,通过这种方式确定哪些对象是"可达的", 哪些对象是"不可达的".但是,为了保证GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定.例如,对于采用什么类型的回收算法.什么时候进行回收等重要问题都没有明确的规定.因此,不同的JVM的实现者往 往有不同的实现算法.(释放对象时,只要将对象所有引用赋值为

CSS面试细节整理(一)

最近面试时候发现自己最熟悉的css确实开发中好多细节没注意到,为了防止在栽跟头,打算从头到底捋一遍咯 语法部分: 1.css几种选择器的写法 (1)h1 em {color:red;} (后代选择器) (2)h1 > strong {color:red;} (子元素选择器) (3)table.company td > p(结合后代选择器和子选择器) (4)h1 + p {margin-top:50px;} (相邻兄弟选择器) 例子:li + li {font-weight:bold;} 会把列

JAVA面试知识整理

一.Java Web系统框架的设计 为满足银行日常业务需要,如何设计满足稳定性与及时性的服务框架? 1.MVC编程模式 视图View:JSP   +   控制器Controler:Servlet   +    模型Model:Javabean 缺陷:JSP嵌入JAVA代码,页面结构混乱:C和M耦合度高,程序复用性差 2.新工具的改进 表示层:Struts   +   业务层:Spring    +    持久层:Hibernate 3.不同框架实现MVC的方式 a) Servlet: b) Sp

CSS面试细节整理(二)

5.css盒模型: CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式 原文地址:https://www.cnblogs.com/menghan94/p/10436460.html

网上整理的Java面试

1:static关键字什么意思?Java中是否可以覆盖(override)一个private或者static的方法? static关键字表示一个成员变量和成员方法可以在没有类的实例变量情况下被访问.Java中的static方法不能被覆盖,因为方法的覆盖是运行时动态绑定的,而static方法是编译时静态绑定的.static方法跟类的实例不相关的. 2:是否可以在static环境中访问非static变量? static变量是属于类的.当类被虚拟机加载时,会对static变量进行初始化,但是此时非st