Java技术支持面试常见问题与答案

需积分: 34 0 下载量 44 浏览量 更新于2024-07-23 收藏 819KB DOC 举报
"Java技术支持面试题" 这是一份关于Java技术面试的文档,涵盖了Java基础知识、数据结构、异常处理、并发编程以及语法细节等多个方面。以下是文档中提及的一些关键知识点的详细解释: 1. **面向对象的特征**:包括封装、继承、多态。封装隐藏了对象的内部实现细节,提供了安全性和简洁性;继承允许子类从父类继承属性和行为,提高了代码复用性;多态使得不同的对象可以对同一消息作出不同的响应,增强了程序的灵活性。 2. **String不是基本数据类型**:Java有8种基本数据类型,如int、char等,而String是对象,属于引用类型。 3. **int与Integer的区别**:int是基本数据类型,直接存储值;Integer是int的包装类,对象形式存储,支持更多操作,如自动装箱拆箱。 4. **String与StringBuffer**:String是不可变对象,每次修改都会创建新对象;StringBuffer是可变的,修改时不会创建新对象,适合在多线程环境中使用。 5. **运行时异常与一般异常**:运行时异常是程序设计错误,不需捕获也能运行;一般异常需要显式捕获,否则编译无法通过。 6. **ArrayList, Vector, LinkedList的存储性能和特性**: - ArrayList基于动态数组,随机访问快,增删慢。 - Vector与ArrayList类似,但线程安全。 - LinkedList基于双向链表,增删快,随机访问慢。 7. **Collection与Collections的区别**:Collection是接口,表示一组对象集合;Collections是工具类,提供了一系列静态方法用于操作集合。 8. **&和&&的区别**:&是按位与运算符,&&是逻辑与运算符。在布尔表达式中,&&会短路,如果左侧为false,右侧就不会执行。 9. **HashMap与Hashtable**:HashMap是非线程安全的,效率高;Hashtable是线程安全的,效率相对低。 10. **final, finally, finalize**:final修饰变量表示不可变,修饰方法表示不能被重写,修饰类表示不能被继承;finally确保代码块中的代码总会被执行;finalize是垃圾回收前调用的方法。 11. **Overload和Override**:Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法,要求方法名、参数列表和返回类型完全一致。 12. **error与exception**:Error是系统级错误,如内存溢出,一般不需用户处理;Exception是应用程序中可能出现的错误,需要捕获处理。 13. **同步与异步**:同步是顺序执行,保证数据一致性;异步是并行执行,提高效率。同步适用于数据一致性要求高的场景,异步适用于提高程序响应速度。 14. **abstractclass和interface**:抽象类可以有方法实现,可以包含非抽象方法;接口只能声明方法,不能包含实现,且默认方法是public abstract。 15. **heap和stack**:堆用于存储对象,大小不受限制,垃圾回收主要针对堆;栈用于存储基本类型和对象引用,速度快但空间有限。 16. **GC(Garbage Collection)**:Java的内存管理机制,自动回收不再使用的对象所占用的内存,以防止内存泄漏。 17. **shorts1=1;s1=s1+1**:短整型提升为整型,需要手动转换;s1+=1会自动转换,避免溢出。 18. **Math.round**:四舍五入,Math.round(11.5)等于12,Math.round(-11.5)等于-11。 19. **String对象创建**:"xyz"创建了一个字符串常量,new String("xyz")创建了两个对象,一个在常量池,一个在堆。 20. **Java没有goto语句**:Java设计原则之一是避免无尽的循环和复杂的跳转。 21. **接口可以继承接口**,抽象类可以实现接口,但不能继承实体类。 22. **List, Set, Map与Collection接口**:List和Set实现了Collection接口,Map没有直接实现,但其子类如HashMap、TreeMap等实现了Map接口。 23. **abstract方法不能是static或native,不能是synchronized**:这些修饰符与抽象方法的定义不兼容。 24. **length()方法**:数组有length属性,String有length()方法。 25. **区分重复与否**:在Set中,equals()方法用于比较对象内容是否相等,不考虑对象引用。 26. **构造器Constructor不可被override**,但可以重载。String类是final的,不能被继承。 27. **switch**:在Java 7以后,switch可以作用于byte、char、short、int、枚举类型和String。 28. 文档中还有其他未列出的问题,这些问题是Java开发者应掌握的基础知识,对于面试和实际开发工作至关重要。