java面试题

题目很基础,但是我还有一半没有回答上
在这里插入图片描述
1.Servlet的生命周期和工作原理,阐述Servlet请求中转发和重定向的区别?

(1)实例化。客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,如果没有的话就通过Servlet构造函数创建一个实例。

(2)初始化。调用Servlet的init()方法完成初始化工作,此方法只调用一次。

(3)处理请求。容器调用Servlet的service()方法处理请求,service()方法会根据请求的method属性来决定调用doGet()方法还是doPost()方法完成具体的响应。

(4)销毁。调用Servlet的destroy()方法销毁Servlet实例,此方法只执行一次。

Servlet中的转发:

客户端浏览器的地址栏不会改变,整个转发的过程是同一个请求。整个过程是一个请求,一个响应。转发只能在系统的内部,转发可以传递数据。

重定向:

浏览器地址栏会改变。整个过程是2个请求,2个响应。重定向可以定向到其他的系统。重定向不能使用request域传递对象。

2.springmvc流程和spring事务管理
在这里插入图片描述
第一步:用户发起request请求,请求至DispatcherServlet前端控制器
第二步:DispatcherServlet前端控制器请求HandlerMapping处理器映射器查找Handler
DispatcherServlet:前端控制器,相当于中央调度器,各各组件都和前端控制器进行交互,降低了各各组件之间耦合度。
第三步:HandlerMapping处理器映射器,根据url及一些配置规则(xml配置、注解配置)查找Handler,将Handler返回给DispatcherServlet前端控制器
第四步:DispatcherServlet前端控制器调用适配器执行Handler,有了适配器通过适配器去扩展对不同Handler执行方式(比如:原始servlet开发,注解开发)
第五步:适配器执行Handler
Handler是后端控制器,当成模型。
第六步:Handler执行完成返回ModelAndView
ModelAndView:springmvc的一个对象,对Model和view进行封装。
第七步:适配器将ModelAndView返回给DispatcherServlet
第八步:DispatcherServlet调用视图解析器进行视图解析,解析后生成view
视图解析器根据逻辑视图名解析出真正的视图。
View:springmvc视图封装对象,提供了很多view,jsp、freemarker、pdf、excel。。。
第九步:ViewResolver视图解析器给前端控制器返回view
第十步:DispatcherServlet调用view的渲染视图的方法,将模型数据填充到request域 。
第十一步:DispatcherServlet向用户响应结果(jsp页面、json数据。。。。)

spring支持声明式管理事务,支持通过配置文件来进行

3.冒泡排序和二分查找

BubbleSort:从小到大排序,大的放在最右边。

5 2 1 9 6 两个两个进行比较,第一轮,可以把最大的9放在最右边 变成2 1 5 6 9 第一轮的两两比较需要比较4轮(5个数比较4次)

for (int i = 0; i < a.length-1; i++) { // 控制2个相邻位置的交换  第一轮时,就是j=0时候,两辆交换4次,j=1时,两两交换3次
	if (a[i] > a[i + 1]) {
		int temp = a[i];
		a[i] = a[i + 1];
	    a[i+1] = temp;
		}

2 1 5 6 9 接着是比较 这是第二轮,而这一轮,因为最大的已经跑到最右边了,所以只需要,把前4个的最大的放大倒数第二个位置上,这样会比较3次(4个数比较3次)

第三轮,比较2个数,把大的放在最右,2个数比较1次

想这样的操作一共进行了4轮(5个数),每一轮都是同样的步骤,都是两两比较,把大的放在最右边。所以这些代码是重复的,考虑复用代码。每一轮,都会减少一个需要比较的数,即每一轮的最右端的下标会少1.

for (int  j= 0; j < a.length-1; j++) { //控制交换的轮数。5个数要交换4轮 length-1个 j=0,1,2,3
	for (int i = 0; i < a.length-1-j; i++) { // 控制2个相邻位置的交换  第一轮时,就是j=0时候,两辆交换4次,j=1时,两两交换3次
			if (a[i] > a[i + 1]) {
				int temp = a[i];
				a[i] = a[i + 1];
				a[i+1] = temp;
			}
		}
	}

二分查找:

代码:(这样的写法必须是,从小到大进行排序)

//数组的逆序输出
public static int[] reverse(int arr[]){
	int arr2[] = new int [arr.length];
	for (int i = 0; i < arr.length; i++) {
		int value = arr[arr.length-(i+1)];
				arr2[i] = value;
	}
	return arr2;
}
public static void main(String[] args) {
int a[] ={9,7,6,5,3,2};
		a= MaxMin.reverse(a);
		System.out.println(Arrays.toString(a));
		int index = MaxMin.halfSearch(a, 3);
		System.out.println(index);
}

7.jsp的9个内置对象
request HttpServletRequest 请求
response HttpServletResponse 响应
session HttpSession 代表着一次会话,直到关闭浏览器结束会话。
pageContext pageContext 获得其他8个对象
application ServletContext 域对象
config 配置
out JspWriter 输出
exception
page 当前jsp页面

前天写完了,好像没保存,结果全没了,后面有时间在写上---------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值