"初级java面试中必考的120道题目,涵盖面向对象、字符串处理、集合框架、异常处理、多线程、内存管理、接口与类、JSP及Servlet等多个核心知识点,适合新手准备面试使用。"
在Java面试中,掌握以下知识点至关重要:
1. 面向对象的特征包括封装、继承、多态。封装是将数据和操作数据的方法绑定在一起,继承允许子类继承父类的属性和方法,多态则是指一个接口可以有多种不同的实现。
2. String在Java中是一个对象,不是基本数据类型。它的不可变性使得在进行字符串操作时会创建新的对象,影响性能。
3. String与StringBuffer的主要区别在于线程安全和性能。String是不可变的,适合少量字符串操作;StringBuffer线程安全,适用于多线程环境下的字符串拼接。
4. 运行时异常(RuntimeException)不需强制捕获,而一般异常(Exception)需要。两者都是异常体系的一部分,但运行时异常表示编程错误,一般异常则通常用于可恢复的程序状态。
5. Servlet生命周期包括加载、初始化、服务、销毁四个阶段。Servlet与CGI的区别在于,Servlet是基于Java的服务器端组件,可持久化,而CGI是基于脚本的一次性进程。
6. ArrayList、Vector和LinkedList分别适用于不同场景。ArrayList和Vector都是基于数组实现,支持快速随机访问,但Vector是线程安全的;LinkedList适用于频繁的插入和删除操作,但随机访问较慢。
7. EJB(Enterprise JavaBeans)基于Java EE实现,SessionBean处理业务逻辑,EntityBean代表数据库中的实体,StatefulBean保持会话状态,StatelessBean不保持。
8. Collection是所有集合接口的父接口,Collections是工具类,提供集合操作的静态方法。
9. &是按位与运算符,&&是逻辑与运算符。前者始终计算两边的操作数,后者在左操作数为假时不会计算右操作数。
10. HashMap和Hashtable都是键值对存储结构,HashMap非线程安全但效率更高,Hashtable线程安全但性能较低。
11. final修饰变量不可改变,finally确保代码块一定会执行,finalize是对象被垃圾回收前调用的方法。
12. sleep()使当前线程暂停指定时间,wait()用于线程间通信,让线程等待其他线程的通知。
13. Overload(重载)是方法名相同但参数列表不同的方法,Override(重写)是子类覆盖父类的方法。重载不改变返回值类型,重写则必须保持返回值类型一致。
14. error通常表示系统级错误,无法恢复,而exception是程序运行时的异常,可以捕获并处理。
15. 同步(synchronized)确保同一时间只有一个线程执行某段代码,防止数据冲突;异步则允许多个线程并发执行,提高效率。根据并发需求选择使用。
16. abstract class可以有抽象方法和具体方法,接口(interface)只能声明抽象方法。抽象类可有实例变量,接口不能。接口强调多继承,抽象类强调单一继承。
17. 堆(heap)是Java对象分配的内存区域,栈(stack)用于存储基本类型和对象引用,局部变量等。栈速度快,堆空间大。
18. forward内部跳转,请求处理完成后,浏览器地址栏不变;redirect外部跳转,浏览器重新发起请求,地址栏显示新URL。
19. EJB(Enterprise JavaBeans)是企业级应用组件,JavaBean是轻量级组件,EJB主要用于服务器端,JavaBean常用于视图层。
20. StaticNestedClass是静态嵌套类,与外部类之间没有实例关联;InnerClass是内部类,每个实例都与外部类实例相关联。
21. JSP中的动态INCLUDE(<jsp:include>)在每次请求时都会解析包含的页面,静态INCLUDE(<%@ include %>)在编译时完成,只解析一次。
22. assert用于断言,用于调试阶段检查某些条件是否满足,生产环境中通常关闭。
23. GC(Garbage Collector)是Java的内存回收机制,自动回收不再使用的对象,避免内存泄漏。需要GC是因为自动管理内存可以简化开发,同时避免程序员手动管理内存可能导致的问题。
24. shorts1=1;s1=s1+1;错误在于短路赋值,需要类型转换;shorts1=1;s1+=1;是合法的,因为Java自动拆箱和装箱。
25. Math.round(11.5)等于12,Math.round(-11.5)等于-11。
26. Strings=newString("xyz");创建了1个String对象。String是不可变的,所以字符串连接操作会创建新对象。
27. 设计线程同步的程序,可以使用synchronized关键字或Lock接口来控制并发访问共享变量j,确保增加和减少操作的正确性。
28. Java没有goto语句,可以使用break、continue、return或标签(label)来控制流程。
29. 启动线程应使用start()方法,它会调用run()方法并创建新的执行线程。直接调用run()方法只会执行该方法,不会创建新线程。
30. EJB包通常包含ejb-jar.xml配置文件,定义EJB组件的元数据,用于容器管理。
以上只是部分题目涉及的知识点,完整理解和掌握这些内容将有助于Java初学者在面试中表现出色。