很久没有来更新了,今天正好有空更新一篇,不知道正在准备面试的小伙伴有没有错过啊?确定是没有,由于金三银四尚未来,今年开开心心过年,明年工做来一个大丰收!前端
一、SpringMVC的工做流程?c++
(1) 用户发送请求至前端控制器DispatcherServlet程序员
(2) DispatcherServlet收到请求调用HandlerMapping处理器映射器。面试
(3) 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(若是有则生成)一并返回给DispatcherServlet。后端
(4) DispatcherServlet经过HandlerAdapter处理器适配器调用处理器浏览器
(5) 执行处理器(Controller,也叫后端控制器)。app
(6) Controller执行完成返回ModelAndViewjsp
(7) HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServletthis
(8) DispatcherServlet将ModelAndView传给ViewReslover视图解析器url
(9) ViewReslover解析后返回具体View
(10) DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
(11) DispatcherServlet响应用户
二、垃圾回收的优势和原理。并考虑2 种回收机制。
答:Java 语言中一个显著的特色就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java 程序员在编写程序的时候再也不须要考虑内存管理。因为有个垃圾回收机制,Java 中的对象再也不有“做用域”的概念,只有对象的引用才有“做用域”。垃圾回收能够有效的防止内存泄露,有效的使用可使用的内存。垃圾回收器一般是做为一个单独的低级别的线程运行,不可预知的状况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或全部对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
三、jsp 有哪些动做?做用分别是什么?
答:JSP 共有如下6 种基本动做:
jsp:include:在页面被请求的时候引入一个文件;
jsp:useBean:寻找或者实例化一个JavaBean。;
jsp:setProperty:设置JavaBean 的属性。;
jsp:getProperty:输出某个JavaBean 的属性;
jsp:forward:把请求转到一个新的页面;
jsp:plugin:根据浏览器类型为Java 插件生成OBJECT 或EMBED 标记。
四、如何用Java实现阻塞队列?
首先,咱们要明确阻塞队列的定义:
阻塞队列(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方法时,都不会阻塞,都可以正常的往队列中添加或者移除元素。