Java面试必备知识点:从基础到高级

需积分: 7 0 下载量 126 浏览量 更新于2024-07-26 收藏 483KB DOC 举报
"这是一份详尽的Java面试题库,涵盖了程序员面试的多个核心知识点,包括面向对象特性、数据类型、异常处理、集合框架、多线程、内存管理以及Java Web相关的技术。" 1. 面向对象的特征:面向对象编程的主要特征包括封装、继承、多态。封装使得数据和操作数据的方法结合在一起,保护数据不受外部干扰;继承允许类之间共享属性和行为,减少代码重复;多态则是指子类可以覆盖父类的方法,使得同一个消息可以有多种不同的行为。 2. 基本数据类型与包装类:在Java中,int是基本数据类型,而Integer是其对应的包装类,基本类型直接存储值,而包装类对象存储在堆内存中,可以进行null值的操作。 3. int与Integer的区别:在使用上,int是直接存储数值,而Integer是对象,需要通过new关键字创建。在自动装箱拆箱机制下,两者在一定范围内可以互换使用,但涉及比较操作时需注意对象与原始类型之间的区别。 4. String与StringBuffer:String是不可变对象,每次修改都会生成新的对象,而StringBuffer是可变的,修改不会创建新对象,因此在大量字符串操作时,StringBuffer更高效。 5. 运行时异常与一般异常:运行时异常是程序逻辑错误,如果不捕获会直接抛出,而一般异常可以通过try-catch处理。两者都继承自Exception类,但运行时异常继承自RuntimeException。 6. Servlet生命周期:包括加载、初始化、服务、销毁四个阶段。Servlet与CGI(Common Gateway Interface)的区别在于,Servlet是基于Java的持久连接服务器端组件,而CGI是服务器调用的外部程序,效率较低。 7. ArrayList, Vector, LinkedList:ArrayList是基于数组实现的列表,适合随机访问;Vector是ArrayList的线程安全版本;LinkedList基于链表结构,更适合插入和删除操作。 8. EJB(Enterprise JavaBeans):它基于JMS、RMI等技术,实现企业级应用。SessionBean用于表示业务逻辑,EntityBean代表持久化对象,Stateful Bean维护会话状态,Stateless Bean不维护。 9. Collection与Collections:Collection是所有集合接口的父接口,表示单一元素的集合;Collections是针对集合类的工具类,提供了一系列静态方法,用于对集合进行操作。 10. &和&&:&是位运算符,也用于逻辑与;&&是逻辑与运算符,具有短路特性,只在必要时计算右侧表达式。 11. HashMap与Hashtable:两者都是键值对的存储结构,HashMap允许null键和值,非线程安全;Hashtable不允许null键值,是线程安全的。 12. final, finally, finalize:final修饰变量表示不可变,修饰方法表示不能被重写,修饰类表示不能有子类;finally确保代码块中的代码总会被执行;finalize是对象被垃圾回收前调用的方法。 13. sleep()和wait():sleep()是Thread类的方法,使当前线程休眠,不释放锁;wait()是Object类的方法,让线程等待,释放对象锁。 14. Overload和Override:Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法,要求方法名、返回类型和参数列表完全一致。 15. error与exception:Error是严重问题,如系统错误、虚拟机错误,通常无法恢复;Exception是程序可以预见的异常,可通过try-catch处理。 16. 同步与异步:同步操作等待任务完成,异步则不等待,适合并发处理。根据应用场景选择,如读取文件通常使用同步,网络请求常用异步。 17. abstractclass和interface:抽象类可以有方法实现,可以包含非抽象方法,最多一个直接父类;接口仅包含抽象方法,无实现,可以多继承。 18. heap和stack:堆内存主要存放对象实例,支持动态大小分配;栈内存存储基本类型和对象引用,按先进后出原则,大小固定。 19. forward与redirect:forward是服务器内部跳转,不改变URL;redirect是客户端重定向,浏览器地址栏会显示新URL。 20. EJB与JavaBean:EJB是Java EE规范的一部分,用于构建企业级应用,提供事务、安全性、状态管理等功能;JavaBean是简单Java对象,常用于GUI组件或数据传输。 21. StaticNestedClass和InnerClass:StaticNestedClass是静态嵌套类,不持有对外部类的引用;InnerClass是非静态嵌套类,需要外部类实例才能创建。 22. JSP动态INCLUDE与静态INCLUDE:动态INCLUDE使用<jsp:include>,每次请求都会执行包含的页面;静态INCLUDE使用<%@ include %>,编译时合并,只执行一次。 23. assert:assert用于断言,用于调试,检查某个条件是否满足,只有在启动时加上了"-enableassertions"或"-ea"参数,断言才会生效。 24. GC(Garbage Collector):GC是Java的内存管理机制,负责自动回收不再使用的对象,以避免内存泄漏。 25. short变量的运算:在第一个例子中,短整型相加结果可能超出short范围,需要显式转换;第二个例子使用了增强型赋值运算符,自动处理类型转换。 26. Math.round()方法:该方法返回最接近参数的长整数。当参数为正时,11.5会被四舍五入为12;为负时,-11.5被舍入为-11。