Java程序员面试中,经常会遇到关于框架、数据结构、并发编程等方面的问题。以下是对这些问题的详细解答: 1. **Struts2 工作原理**: Struts2 是一个基于 MVC 设计模式的Web应用程序框架,它是Webwork2.2的升级版。其工作流程如下: - 客户端向Servlet容器(如Tomcat)发起请求。 - 请求经过一系列过滤器(Filter),其中ActionContextCleanUp帮助集成其他框架。 - FilterDispatcher被调用,ActionMapper决定是否需要调用特定Action。 - 若需要调用Action,FilterDispatcher将请求交给ActionProxy。 - ActionProxy通过Configuration Manager找到Action配置,创建ActionInvocation实例。 - ActionInvocation调用Action,并在前后执行相关拦截器(Interceptor)。 - Action执行完成后,ActionInvocation根据struts.xml配置找到对应的结果,可能是JSP或FreeMarker模板进行渲染。 2. **Java访问修饰符**: - `public`:可在任何地方访问。 - `protected`:在同一包内及子类中可访问。 - `friendly(默认)`:在同一包内可访问。 - `private`:仅在当前类中可访问。 3. **ArrayList与Vector的区别**: - 同步性:Vector是线程安全的,ArrayList不是。 - 数据增长:Vector增长为原来的两倍,ArrayList增长为其一半。 4. **HashMap与Hashtable的区别**: - 历史:Hashtable基于Dictionary,HashMap是Map接口的实现。 - 同步性:Hashtable线程安全,HashMap不是。 - 值:HashMap允许null键值,Hashtable不允许。 5. **char存储中文**: Java中的char类型可以存储中文,因为它使用Unicode编码,每个char占16位,足以容纳一个中文字符。 6. **多线程实现**: 多线程有两种实现方式: - 继承Thread类并重写run()方法。 - 实现Runnable接口,然后创建Thread实例并传入Runnable对象。 7. **同步机制**: 同步有以下两种实现: - 使用`synchronized`关键字修饰代码块或方法,提供互斥访问。 - 使用wait()、notify()和notifyAll()方法进行线程通信。 8. **float类型赋值**: 浮点型变量可以直接赋值3.4,但可能会丢失精度,建议使用强制类型转换 `(float)3.4`。 9. **Java集合框架**: - Collection:基础接口,包含List和Set。 - List:有序且允许重复元素,如LinkedList、ArrayList和Vector。 - Set:不允许重复元素,如HashSet、TreeSet。 - Map:键值对存储,如Hashtable、HashMap、WeakHashMap。 - 自定义数据结构:可以通过实现Collection或Map接口来创建自己的数据结构。 以上内容涵盖了Java程序员面试中常见的技术问题,包括Struts2的工作流程、Java访问权限、集合框架以及多线程和同步机制等知识点。了解并熟练掌握这些内容,对于提升面试表现和实际开发能力都非常关键。
剩余11页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助