您的位置:首页 > 编程语言 > Java开发

Java基础题(待定)

2017-02-12 12:53 141 查看
1. String类为什么是final的。

主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。


2. HashMap的源码,实现原理,底层结构。

HashMap和Hashtable的底层实现都是数组+链表结构实现的,


3. 说说你知道的几个Java集合类:list、set、queue、map实现类

List是一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。
set:类似于一个罐子。放进去的对象没有顺序,也不能包含重复元素。
Queue:用于模拟"队列"的先进先出的数据结构
Map:用于保存具有"映射关系"的数据


4. 描述一下ArrayList和LinkedList各自实现和区别

LinkedList是双向链表,插入数据时十分方便

ArrayList是动态数组,基于索引访问,速度快

Vector非常类似ArrayList,但是Vector是同步的

Stack继承自Vector,实现一个后进先出的堆栈。


5. Java中的队列都有哪些,有什么区别。

队列是一种特殊的线性表,
它只允许在表的前端进行删除操作,而在表的后端(rear)进行插入操作,


6. 反射中,Class.forName和classloader的区别

java中class.forName和classLoader都可用来对类进行加载。

class.forName除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。

而classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。


Java7、Java8的新特性

8. Java数组和链表两种结构的操作效率

数组:
数组就像一个班级一样,一个班多少人,每个人的学号啥的都是确定的啦,根据学号,喊一个学号就会有个人答应,

链表:
链表就像一个铁链,一环扣一环,不能跳过一个,直接去找下一个,必须挨个找,根据节点的next的指向,查找,要查找就得一个个查。


Java内存泄露的问题

内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。

1像HashMap、ArrayList的集合对象,当它们被声明为static时,它们的生命周期就会和应用程序一样长。

2.事件监听和回调函数。当一个监听器在使用的时候被注册,但不再使用之后却未被反注册。

3.通常一些成员变量引用其他对象,初始化的时候需要置空。


10. string、stringbuilder、stringbuffer区别

string:final是不可变长度字符串,使用字符数组保存字符串
stringbuilder、stringbuffer是可变长度的字符串,也使用字符数组保存字符串
stringbuilder、stringbuffer都有一个抽象的公共的父类
string,stringbuffer是线程安全的,stringbuilder是非线程安全的


11. hashtable和hashmap的区别

hashtable不允许key和value为null,线程安全的
hashmap允许key和value为null,非线程安全的


13 .异常的结构,运行时异常和非运行时异常,各举个例子

Exception异常是程序运行时发生的错误
Error是指java虚拟机相关的问题,如系统崩溃,虚拟机出错。一般无法捕获
4.运行时异常和非运行时异常

(1)运行时异常都是不检查异常,一般是由程序逻辑错误引起的,

(2)非运行时异常是RuntimeException以外的异常,如 IOException、SQLException 等。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch并处理,否则程序就不能编译通过。

常见 RuntimeException :

空指针,参数不合法,数学异常,数组下标越界,类型强转异常


String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间用 == 比较的结果

String 类的常用方法

16. Java 的引用类型有哪几种

4种, 对象的强、软、弱和虚引用4种


17. 抽象类和接口的区别

答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。

抽象类中可以定义构造器,可以有抽象方法和具体方法,定义成员变量类型可以是各种修饰符

接口中定义的方法全部都是抽象方法。接口中定义的成员变量必须是public,实际上都是常量。


java的基础类型和字节大小。

21. Hash冲突怎么办?哪些解决散列冲突的方法?

1.开发地址法2.拉链法3.多重散列


访问修饰符public,private,protected,以及不写(默认)时的区别?

修饰符 当前类 同 包 子 类 其他包

public √ √ √ √

protected √ √ √ ×

default √ √ × ×

private √ × × ×

24. hashCode() 与 equals() 生成算法、方法怎么重写

equals表示的两个变量是否是对同一个对象的引用
==操作比较的是两个变量的值是否相等
hashcode()方法约定声明相等对象必须具有相等的哈希码


“`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: