杭州Java开拓经典口试题(十一)
1、SpringMVC的事情流程?
(1) 用户发送要求至前端掌握器DispatcherServlet
(2) DispatcherServlet收到要求调用HandlerMapping处理器映射器。
(3) 处理器映射器根据要求url找到详细的处理器,天生处理器工具及处理器拦截器(如果有则天生)一并返回给DispatcherServlet。
(4) DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
(5) 实行处理器(Controller,也叫后端掌握器)。
(6) Controller实行完成返回ModelAndView
(7) HandlerAdapter将controller实行结果ModelAndView返回给DispatcherServlet
(8) DispatcherServlet将ModelAndView传给ViewReslover视图解析器
(9) ViewReslover解析后返回详细View
(10) DispatcherServlet对View进行渲染视图(即将模型数据添补至视图中)
(11) DispatcherServlet响运用户
2、垃圾回收的优点和事理。并考虑2 种回收机制。
答:Java 措辞中一个显著的特点便是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java 程序员在编写程序的时候不再须要考虑内存管理。由于有个垃圾回收机制,Java 中的工具不再有“浸染域”的观点,只有工具的引用才有“浸染域”。垃圾回收可以有效的防止内存透露,有效的利用可以利用的内存。垃圾回收器常日是作为一个单独的低级别的线程运行,不可预知的情形下对内存堆中已经去世亡的或者永劫光没有利用的工具进行清楚和回收,程序员不能实时的调用垃圾回收器对某个工具或所有工具进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
3、jsp 有哪些动作?浸染分别是什么?
答:JSP 共有以下6 种基本动作:
jsp:include:在页面被要求的时候引入一个文件;
jsp:useBean:探求或者实例化一个JavaBean。;
jsp:setProperty:设置JavaBean 的属性。;
jsp:getProperty:输出某个JavaBean 的属性;
jsp:forward:把要求转到一个新的页面;
jsp:plugin:根据浏览器类型为Java 插件天生OBJECT 或EMBED 标记。
首先,我们要明确壅塞行列步队的定义:
壅塞行列步队(BlockingQueue)是一个支持两个附加操作的行列步队。这两个附加的操作是:在行列步队为空时,获取元素的线程会等待行列步队变为非空。当行列步队满时,存储元素的线程会等待行列步队可用。 壅塞行列步队常用于生产者和消费者的场景,生产者是往行列步队里添加元素的线程,消费者是从行列步队里拿元素的线程。壅塞行列步队便是生产者存放元素的容器,而消费者也只从容器里拿元素。
壅塞行列步队的一个大略实现:
```
public class BlockingQueue {
private List queue = new LinkedList();
private int limit = 10;
public BlockingQueue(int limit){
this.limit = limit;
}
public synchronized void enqueue(Object item)throws InterruptedException {
while(this.queue.size() == this.limit) {
wait();
}
if(this.queue.size() == 0) {
notifyAll();
}
this.queue.add(item);
}
public synchronized Object dequeue() throws InterruptedException{
while(this.queue.size() == 0){
wait();
}
if(this.queue.size() == this.limit){
notifyAll();
}
return this.queue.remove(0);
}
}
```
在enqueue和dequeue方法内部,只有行列步队的大小即是上限(limit)或者下限(0)时,才调用notifyAll方法。如果行列步队的大小既不即是上限,也不即是下限,任何线程调用enqueue或者dequeue方法时,都不会壅塞,都能够正常的往行列步队中添加或者移除元素。
未完待续~