pc网站手机版开发,谭海波博客简介 wordpress,一番赏公众号开发,wordpress基础版总览 在Internet上#xff0c;Java面试问题和答案从一个网站复制到另一个网站。 这可能意味着错误或过时的答案可能永远不会得到纠正。 这是一些不太正确或已经过时的问题和答案。 即是Java 5.0之前的版本。 每个提供的问题后都有两个部分。 斜体的第一部分指示答案不完整/错… 总览 在Internet上Java面试问题和答案从一个网站复制到另一个网站。 这可能意味着错误或过时的答案可能永远不会得到纠正。 这是一些不太正确或已经过时的问题和答案。 即是Java 5.0之前的版本。 每个提供的问题后都有两个部分。 斜体的第一部分指示答案不完整/错误。 最后一部分以纯格式提供完整/正确的答案。 参数可以通过几种方式传递给子例程并进行解释 参数可以通过两种方式传递。 它们通过价值传递通过参考传递。 按值传递此方法将参数的值复制到子例程的形式参数中。 通过引用传递在此方法中对参数的引用而不是参数的值传递给参数。 Java仅支持按值传递。 您可以按值传递引用但是在Java中不能按引用传递。 Java引用可以描述为“通过共享调用”但这并不常用。 什么是垃圾回收如何明确调用它 当某个对象不再由任何变量引用时java会自动回收该对象使用的内存。 这称为垃圾收集。 系统。 gc方法可用于显式调用它。 当对象不再具有来自Root上下文的强引用时就可以进行清除。 具有弱参考或软参考的对象可以清除。 没有强引用的对象可能无法清除即没有保证将运行GC次要GC不会清除使用期限的对象 System.gc 提示应该运行Full GC。 可以使用命令行选项禁用它。 什么是瞬态和挥发性修饰剂 瞬态瞬态修饰符仅适用于变量并且不存储为对象持久性状态的一部分。 暂态变量未序列化。 易失性易失性修饰符仅适用于变量它告诉编译器由易失性修改的变量可能会被程序的其他部分意外更改。 瞬态只能应用于字段而不能应用于局部变量。 它可以应用于静态变量但通常会被忽略。 临时字段不会自动序列化但是可以通过自定义序列化进行序列化例如writeObject和readObject volatile只能应用于字段并告诉JIT而不是告诉编译器每次访问都必须获取该字段的缓存一致性副本。 通常来自“主”内存 解释关键字transient的用法 此关键字指示此成员变量的值不必与对象序列化。 当将反序列化该类时将使用其数据类型的默认值即对于整数为零来初始化此变量。 此关键字表示该字段不能自动序列化。 它不会自动反序列化并保留该字段的默认值。 Integer的默认值为null 。 int的默认值为0 什么是方法重载和方法重载 方法重载当类中具有相同方法名不同参数的方法被称为方法重载时。 方法覆盖当类中具有相同方法名称和相同参数的方法被称为方法覆盖。 当两个方法具有相同的名称但签名不同时就会发生方法重载。 签名包括参数类型和通用类型。 可以使用不同的参数调用单个方法而可以使用相同的参数调用两个重载方法。 即它的签名而不是重要的论据。 仅当子类具有与父类中的方法相同的签名时才发生方法重写。 Integer和int有什么区别 整数是在Java中定义的类。 lang包而int是用Java语言本身定义的原始数据类型。 Java不会自动从一种转换为另一种。 整数可以用作需要对象的方法的参数而整数可以用于计算。 Integer是对包装int的对象的引用。自添加自动装箱和拆箱以来主要区别在于Integer可以为null并且运算符比较Integer的引用和int类型的实际值。 Integer i1 1;
Integer i2 1;
// true as the same autoboxed Integer is used.
System.out.println(i1 i2); Integer i3 -200;
Integer i4 -200;
// false as different autoboxed Integer objects are used.
System.out.println(i3 i4); 线程的不同状态是什么 不同的线程状态为就绪运行等待和死机。 由于Java 5.0应该是正在开发的大多数Java系统因此Thread.State类将线程可能的状态列出为 NEW –尚未启动的线程处于此状态。 可运行–在Java虚拟机中执行的线程处于此状态。 BLOCKED –已阻塞等待监视器锁定的线程处于此状态。 等待中–无限期等待另一个线程执行特定操作的线程处于此状态。 TIMED_WAITING –正在等待另一个线程执行操作的线程最多达到指定的等待时间该线程处于此状态。 终止–退出的线程处于此状态。 所有班级的基础班是哪一个 java.lang.Object 对于自定义类这是正确的。 对于基本类型例如int.classvoid.class和Object本身没有超类。 Class parent boolean.class.getSuperclass(); // returns null 什么是守护线程 在后台运行的Theards [sic]被称为守护进程线程。 守护程序线程是一个线程一旦进入运行状态该线程便没有任何机会运行其他线程而它也没有任何机会运行其他线程。 守护程序线程是不会阻止JVM关闭的任何线程。 任何线程都可以视为“后台”线程。 守护程序线程被赋予与非守护程序线程相同的优先级基于它们的优先级。当守护程序线程正在运行时它不会阻止另一个线程与非守护程序线程在运行上有任何不同。 守护程序线程是低优先级的线程它在后台间歇地运行为Java运行时系统执行垃圾回收操作。 垃圾收集器是守护线程的一个示例。 守护程序线程可以具有较高的优先级并且可以一直运行。 对switch语句的每种情况的值施加什么限制 在编译时switch语句的每个case值必须计算为int值 从Java 5.0开始支持打开枚举从Java 7开始支持打开String。 什么是Java Bean Java Bean是一种软件组件其设计旨在可在各种不同的环境中重用。 恕我直言这个答案含糊不清可能在谈论任何事情。 Java Bean是“可序列化的Java对象具有一个null构造函数并允许使用getter和setter方法访问属性。” 为什么要使用同步块与同步方法 与同步方法相比同步块放置锁的时间更短。 这可能是正确的但不能保证。 通常同步块用于通过同步方法来锁定对对象的多次调用。 IMHO用于同步块的最常见的用途是锁定在这以外另一个目的 Mapkey, value map Collections.synchronizedMap(new LinkedHashMapkey, value());
// perform multiple operations in a thread safe manner
synchronized(map) {
Value value map.get(key);
if (value null)
map.put(key, value new Value(key));
return value;
} Java中哪一个更快 for(int i 100000; i 0; i--) {}
for(int i 1; i 100001; i) {} 答最快的是第二个。 服务器JVM可以检测并消除不执行任何操作的循环。 当循环迭代大约10,000次时将编译带有任一循环的方法。 基于-XXCompileThreshold 10000第一个循环将花费一些时间来检测它没有执行任何操作但是第二个循环将被编译。 哪个Java运算符是正确的关联 运算符是右关联的。 根据http://introcs.cs.princeton.edu/java/11precedence/列表从右到左的关联运算符是。 不止一个 投 新对象 分配 - * / ^ | Java运行时系统生成什么类的异常 Java运行时系统生成RuntimeException和Error异常。 恕我直言这是对另一个问题的答案。 这是对的回答 什么是运行时超类未经检查的异常 Java运行时可以生成ErrorException或RuntimeException。 参考 不正确的Java核心访谈在Vanilla Java上 我们的JCG合作伙伴 Peter Lawrey给出了答案 。 相关文章 每个程序员都应该知道的事情 正确记录应用程序的10个技巧 软件设计法则 Java最佳实践系列 生存在狂野西部开发过程中的9条提示 如何在不到1ms的延迟内完成100K TPS 提升您的休眠引擎 翻译自: https://www.javacodegeeks.com/2011/07/incorrect-core-java-interview-answers.html