`

JAVA 经典面试题

阅读更多
1.
String 与 StringBuffer 的区别, 哪个效率高?

通常情况下, String 是不可变的, 而StringBuffer是可以动态增长的.但String拼接字符串时,编译器会做优化, 因此, 性能不会低.
String 与 StringBuffer 都是使用char[] value存储值, 但初始容量不同.因此在编译器不做优化的情况且 StringBuffer 显式指定一个合适的初始值, 避免动态增长, 效率肯定高于 String.
String 与 StringBuffer的动态增长时, 都是调用的System.arrayCopy(). 因此效率是一致的.

结论: StringBuffer 必须给定一个显式的足够大的容量值, 来避免动态增长, 从而提高效率.

2.
各种排序算法在JAVA中的实现:
快速与归并排序:
Arrays.sort(Object[] , Comparator)

冒泡排序: j=length-1, 交换j, j-1
选择排序: j=length-1, 交换i, j

3.
JAVA 集合类:
Collection
├List : 有序, 可以重复
│├LinkedList : 非同步, 允许null元素, 适合修改
│├ArrayList :非同步, 允许null元素, 适合查询
│├CopyOnWriteArrayList : 写锁
│└Vector : 同步, 不允许null元素
│ └Stack : 后进先出
├Queue : 先进先出(PriorityBlockingQueue 比较特殊)
└Set : 无序, 不重复

Map
├Hashtable 同步, 不允许null元素
├HashMap 非同步, 允许null元素
└WeakHashMap 非同步, 弱引用

Array
存储集合对象内部

结论:
单线程下优先使用更加高效的非同步集合类.
集合类设置初始容量与加载因子.
根据功能选择合适的集合类.

4
分页
在分页算法中,影响查询速度的关键因素在于返回数据集的大小.

5
为什么重写equals,必须重写hashcode?
JAVA语言中有一条原则:
同一对象的hashcode必须保持相同.
提高HashMap的性能, 如果 HashMap中 不同对象的 hashcode 相同, 会造成hashcode冲突, 降低效率.
Set 对象会根据 hashcode 来检测重复元素, 如果同一对象的hashcode不同,会造成元素重复.

6
为什么hashcode冲突, 会降低效率?
HashMap 通过 Entry[] table 数组保存条目, 默认为16, 相同hashcode 的条目会添加到条目链表, 这种链表是单向的.
Entry[] table

Entry<K, V> next; // 指向下一个相同 hashcode 的条目

key 的 hashcode 决定条目在table的索引.
条目的 hashcode 通过 key.hashcode ^ value.hashcode.

如果条目的hashcode 冲突过多, 导致 条目的单向链表过长, 随机访问时效率低. 因此降低条目单向链表的长度可以提高效率.












分享到:
评论

相关推荐

    java经典面试题

    ### Java经典面试题知识点 #### Java数据结构容器 - **核心知识点**:Java集合框架,包括List、Set、Map等接口及其实现类。List接口代表有序的集合,例如ArrayList和LinkedList;Set接口代表不允许重复元素的集合,...

    120个Java经典面试题和答案

    Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案Java经典面试题和答案...

    10万字208道Java经典面试题总结(附答案).pdf

    这份10万字的PDF文档包含了208道Java经典面试题,旨在帮助开发者们系统地复习和提升自己的技能,以应对包括阿里、腾讯、字节跳动、京东等知名互联网公司的面试。以下是部分题目及其涉及的知识点: 1. **JDK和JRE的...

    Java经典面试试题

    Java经典面试试题

    Java经典面试题.pdf.rar

    以下是对"Java经典面试题.pdf"中可能包含的一些关键知识点的详细解释: 1. **基础语法**:面试中可能会考察Java的基础概念,如数据类型(基本类型与引用类型)、变量、运算符、流程控制语句(if-else、switch、for...

    java 经典面试题

    ### Java经典面试题详解 #### 1. 面向对象的特征有哪些方面? 面向对象编程的核心特征主要有四个:封装、继承、多态以及抽象。 - **抽象**:抽象是面向对象编程的基础之一,它主要关注对象的关键特性和行为,忽略...

    Java经典面试题大全

    资源名称:Java经典面试题大全资源目录:【】!good2011-4-27-tarena【】Java面试题【】java面试题及答案(基础题122道,代码题19道)【】java面试题大全-葵花宝典-培训班总结出现率比较高的面试题【】华为Java面试题...

    200个Java经典面试题总结附带答案.docx

    Java经典面试题总结附带答案 以下是从给定文件中生成的相关知识点: Java基础 1. JDK 和 JRE 的区别是什么?(JDK 是 Java Development Kit,JRE 是 Java Runtime Environment) 2. `==` 和 `equals` 的区别是...

    高级Java经典面试题2019

    本文总结了《高级Java经典面试题2019》中关于并发编程、JVM和Spring框架等方面的重要知识点。通过深入理解这些概念和技术,可以帮助开发者更好地掌握Java核心技术,提高面试竞争力。希望本文能为读者提供有益的帮助...

    Java 经典面试题

    本篇将详细解析"Java经典面试题"中的关键知识点,帮助求职者充分准备,顺利通过面试。 1. **Java基础** - **数据类型**:Java有两大类数据类型——基本数据类型(如int、char)和引用数据类型(如类、接口、数组)...

    Java经典面试题

    【Java经典面试题】是针对Java开发者准备的面试题集,涵盖了SSH框架技术、JQUERY、MyBatis等热门技术,以及基础算法和思维能力测试。以下是对这些知识点的详细阐述: 1. **循环求和**:面试题1中提到了求1到100的和...

Global site tag (gtag.js) - Google Analytics