Java面试精华:详解1-21点必知知识点与实践示例

需积分: 0 0 下载量 175 浏览量 更新于2024-09-12 收藏 78KB DOC 举报
在Java面试中,面试官通常会考察应聘者对基础知识的掌握程度和理解深度。以下是一些关键知识点的详细解释: 1. **多态示例**:Java中多态可以通过子类覆盖父类方法来实现,例如,定义一个Animal接口,然后有Dog和Cat子类实现,通过Animal类型的引用调用各自的"makeSound()"方法,展示了不同对象响应相同方法的不同行为。 2. **基本数据类型与String**:Java的基本数据类型包括:byte, short, int, long, float, double, char, boolean。String虽然看起来像基本类型,但实际上它是对象,属于引用类型。 3. **int和Integer的区别**:int是原始数据类型,占用内存少,而Integer是Integer类的对象,提供了包装功能,常用于自动装箱和拆箱操作,占用内存更多。 4. **String和StringBuffer**:String是不可变的,而StringBuffer(后来改名为StringBuilder)是可变的,适用于大量字符串拼接,性能更高。 5. **Collection和Collections的区别**:Collection是接口,代表一组对象的集合,而Collections是工具类,提供了一些操作集合的实用方法。 6. **&和&&运算符**:&是按位与运算符,用于二进制位的比较;&&是逻辑与运算符,用于条件判断。 7. **Overload和Override的区别**:Overload是同名方法但参数列表不同的情况,而Override是子类重写父类方法,需满足方法名、参数列表、返回类型和抛出异常类型都相同。 8. **error和exception的区别**:Error是JVM内部错误,通常是难以恢复的严重问题,如内存溢出;Exception是运行时异常,可以通过try-catch捕获并处理。 9. **abstractclass和interface的区别**:abstractclass可以包含具体方法实现,而interface只能定义方法签名;一个类只能继承一个abstractclass,但可以实现多个interface。 10. **final、finally和finalize的区别**:final修饰变量时,表示常量或不可变对象;finally块用于确保资源清理,无论是否发生异常都会执行;finalize是对象的析构方法,由垃圾回收器调用。 11. **assert用法**:用于进行单元测试和调试,断言某个条件是否为真,若不满足则抛出AssertionError。 12. **forward和redirect的区别**:在Servlet中,forward是服务器内部请求转发,保留原有请求范围;redirect则是客户端重定向,改变URL地址。 13. **GC(Garbage Collection)**:Java中的垃圾回收机制,负责自动回收不再使用的内存,以防止内存泄漏。 14. **shorts1的例子**:`shorts1=1;s1=s1+1;`报错,因为shorts1不是对象,不能直接加1;`shorts1=1;s1+=1;`正确,自动拆箱和装箱。 15. **Math.round()**:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11,浮点数舍入规则根据四舍五入原则。 16. **String对象创建**:`Strings=newString("xyz")`创建了两个String对象,因为newString是不可变字符串的构造函数。 17. **并发编程示例**:设计四个线程,可以使用`synchronized`关键字或者`Lock`接口来控制对共享变量j的操作。 18. **Java的goto语句**:Java不支持传统的`goto`语句,而是通过`break`和`continue`来控制流程。 19. **启动线程方法**:使用`start()`方法启动新线程,调用`run()`方法是在当前线程执行。 20. **应用服务器示例**:常见的Java应用服务器有Tomcat、Jboss、WebLogic、GlassFish等。 21. **接口继承和实现**:接口之间可以继承,抽象类和接口都不能直接继承类,但一个类可以同时实现多个接口。 22. **Set元素判断重复**:Set不允许重复元素,使用`equals()`方法判断内容是否相等。 23. **构造器override**:构造器不能被override,但可以通过重载创建多个具有不同参数列表的构造器。 24. **继承String类**:Java中不能直接继承String类,但可以使用`extends`关键字创建派生类。 25. **switch语句适用性**:switch语句不适用于byte、long和String,因为它们不是基本数据类型且没有对应的常量池。 26. **try-finally代码执行**:`try`内的`return`不影响`finally`块的执行,`finally`始终在try结束后执行。 27. **高效计算2*8**:直接计算,无需编程题,2*8=16。 28. **参数传递方式**:方法接收对象参数,实际上是引用传递,方法内部对对象的修改会影响到调用者。 29. **synchronized方法并发控制**:其他线程可以在synchronized方法外部访问对象的其他非synchronized方法。 30. **编程题继续**:题目缺失,但通常这类题目需要解决实际编程问题,如算法优化或特定场景下的问题求解。