面试中的一些问题——JAVA(二)
来源:互联网 发布:网络话费充值卡怎么用 编辑:程序博客网 时间:2024/05/22 06:36
11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码
A.Hashmap本质是数组加链表。根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面。HashMap不是线程安全的。
值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。 Map map = Collections.synchronizedMap(new HashMap());
B.ConcurrentHashMap:在hashMap的基础上,ConcurrentHashMap将数据分为多个segment(加入分段锁),默认16个(concurrency level),然后每次操作对一个segment加锁,避免多线程锁的几率,提高并发效率(默认提高16倍)。
HashMap底层是数组+链表的结构,当发生hash冲突,在该位置存储的就是一个链表了。
HashMap底层源码:http://www.bubuko.com/infodetail-1161252.html。
12.TreeMap、HashMap、LindedHashMap的区别
HashMap,LinkedHashMap,TreeMap都属于Map
Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。
13. Collection包结构,与Collections的区别
14. try catch finally,try里有return,finally还执行么?
15. Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况
Java将可抛出(Throwable)的结构分为三种类型: 被检查的异常(Checked Exception),运行时异常(RuntimeException)和错误(Error)。
对于上面的3种结构,我们在抛出异常或错误时,到底该哪一种?《Effective Java》中给出的建议是: 对于可以恢复的条件使用被检查异常,对于程序错误使用运行时异常。
16. Java面向对象的三个特征与含义
17. Override和Overload的含义去区别
Overload(重载):一个类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。
返回值类型可以相同也可以不相同,无法以返回型别作为重载函数的区分标准。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。子类函数的访问修饰权限不能低于父类的。
18. Interface与abstract类的区别
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
19. Static class 与non static class的区别
内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。
非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。
一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。
static与non-static是对立的。static应当(注意是应当)使用类名来引用。而non-static必须(是必须)使用对象实例名来引用。
20. java多态的实现原理(个人觉得和Java后期绑定有关)
21. 实现多线程的两种方法:Thread与Runable
A.继承Thread
定义类继承Thread
复写Tread类中的run方法
调用线程的start方法
B.实现Runnable接口(避免了单继承的局限性,推荐使用这种方法)
定义类实现Runnable接口
覆盖Runnable接口中的run方法
通过Thread类建立线程对象,将Runnable接口的子类对象作为实际参数传递给Thread
调用线程的start方法
- 面试中的一些问题——JAVA(二)
- 面试中的一些问题——JAVA(一)
- 面试中的一些问题——JAVA(三)
- Java面试中的一些小问题
- 面试中的一些问题
- 一些面试基本知识(JAVA篇二)
- java一些面试问题
- java一些面试问题
- JSP面试中的一些问题
- java面试的一些问题(北京)
- Java面试问题和答案(二)
- Java常见面试问题(二)
- java面试的一些问题
- [Java面试七]Mybatis总结以及在面试中的一些问题.
- [Java面试四]Strust2总结及在面试中的一些问题.
- [Java面试五]Spring总结以及在面试中的一些问题.
- [Java面试六]SpringMVC总结以及在面试中的一些问题.
- [Java面试八]Hibernate总结以及在面试中的一些问题.
- 用cocos-Android-1做魔塔游戏 地图实现
- throws IOException的意义
- HDFS上传下载小例子
- Android登录界面记住帐号密码实现(SharedPreferences)
- 获取被人电话本的小恶意程序
- 面试中的一些问题——JAVA(二)
- POJ3620 Avoid The Lakes
- IO转换流
- Python基本数据类型
- android的NDK和java进行本地socket通信
- 不容易系列之一
- Problem A
- BZOJ3876: [Ahoi2014]支线剧情
- 视频编解码学习之一:理论基础