刁钻的java面试题_【译】十个刁钻的 Java 面试题

这里列出了十个常见而又刁钻的 Java 开发人员面试题及答案,这些题目是我从 StackOverflow 上找来的。如果你是初中级 Java 开发人员,而且近期准备面试的话,这些题目可能对你有些帮助。

Q1: Java 是“传引用”的还是“传值”的?

Q2: 如何用 Java 构建一个内存溢出的场景?

答:可以用一个类加载器(class loader)和 ThreadLocal 来实现。详情参考 Creating a memory leak in Java

Q3: 成员修饰符 package private、public、protected 和 private 之间的区别是什么?

答:

private 成员只能在当前类中访问到。

package private 成员(即没有访问修饰符的成员)可以在当前包下的所有类中访问到。

protected 成员可以在当前包下的所有类和其他包下的所有子类中访问到。

public 成员可以在所有类中访问到。

更详细的解释在这里。

Q4: HashMap 和 Hashtable 的区别在哪里?

答:Hashtable 是同步的,而且不允许 key 或 value 为 null。详情参考 differences between HashMap and Hashtable

Q5: 有哪些可以避免 != null 语句(非空校验)的方法?

答:一种方法是用 assert 断言。自定义的注解(annotation)也可以用来做非空校验。详情参考 How to avoid != null Statements

Q6: 在 Java 中,“finally” 块是一定会执行的吗?

答:在以下情形中不会执行:遇到“System.exit()”、遇到无限循环、遇到系统崩溃之类的。详情参考 Does finally always execute in Java?

Q7: Java 中可以在一个构造函数里面调用另一个构造函数吗?

Q8: “implements Runnable” 和 “extends Thread” 相比哪种方式更好?

Q9: Java 中可以从内嵌的多层循环中跳出吗?

Q10: 什么是反射(reflection),反射有什么用?

答:反射是一种用于探测同一系统内的其他代码的代码机制。它的具体作用请参考:Why Reflection is useful

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值