Java面试必备知识点:核心概念与比较

需积分: 1 0 下载量 201 浏览量 更新于2024-07-24 1 收藏 401KB DOC 举报
"Java经典面试题" Java是广泛使用的编程语言,尤其在企业级应用开发中占据重要地位。以下是一些Java面试中常见的问题及其详细解答: 1. Java平台分为三个版本:Java SE(标准版),Java EE(企业版)和Java ME(微型版)。Java SE是基础,提供核心API;Java EE扩展了SE,用于服务器端开发;Java ME适用于嵌入式设备和移动应用。 2. Java EE(Java Platform, Enterprise Edition)是用于构建企业级Web应用程序的框架,包括Servlet、JSP、EJB、JMS、JPA、JSF等技术。 3. String是不可变的,而StringBuffer和StringBuilder都是可变的。在多线程环境下,推荐使用StringBuffer,而在单线程环境中StringBuilder更高效。 4. ArrayList、Vector和LinkedList各有特点:ArrayList基于动态数组,访问速度快但插入删除慢;Vector与ArrayList类似,但线程安全;LinkedList适合频繁的插入和删除,但随机访问效率低。 5. HashMap允许null键和null值,不保证顺序;Hashtable不允许null键和null值,线程安全,但执行速度相对较慢。 6. Collection是所有集合的父接口,Collections是针对集合类的一个工具类,提供了各种操作集合的静态方法。 7. Java有八种基本数据类型:byte、short、int、long、float、double、char、boolean,对应的封装类分别是Byte、Short、Integer、Long、Float、Double、Character、Boolean。 8. 运行时异常是可以被程序捕获并处理的,而一般异常在编译阶段就需要处理。 9. int是基本数据类型,Integer是int的封装类,int是值类型,Integer是对象。 10. 面向对象的特征包括封装、继承和多态。 11. 与基本数据类型对应的封装类如上所述。 12. Java中的线程有新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、等待(Waiting)、超时等待(Timed Waiting)和终止(Terminated)六种状态。 13. 比较两个数组元素值是否全部相等,可以通过循环遍历并逐个比较来实现。 14. 线程可能因调用wait()、join()、sleep()或遇到无法获取的锁而进入Blocked状态。 15. 逻辑操作符(&, |, ^)用于位运算,条件操作符(&&, ||)用于布尔逻辑判断,前者关心每个操作数的每一位,后者仅关心整个表达式的真假。 16. final表示不可变,finally确保代码块一定会执行,finalize是对象被垃圾回收前调用的方法。Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法,方法名、返回值和参数列表必须完全一致,构造器不能被override。 17. error是严重错误,无法恢复,而exception是程序可以捕获处理的异常。abstractclass可以包含方法实现,而interface只能声明方法。Java 8开始,接口可以有默认方法和静态方法。 18. GC(Garbage Collector)是Java的自动内存管理机制,用于回收不再使用的对象所占的内存,避免内存泄漏。 19. Strings=newString("xyz");创建了两个StringObject,一个在常量池,一个在堆。Java中字符串是不可变的,所以创建新字符串会创建新对象。 20. 实现线程主要有两种方式:继承Thread类和实现Runnable接口。启动线程调用start()方法。 21. 接口可以继承接口,抽象类可以实现接口,但实体类不能继承抽象类。 22. 数组没有length()方法,而是length属性;String有length()方法。 23. 不可以继承String类,因为String是final类。 24. switch不能作用于byte,但在Java 7及以后版本可以;不能作用于long,但可以转换为int;自Java 7起,switch可以作用于String。 25. try{}后的finally{}总会在return之前执行,无论return语句是否引发异常。 26. 当对象作为参数传递后,方法内部可以修改对象的属性,但不能改变对象引用。返回变化后的结果意味着方法内部修改了对象属性。 以上是Java面试中涉及的一些关键概念和知识点,掌握这些将有助于理解和应对Java相关的面试挑战。