JAVA面试经典试题及答案1.pdf
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
overload 的返回值不可变
16. Set 里的元素是不能重复的,用什么方法来区分重复与否呢?用 = = 还是 equals()? 他 们有和区别? 用 equals 方法,= = 方法是比较对象的引用地址,equal 默认是比较引用,但是可以被
重写是逻辑相等,一般重写 equal 也要修改相应的 hashCode 方法
21. abstract class 和 interface 有什么区别? 我从两个角度看他们之间的区别: 1,多态性:抽象类是通过集成的方式体现多态性的,这就意味着子类只能集成一个父
17. 给我你最常见的一个 runtime exception NullpointException, IllegalArgumentException, IndexOutofBoundsException
18. Object 对象中的方法 toString()/hashCode()/equals()/notify()/notif来自百度文库All()/getClass()/wait()
12;-11; round 表示 4 舍 5 入
11. short s1 = 1; s1 = s1 + 1; 有什么错? short s1 = 1; s1 += 1;有什么错? s1 = s1 + 1; 有错,因为 1 是 int 型,所以 s1 + 1 后的类型是 int,int 隐形转化为 short
Runtime.getRuntime().gc();能增加 GC 启动的优先级,但是不保证一定执行。
9. String s = new String("xyz"); 创建了几个 String Object. 2个
10. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
类型 s1 += 1;没有问题
12. sleep() 和 wait() 有什么区别? sleep() 表示让当前运行的线程暂停一段时间,在时间满了后,这个线程被并不一定会
被立即执行,除非这个线程的优先级比当前线程的优先级高,或者当前线程执行完毕,或者 当前线程阻塞住了
wait()如果线程对一个同步对象发出 wait 请求后,该线程会暂停执行,进入等待状态 直到被唤醒或者等待时间到
19. error 和 exception 有什么区别? error 表示一种不是不可能但是很难恢复的一种错误,比如内存溢出;exception 表示正
常流程的情况下不会出现的错误
20. List, Set, Map 是否继承自 Collection 接口? List 和 Map 是, Map 不是
2. Annoy Inner Class (匿名类) 是否可以 extends (继承)其他类,是否可以 implements (实现) interface 接口? Annoy Inner Class 由于没有类名所以不可以 extends 其他类;可以实现 interface
3. Static Nested Class 和 Inner Class 的不同 Static Nested Class 不需要外部类的实例来创建内部类的实例;内部类不能访问外部类
true,如果是 false 则会抛出异常。常用语保证程序的最基本的正确性。断言在默认情况下是 禁用的,在编译时启用断言用 -source 1.4 标记,在运行时启用可以用 -ea 来标记,在运行 时禁用用 -dsa 来标记。
8. GC 是什么?为什么要用 GC? GC 是垃圾回收机制,使用 GC 程序员就不用关心程序的内存管理。使用 System.gc()和
过一定的散列函数 H(k),得到散列值,这个值就是节点的存储地址
6. Colleciton 和 Collections 的区别 Collection 在 java.util 下面,是所有集合类的父接口 Collections 也在 java.util 下面,他封装了集合类的一些操作
7. 什么时候用 assert? assert 是一条包含布尔表达式的语句,程序运行到当前语句的时候假定布尔返回值是
的非静态方法;它能具有静态的数据,属性,和匿名内部类。
4. & 和 && 的不同 &表示位运算符;&&表示逻辑运算符;
5. HashMap 和 Hashtable 的区别 HashMap 允许一个 null 或者多个 null 作为 key, 而 Hashtable 不行 Hashtable 是线程同步的, 而 HashMap 不是的 HashTable 的原理:通过节点的关键码确定对象的存储位置。给定节点的关键码 k,通
两者的另一个关键区别是:前者不会释放对象锁;后者会释放对象锁
13. Java 有没有 goto ? 有但是没有用
14. 数组有没有 length()方法?String 有没有 length()方法? 数组没有 length()方法,但是数组有 length 属性 String 有 length() 方法
一 基础篇 1. 谈谈 final, finally, finalize 的区别
final 是一个修饰符,修饰类的时候表示类不可继承, 所以一个类不可能既是 abstract 又 是 final 的; 修饰变量的时候表示这个变量不可被更改并且必须赋初始值; 修饰方法的时候 表示方式不可被重写。
finally 通常和 try-catch 一起, 在 finally 里代码无论是否发生异常都会执行到 finalize 是一个方法名。方式是定义在 Object 类中,在对象从内存中释放之前会调用此 方法进行一些必要的清理工作。
15. overload 和 override 的区别。 overload 和 override 都是 Java 多态的一种表现, overload 是同一个类中的多态性的
表现,override 是子类和父类多态的一种表现 overload 表示重载,一个类中同样一个方法名可以有不同的参数 override 表示重写,子类中可以重新实现父类的方法
16. Set 里的元素是不能重复的,用什么方法来区分重复与否呢?用 = = 还是 equals()? 他 们有和区别? 用 equals 方法,= = 方法是比较对象的引用地址,equal 默认是比较引用,但是可以被
重写是逻辑相等,一般重写 equal 也要修改相应的 hashCode 方法
21. abstract class 和 interface 有什么区别? 我从两个角度看他们之间的区别: 1,多态性:抽象类是通过集成的方式体现多态性的,这就意味着子类只能集成一个父
17. 给我你最常见的一个 runtime exception NullpointException, IllegalArgumentException, IndexOutofBoundsException
18. Object 对象中的方法 toString()/hashCode()/equals()/notify()/notif来自百度文库All()/getClass()/wait()
12;-11; round 表示 4 舍 5 入
11. short s1 = 1; s1 = s1 + 1; 有什么错? short s1 = 1; s1 += 1;有什么错? s1 = s1 + 1; 有错,因为 1 是 int 型,所以 s1 + 1 后的类型是 int,int 隐形转化为 short
Runtime.getRuntime().gc();能增加 GC 启动的优先级,但是不保证一定执行。
9. String s = new String("xyz"); 创建了几个 String Object. 2个
10. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
类型 s1 += 1;没有问题
12. sleep() 和 wait() 有什么区别? sleep() 表示让当前运行的线程暂停一段时间,在时间满了后,这个线程被并不一定会
被立即执行,除非这个线程的优先级比当前线程的优先级高,或者当前线程执行完毕,或者 当前线程阻塞住了
wait()如果线程对一个同步对象发出 wait 请求后,该线程会暂停执行,进入等待状态 直到被唤醒或者等待时间到
19. error 和 exception 有什么区别? error 表示一种不是不可能但是很难恢复的一种错误,比如内存溢出;exception 表示正
常流程的情况下不会出现的错误
20. List, Set, Map 是否继承自 Collection 接口? List 和 Map 是, Map 不是
2. Annoy Inner Class (匿名类) 是否可以 extends (继承)其他类,是否可以 implements (实现) interface 接口? Annoy Inner Class 由于没有类名所以不可以 extends 其他类;可以实现 interface
3. Static Nested Class 和 Inner Class 的不同 Static Nested Class 不需要外部类的实例来创建内部类的实例;内部类不能访问外部类
true,如果是 false 则会抛出异常。常用语保证程序的最基本的正确性。断言在默认情况下是 禁用的,在编译时启用断言用 -source 1.4 标记,在运行时启用可以用 -ea 来标记,在运行 时禁用用 -dsa 来标记。
8. GC 是什么?为什么要用 GC? GC 是垃圾回收机制,使用 GC 程序员就不用关心程序的内存管理。使用 System.gc()和
过一定的散列函数 H(k),得到散列值,这个值就是节点的存储地址
6. Colleciton 和 Collections 的区别 Collection 在 java.util 下面,是所有集合类的父接口 Collections 也在 java.util 下面,他封装了集合类的一些操作
7. 什么时候用 assert? assert 是一条包含布尔表达式的语句,程序运行到当前语句的时候假定布尔返回值是
的非静态方法;它能具有静态的数据,属性,和匿名内部类。
4. & 和 && 的不同 &表示位运算符;&&表示逻辑运算符;
5. HashMap 和 Hashtable 的区别 HashMap 允许一个 null 或者多个 null 作为 key, 而 Hashtable 不行 Hashtable 是线程同步的, 而 HashMap 不是的 HashTable 的原理:通过节点的关键码确定对象的存储位置。给定节点的关键码 k,通
两者的另一个关键区别是:前者不会释放对象锁;后者会释放对象锁
13. Java 有没有 goto ? 有但是没有用
14. 数组有没有 length()方法?String 有没有 length()方法? 数组没有 length()方法,但是数组有 length 属性 String 有 length() 方法
一 基础篇 1. 谈谈 final, finally, finalize 的区别
final 是一个修饰符,修饰类的时候表示类不可继承, 所以一个类不可能既是 abstract 又 是 final 的; 修饰变量的时候表示这个变量不可被更改并且必须赋初始值; 修饰方法的时候 表示方式不可被重写。
finally 通常和 try-catch 一起, 在 finally 里代码无论是否发生异常都会执行到 finalize 是一个方法名。方式是定义在 Object 类中,在对象从内存中释放之前会调用此 方法进行一些必要的清理工作。
15. overload 和 override 的区别。 overload 和 override 都是 Java 多态的一种表现, overload 是同一个类中的多态性的
表现,override 是子类和父类多态的一种表现 overload 表示重载,一个类中同样一个方法名可以有不同的参数 override 表示重写,子类中可以重新实现父类的方法