本文档汇总了Java笔试面试中常见的各类问题,涵盖了从基础概念到高级技术的广泛内容。以下是部分知识点详解:
1. **SHH框架原理和好处**
- SHH(未提及具体框架,可能是Shiro、Hessian、Hadoop等)是一个用于Java的安全性和轻量级通信框架。SHH的好处可能包括权限管理、跨域通信和高效数据交换。具体原理会涉及认证、授权、序列化等。
2. **ORM框架:Hibernate, Struts, Spring**
- Hibernate:持久化框架,将Java对象映射为数据库表,提供对象-关系映射和事务管理。
- Struts:MVC架构的Web应用框架,简化Web开发过程。
- Spring:IoC/DI容器,提供依赖注入、AOP(面向切面编程)等功能,提高代码的可测试性和解耦。
3. **Java类继承和多线程**
- 可以继承的类:只有Java类,不能继承接口。
- 多线程实现:通常有Thread类,ExecutorService,以及Java并发库提供的Future和Callable接口。
- 同步实现:synchronized关键字,Lock接口,以及java.util.concurrent包中的Semaphore、CountDownLatch等。
4. **JSP动态/静态INCLUDE的区别**
- 动态INCLUDE:在服务器端执行,根据请求内容动态插入页面。
- 静态INCLUDE:预编译时就包含,不随请求变化。
5. **Java基础操作**
- 昨天当前时刻:使用Calendar或LocalDateTime类,结合`SimpleDateFormat`格式化。
- 计数器实现:FileReader/Writer配合BufferedReader/PrintWriter进行文件操作,或使用AtomicInteger等并发工具。
6. **面向对象基础**
- 面向对象特征:封装、继承、多态。
- 数据类型:Java中String不是基本数据类型,而是引用类型。
7. **基本数据类型与包装类**
- int与Integer:int是基本类型,Integer是其包装类,提供了自动装箱和拆箱的功能。
- String与StringBuffer:String是不可变的,而StringBuffer是可变的。
8. **运行时异常与一般异常**
- 运行时异常是程序逻辑错误,必须捕获或声明;一般异常是程序正常执行中可能出现的问题,可选择处理。
9. **Servlet与CGI**
- Servlet是Java Web开发的核心组件,有完整的生命周期管理。
- CGI(Common Gateway Interface)是一种外部脚本处理机制,效率较低且非Java原生。
10. **集合框架**
- ArrayList、Vector、LinkedList:性能和特性的比较,如ArrayList动态扩容、LinkedList插入删除高效等。
- Collection接口和Collections工具类:前者是泛型集合接口,后者提供了集合操作的便利方法。
11. **运算符和逻辑结构**
- `&`和`&&`:位运算符和逻辑与操作符,用途和行为不同。
- HashMap和Hashtable:哈希表,区别在于HashMap允许null键值对,线程安全程度不同。
12. **final、finally、finalize的区别**
- final:修饰符,常量、类、方法的属性。
- finally:try-catch-finally块中的代码,无论是否发生异常都会执行。
- finalize:对象被垃圾回收前的回调方法,但不保证执行。
13. **睡眠与等待**
- sleep():线程暂停,释放CPU,但保持活动状态。
- wait():线程等待,释放锁,进入等待状态。
14. **方法重载与重写**
- Overload:方法名相同,参数列表不同的行为。
- Override:子类重写父类方法,需保持签名一致。
- 返回值类型不能改变。
15. **错误与异常**
- Error:系统级别的严重错误,如内存溢出。
- Exception:程序运行时的异常,可以捕获和处理。
16. **同步与异步**
- 同步:多个任务按顺序执行,如synchronized关键字。
- 异步:任务并发执行,通过回调、Future等方式通知完成。
- 例如:数据库查询,同步阻塞等待,异步则在后台执行。
17. **抽象类与接口**
- AbstractClass:可以有默认方法实现,可实例化,主要用于继承。
- Interface:只定义方法,无实现,用于多继承,用于实现开闭原则。
18. **内存模型:堆与栈**
- 堆:存放对象实例,全局共享。
- 栈:存放局部变量和方法调用,线程私有。
19. **HTTP请求处理:forward与redirect**
- forward:服务器内部请求转发,保留原来的请求URI。
- redirect:客户端重定向,发送新的URL给浏览器。
20. **EJB与JavaBean**
- EJB:企业级JavaBeans,全功能的组件,常用于J2EE应用。
- JavaBean:轻量级,用于简单数据交互的组件。
21. **类内部类的区别**
- StaticNestedClass:静态内部类,全局可见,独立于实例。
- InnerClass:实例内部类,访问实例变量。
22. **assert用法**
- assert用于检查程序条件,断言某个表达式的真值,调试时使用。
23. **垃圾收集(GC)**
- Java自动内存管理机制,负责回收不再使用的对象所占用的内存,避免内存泄漏。
24. **类型转换错误**
- shorts1=1;s1=s1+1;错误:类型不匹配,应使用short类型进行加法。
- shorts1=1;s1+=1;正确,自动类型转换。
25. **Math.round()方法**
- Math.round(11.5)返回12,Math.round(-11.5)返回-12。
26. **多线程同步示例**
- 使用synchronized关键字,或使用CountDownLatch/semaphore等工具,实现四个线程互斥操作。
27. **Java的goto语句**
- Java中已弃用`goto`语句,因为可能导致代码难以理解和维护,推荐使用更现代的控制流语句。
总结:本文档提供了丰富的Java笔试面试知识点,涵盖了从基础语法到框架原理、并发编程、内存管理等多个方面,有助于准备Java面试者全面理解并掌握相关技能。