几道Java相关的面试题

#coding
目录

1. 数据库编码和服务端代码编码一致情况下,Get请求可能产生乱码的原因及解决办法?

2. Struts2和SpringMVC的区别?

3. Spring MVC的Controller是单例的吗,有什么影响吗?

// 非静态成员变量j的属性值会重复利用,不会累加
// 解决办法:不要定义非静态成员变量,或者使用多例 @Scope("prototype")
@Controller
@RequestMapping("/test")
public class IndexController{
	private static int i = 0;
	private int j = 0;
	public String test(){
		System.out.println((i++) + "|" + (j++));
		return "test";
	}
}

4. MyBatis如何防止sql注入?

Mybatis中的#{}${}的区别

5. Hibernate一级缓存、二级缓存?

6. 使用过哪些Socket框架?

7. Spring MVC 请求-响应流程

  1. 浏览器发送请求的url以及其他信息

  2. DispatcherServlet先会查询处理器映射(handler mapping),来确定发送给哪个控制器。

  3. 确定合适的控制器后,将请求发送给选中的控制器

  4. 控制器完成逻辑处理后,将模型数据打包,并标示出输出的视图名,将请求连同模型和视图名发送回DispatcherServlet

  5. DispatcherServlet使用视图解析器(view resolver)来将逻辑视图名匹配一个特定的视图实现(jsp或其它)

  6. DispatcherServlet匹配到对应的视图实现

  7. 视图使用模型数据渲染输出,这个输出通过响应对象传递给客户端

8. 对 HTTP 协议无状态的理解

无状态的理解

状态的含义:客户端和服务器在某次会话中产生的数据。

无状态就意味着,这些数据不会被保留,但是通过增加cookie和session机制,现在的网络请求其实是有状态的。

在没有状态的http协议下,服务器也一定会保留你每次网络请求对数据的修改,但这跟保留每次访问的数据是不一样的,保留的只是会话产生的结果,而没有保留会话。

知乎上有个哥们儿举的一个例子:

有状态:

A:你今天中午吃的啥? B:吃的大盘鸡。 A:味道怎么样呀? B:还不错,挺好吃的。

无状态:

A:你今天中午吃的啥? B:吃的大盘鸡。 A:味道怎么样呀? B:???啊?啥?啥味道怎么样?

所以需要cookie这种东西:

A:你今天中午吃的啥? B:吃的大盘鸡。 A:你今天中午吃的大盘鸡味道怎么样呀? B:还不错,挺好吃的。

9. Redis 存储机制

10. AOP的原理

11.分布式事务解决方案

12. Object 对象的方法有哪些?分别有什么作用?该什么场景用?

Object o = new Object(); 

o.equals(); 

o.hashCode(); 

o.toString(); 

o.getClass(); 

o.wait(); 

o.notify(); 

o.notifyAll(); 

评论区