Java面试必备:笔试题精华解析

需积分: 0 2 下载量 97 浏览量 更新于2024-11-01 收藏 340KB DOC 举报
"Java面试及笔试常见问题集锦" 在Java面试中,常常会遇到一些核心概念和技术的考察,以下是对这些题目所涉及知识点的详细解释: 1. **final, finally, finalize的区别** - `final`:用来声明变量、方法或类,表示不可改变或不可继承。对于变量,一旦赋值后就不能再改变;对于方法,表示该方法不能被重写;对于类,意味着该类不能有子类。 - `finally`:用于异常处理,无论是否发生异常,`finally`块中的代码都会被执行,确保关键代码的执行。 - `finalize`:是对象销毁前系统调用的一个方法,用于释放对象占用的资源,但不保证一定会执行。 2. **AnonymousInnerClass(匿名内部类)** - 匿名内部类没有名称,可以直接实现接口或继承类,通常用于一次性使用的场景。它可以同时继承一个类和实现一个或多个接口。 3. **StaticNestedClass和Inner Class的区别** - Static Nested Class(静态嵌套类)类似于普通的类,可以有自己的静态成员和构造器,不需要外部类对象就能创建实例。 - Inner Class(内部类)与外部类有更紧密的关联,需要外部类对象才能创建实例,它可以访问外部类的私有成员。 4. **&和&&的区别** - `&` 是位运算符,用于进行按位与操作,也可以在逻辑表达式中作为短路与,当左侧表达式为假时,不会计算右侧表达式。 - `&&` 是逻辑运算符,也是短路与,只有在左侧表达式为真时才会计算右侧表达式。 5. **HashMap和Hashtable的区别** - HashMap是非同步的,允许null键和null值,迭代顺序是不确定的。 - Hashtable是同步的,不允许null键和null值,迭代顺序是固定的。 6. **Collection和Collections的区别** - Collection是一个接口,它是所有单列集合的父接口,定义了集合的基本操作。 - Collections是工具类,提供了许多静态方法,用于操作集合,如排序、查找、填充等。 7. **何时使用assert** - `assert` 用于断言,通常在开发阶段用于测试和调试,生产环境中一般关闭,用来检查程序的正确性。 8. **GC(Garbage Collection)是什么?为什么需要GC?** - GC是垃圾收集机制,负责自动回收不再使用的对象所占用的内存。有了GC,程序员不需要手动管理内存,降低了出现内存泄漏的风险。 9. **Strings=new String("xyz"); 创建了几个StringObject?** - 这将创建两个对象,一个在常量池中,一个在堆中。"xyz"首先在常量池中创建,然后new String()在堆中创建一个新的对象,两者不共享内存。 10. **Math.round(11.5)等于多少?Math.round(-11.5)等于多少?** - Math.round(11.5)等于12,Math.round(-11.5)等于-11。round方法将浮点数四舍五入为最接近的整数。 11. **short s1=1; s1=s1+1; 有什么错?short s1=1; s1+=1; 有什么错?** - 第一行会报编译错误,因为s1+1的结果是int类型,不能直接赋值给short s1。第二行是正确的,因为s1+=1会自动转换类型并赋值给s1。 12. **sleep()和wait()的区别** - sleep()是Thread类的方法,使当前线程暂停指定时间,不会释放锁。 - wait()是Object类的方法,使线程等待,直到其他线程调用notify()或notifyAll()唤醒,会释放锁。 13. **Java是否有goto?** - Java没有goto语句,这是为了提高代码的可读性和可维护性,鼓励使用结构化编程。 以上知识点涵盖了Java语言的基础和核心特性,是面试和笔试中常见的问题,理解并掌握这些概念对于Java开发者来说至关重要。