java面试题集锦

转载 2015年07月09日 21:20:25

参考地址:http://blog.csdn.net/jackfrued/article/details/17403101
1、TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

答:TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象比较实现Comparable接口以实现元素的比较;第二种不强制性的要求容器中的元素必须可比较,但是要求传入第二个参数,参数是Comparator接口的子类型(需要重写compare方法实现元素的比较),相当于一个临时定义的排序规则,其实就是是通过接口注入比较元素大小的算法,也是对回调模式的应用。
如:
Collections.sort(list, new Comparator () {
@Override
public int compare(Student o1, Student o2) {
return o1.getName().compareTo(o2.getName()); // 比较学生姓名
}
});
2、sleep()和yield()有什么区别?
① sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会;
② 线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;
③ sleep()方法声明抛出InterruptedException,而yield()方法没有声明任何异常;
④ sleep()方法比yield()方法(跟操作系统相关)具有更好的可移植性。
3、编写多线程程序有几种实现方式?
答:Java 5以前实现多线程有两种实现方法:一种是继承Thread类;另一种是实现Runnable接口。两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活。
补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的call方法可以在线程执行结束时产生一个返回值。
4、如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。

public class Test03 {
public static void main(String[] args) {
    Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
    System.out.println(f1 == f2);
    System.out.println(f3 == f4);
}
}

5、实现高质量的equals方法的诀窍包括:1. 使用==操作符检查”参数是否为这个对象的引用”;2. 使用instanceof操作符检查”参数是否为正确的类型”;3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;5. 重写equals时总是要重写hashCode;6. 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。
6、抽象类(abstract class)和接口(interface)有什么异同?
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
7、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
8、一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?
答:可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。
9、Java 中的final关键字有哪些用法?
答:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。
10、创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

java面试题集锦(一)

(1):equals和==的区别         equals是用于比较两个实例所指向的内存空间里面的值是否相等;         ==用于两个实例是否指向同一内存空间; (2):String与Str...
  • hzw19920329
  • hzw19920329
  • 2016年07月19日 22:55
  • 2153

最新Android面试题集锦

最近因为某些原因想换工作,整理一下个人觉得面试中还比较值得记录的一些题目,给需要找这方面工作的人一个借鉴。 以下基本只记录题目或者大概答案,如果大家有比较详细的解答或者比较好的面试题木,希望各位看到...
  • huiguixian
  • huiguixian
  • 2014年08月28日 20:38
  • 3770

历年阿里面试题汇总(2017年不断更新中)

Volatile的特征:A、原子性 B、可见性Volatile的内存语义:当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。当读一个volatile变量时,JM...
  • sinat_35512245
  • sinat_35512245
  • 2017年03月06日 09:15
  • 20237

海量数据处理面试题与Bit-map详解

同时,程序员编程艺术系列将重新开始创作,第十一章以后的部分题目来源将取自下文中的17道海量数据处理的面试题。因为,我们觉得,下文的每一道面试题都值得重新思考,重新深究与学习。再者,编程艺术系列的前十章...
  • wenyusuran
  • wenyusuran
  • 2014年07月07日 11:48
  • 895

spring基础知识汇总及常见面试题目总结

Spring简介 spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发...
  • sinsangyimeng
  • sinsangyimeng
  • 2016年05月15日 12:44
  • 2684

阿里Java面试题,你的水准会不会被刷掉?

阿里Java面试题,你的水准会不会被刷掉?
  • weixin_40876133
  • weixin_40876133
  • 2017年11月03日 13:58
  • 239

最全的Spring面试题和答案

1、什么是Spring框架?Spring框架有哪些主要模块?        Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中...
  • u011225629
  • u011225629
  • 2015年08月26日 21:36
  • 6890

Android最精彩,最新的面试题。个人总结

Java基础:  1、内存泄露的原因:  资源对象没关闭。  如Cursor、File等资源。他们会在finalize中关闭,但这样效率太低。容易造成内存泄露。  SQLiteCursor...
  • lanxingfeifei
  • lanxingfeifei
  • 2016年04月29日 13:23
  • 2406

整理一些C++面试容易被问到的问题及其答案

这是陈硕在知乎给出的几个问题(针对校招) 标准库各容器的基本操作的复杂度。标准库算法的复杂度,例如 std::sort() 的平均复杂度、最坏复杂度(答 O(N^2) 和 O(N log N) ...
  • Lyintong
  • Lyintong
  • 2016年03月21日 22:28
  • 1013

2017过度到2018,需要整点面试题

1.Acticity和Service是否在同一个线程工作这个问题有坑,没有绝对条件可以判定是不是在一个线程工作 同一个包内的activity和service1)如果service没有设定属性andr...
  • qq_15700209
  • qq_15700209
  • 2017年12月27日 11:51
  • 132
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java面试题集锦
举报原因:
原因补充:

(最多只允许输入30个字)