Java面试必备知识点详解

需积分: 0 1 下载量 182 浏览量 更新于2024-07-18 收藏 6.75MB DOC 举报
"Java面试大全,涵盖众多技术点如SSH,包括了面向对象特性、字符串基础、多线程、JSP与Servlet、CSS、数据连接池、垃圾回收、EJB优点、Servlet生命周期、访问修饰符、数值运算、类型转换、逻辑操作符、内存区域、switch语句、构造器、重载与重写、equals与hashCode关系、String的不可变性、参数传递、StringBuilder与StringBuffer等核心概念。" 本文主要针对Java面试中常见的技术问题进行了详尽的梳理,涵盖了多个关键知识点: 1. **面向对象的特征**:包括封装、继承、多态。封装是将数据和操作数据的方法绑定在一起;继承允许子类继承父类的属性和行为;多态则指同一种行为在不同对象上有不同的表现形式。 2. **String类型**:在Java中,String不是基本数据类型,而是对象。它的常量池特性使得字符串拼接效率较高。 3. **抽象方法**:没有具体实现,只有声明的方法,必须在抽象类中定义,由子类去实现。 4. **JSP注释**:可以使用<!-- -->进行HTML注释,<%-- --%>进行JSP注释。 5. **JSP与Servlet**:两者都是Java Web开发的一部分,JSP侧重于视图,Servlet处理业务逻辑。JSP最终会被转换成Servlet执行,二者通过请求响应模型联系。 6. **CSS隐藏元素**:使用`display:none`可以让一个层不可见。 7. **数据连接池**:管理数据库连接的池化资源,提高性能,减少数据库连接创建和释放的开销。 8. **多线程实现**:通过继承Thread类、实现Runnable接口或使用Executor框架。同步的实现方式包括synchronized关键字、wait/notify机制、Lock锁等。 9. **页面加载事件**:通常在window.onload事件中处理页面加载完成后的事情,如弹出广告页。 10. **forward和redirect**:前者是服务器端跳转,不会改变URL,后者是客户端跳转,浏览器地址栏会显示新URL。 11. **垃圾回收**:自动回收不再使用的对象所占用的内存,但不能立即回收。可通过System.gc()尝试触发垃圾回收。 12. **EJB优点**:提供事务管理、安全控制、分布式服务,简化企业级应用开发。 13. **Servlet处理请求**:通过doGet/doPost方法处理HTTP请求。 14. **获取初始化参数**:通过ServletContext的getInitParameter和ServletConfig的getInitParameter方法。 15. **Servlet生命周期**:加载、实例化、初始化、服务、销毁。Servlet比CGI更高效,因为Servlet实例是持久的。 16. **访问修饰符**:public对所有类可见,private限制在同一类内,protected在同一包和子类可见,无修饰符仅限同一包。 17. **Math.round**:四舍五入,Math.round(11.5)等于12,Math.round(-11.5)等于-11。 18. **浮点型常量**:float f = 3.4是合法的,但需要注意精度损失。 19. **int与Integer**:int是基本类型,Integer是其包装类,Integer支持null值和一些额外方法。 20. **逻辑运算符**:&和&&都是逻辑与,|和||都是逻辑或,但短路运算符&&和||只计算必要部分。 21. **内存区域**:栈存储局部变量、方法参数和方法返回地址;堆存储对象实例;静态区存放静态变量和常量。 22. **switch语句**:可以用于byte、char、short、int、枚举类型和String(Java 7及以后版本)。 23. **2乘以8**:最快的方式是`2 << 3`,利用位移运算。 24. **length()方法**:数组有length属性,String有length()方法。 25. **跳出多重循环**:使用break标签(break label;)。 26. **构造器不可重写**:构造器不能被覆盖,但可以重载。 27. **重载与重写**:重载发生在同一类中,方法名相同但参数列表不同;重写发生在子类中,方法名、返回类型和参数列表都需与父类一致。 28. **equals与hashCode**:两个对象值相等但hashCode可能不同,如自定义对象未重写equals和hashCode。 29. **String不可继承**:String是final类,不能被继承。 30. **参数传递**:Java总是按值传递,但对象引用是按值传递的引用,所以对象的属性可以在方法中改变。 31. **StringBuilder与StringBuffer**:两者都是用于字符串拼接,但StringBuffer线程安全,适用于多线程环境。 这些面试问题涉及Java基础、Web开发、并发编程等多个领域,全面展示了Java开发者应掌握的核心技能。