车享网技术面试题:Java内存监控、设计模式与多线程

需积分: 3 3 下载量 121 浏览量 更新于2024-09-10 收藏 13KB DOCX 举报
"2015届车享网校招面试题主要涵盖了Java内存管理、设计模式、JMS消息类型、Servlet操作Cookie、线程管理、项目架构、开源框架、多线程使用场景、锁机制以及Spring的RESTful实现等知识点。" 1. **Java内存泄露监控与优化**:内存泄露是Java程序中常见的问题,可以通过使用如VisualVM、MAT (Memory Analyzer Tool)等工具来监控内存使用情况,找出可能的内存泄漏源。减少内存泄露的关键在于合理使用对象,及时释放不再使用的资源,避免静态集合类持有大量对象引用。 2. **设计模式**:设计模式是软件设计中的最佳实践,常见的有单例模式、工厂模式、观察者模式、装饰器模式、适配器模式等。UML图是用于表示这些模式的结构和行为的图形化工具,可以帮助理解模式的实现方式。 3. **JMS消息类型**:JMS(Java Message Service)提供了五种消息类型:点对点(Queue)、发布/订阅(Topic)、请求/响应(Request/Reply)、事务消息(Transacted Sessions)和持久订阅(Durable Subscription)。 4. **Servlet设置与删除Cookie**:在Servlet中,使用`response.addCookie(Cookie cookie)`添加Cookie,`cookie.setMaxAge(0)`则可将Cookie设置为立即失效,达到删除效果。 5. **对象与线程GC**:即使对象之间存在依赖关系,如果线程无法访问,垃圾收集器仍会在满足条件时回收它们。线程是否运行并不影响垃圾回收。 6. **线程yield与sleep方法**:`yield()`方法让当前线程暂停,让相同优先级的线程有机会执行,而不会指定具体时间。`sleep()`方法则使线程暂停指定时间,允许所有其他线程执行。 7. **项目图与框架图**:面试中可能要求应聘者展示项目结构,包括系统架构、模块划分以及所使用的框架等,这反映了候选人的项目管理和设计能力。 8. **开源框架**:Netty和Mina是两种流行的Java网络通信框架,常用于构建高性能、高并发的服务。 9. **多线程使用场景**:多线程通常用于数据并行处理,如大数据分析、Web爬虫的多线程拉取数据,提高系统并发性和效率。 10. **读写锁的使用**:读锁在多读少写的情景下提高性能,允许多个读操作同时进行。写锁则保证同一时间只有一个线程写入,防止数据不一致。 11. **Spring的RESTful实现**:Spring通过`@RestController`注解和`@RequestMapping`等来支持RESTful API的创建,实现HTTP方法与服务方法的映射。 12. **JVM参数**:`-xms`和`-xmx`分别设定初始堆大小和最大堆大小,`-xmn`设定年轻代大小,`-xss`设定每个线程的栈大小。了解这些参数有助于优化JVM性能。 13. **HTTP协议**:HTTP协议是Web应用的基础,涉及请求方法(GET、POST等)、状态码、头信息等概念,理解和掌握HTTP协议对于开发Web应用至关重要。 14. **Cookie与Session**:Cookie是客户端存储信息的方式,Session是服务器端存储用户信息的技术。两者都用于维持客户端与服务器间的会话状态,但Cookie数据量有限且安全性相对较低,Session则相对更安全但消耗服务器资源。