初级工程师的面试

1、说说Servlet的工做流程?前端

一、Web客户向Servlet容器发送http请求。java

二、Servlet容器解析Http请求,Servtet容器建立HttpRequest对象,封装Http信息,同时建立HttpResponse对象程序员

三、Servlet容器调用HttpServlet的service方法,service方法根据请求类型调用对应的doXX()方法,而后调用HttpRequest相关方法,好比getParameter获取请求数据,而后调用HttpResponse相关方法,生成相应数据。web

4.Servlet容器把HeetpServlet相应结果传递给web客户。ajax

 

2、怎么理解Servlet?spring

Servlet是一套规范,内部提供一套接口,运行在Application服务器中,经过http协议用来接收客户端的请求和回复响应。具体的实现类须要服务器厂商提供。sql

因为部署在服务器上的web项目,必须经过在浏览器的地址栏中输入地址才能够被访问到,因此Servlet也须要配置地址才能被浏览器访问。数据库

 

3、谁建立了Servlet?Servlet容器:Tomcat、JBoss、webLogic等。编程

 

4、如何新建一个Servlet?能够经过继承注册两个方式建立

一、继承:想要建立一个Servlet,必须继承HttpServlet类,或实现Servlet接口;

二、注册:在web.xml里配置Servlet的配置映射信息。小程序

Servlet注册:Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问的路径,才能够被Servlet引擎加载和被浏览器访问。

一个<Servlet>标签用于注册一个Servlet,它含有两个主要的子元素:<Servlet-name>和<Servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。

一个<Servlet-mapping>标签用于映射一个已注册的Servlet的一个对外访问路径,它包含两个子元素:<servlet-name>和<url-pattern>,分别用于Servlet的注册名称

和Servlet的对外访问路径。

 

5、JSP的工做流程 (JSP的执行过程)

一、客户端发出Request(请求);

二、JSP Container将JSP转译成Servlet的源代码;

三、将产生的Servlet的源代码通过编译后,并加载到内存;

四、把结果Response(响应)至客户端。  

 

6、SpringMVC的工做流程

一、用户发起请求到前端控制器(DispatcherServlet)

二、前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):经过xml配置或者注解进行查找

三、找到之后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)

四、前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

五、处理器适配器去执行Handler

六、Handler执行完给处理器适配器返回ModelAndView

七、处理器适配器向前端控制器返回ModelAndView

八、前端控制器请求视图解析器(ViewResolver)去进行视图解析

九、视图解析器像前端控制器返回View

十、前端控制器对视图进行渲染

十一、前端控制器向用户响应结果

 

7、springMVC中的几个组件的用途:

前端控制器(DispatcherServlet):接收请求,响应结果,至关于电脑的CPU。

处理器映射器(HandlerMapping):根据URL去查找处理器

处理器(Handler):(须要程序员去写代码处理逻辑的)

处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就能够支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)

视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,能够解析成对应的页面

 

8、Spring的AOP与IOC

一、IoC(Inversionofcontrol):控制反转

概念:控制权由对象自己转向容器;由容器根据配置文件去建立实例并建立各个实例之间的依赖关系

核心:bean工厂;在Spring中,bean工厂建立的各个实例称做bean

二、AOP(Aspect-OrientedProgramming):面向方面编程

 代理方式分为两种:静态代理、动态代理

静态代理的用途:

针对每一个具体类分别编写代理类;

针对一个接口编写一个代理类;

动态代理:针对一个方面编写一个InvocationHandler,而后借用JDK反射包中的Proxy类为各类接口动态生成相应的代理类

产生动态代理的类:java.lang.refect.Proxy

装备必须实现InvocationHandler接口实现invoke方法

三、什么是类的反射

经过类说明能够获得类的父类、实现的接口、内部类、构造函数、方法、属性并能够根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值

 

9、谈谈MyBatis的优缺点?

优势:

一、简单易学。  mybatis自己就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,经过文档和源代码,能够比较彻底的掌握它的设计思路和实现。

二、灵活。mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。经过sql基本上能够实现咱们不使用数据访问框架能够实现的全部功能,或许更多。

三、解除sql与程序代码的耦合。经过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提升了可维护性。

四、提供映射标签,支持对象与数据库的orm字段关系映射

五、提供对象关系映射标签,支持对象关系组建维护

六、提供xml标签,支持编写动态sql。

缺点:

一、编写SQL语句时工做量很大,尤为是字段多、关联表多时,更是如此。

二、SQL语句依赖于数据库,致使数据库移植性差,不能更换数据库。

三、框架仍是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,可是整个底层数据库查询实际仍是要本身写的,工做量也比较大,并且不太容易适应快速数据库修改。

四、二级缓存机制不佳

 

myBatis的原理

  MyBatis应用程序根据XML配置文件建立SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所须要的全部方法,能够经过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完以后关闭SqlSession。

 

10、AJAX都有哪些优势和缺点?

优势:

一、最大的一点是页面无刷新,用户的体验很是好。
二、使用异步方式与服务器通讯,具备更加迅速的响应能力。
三、能够把之前一些服务器负担的工做转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。而且减轻服务器的负担,ajax的原则是“按需取数据”,能够最大程度的减小冗余请求,和响应对服务器形成的负担。
四、基于标准化的并被普遍支持的技术,不须要下载插件或者小程序。

缺点:

一、ajax不支持浏览器back按钮。
二、安全问题 AJAX暴露了与服务器交互的细节。
三、对搜索引擎的支持比较弱。
四、破坏了程序的异常机制。

五、不容易调试。

 

11、简述ajax的执行过程?

  1. 建立XMLHttpRequest对象,也就是建立一个异步调用对象

  2. 建立一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息

  3. 设置响应HTTP请求状态变化的函数

 4. 发送HTTP请求

 5. 获取异步调用返回的数据

 6. 使用JavaScript和DOM实现局部刷新

 

12、谈谈对重载与重写的区别?

重载:

       一、参数类型、个数、顺序至少有一个不相同。 

  二、不能重载只有返回值不一样的方法名。

  三、存在于父类和子类、同类中。

重写:

        一、方法名、参数、返回值相同。

   二、子类方法不能缩小父类方法的访问权限。

   三、子类方法不能抛出比父类方法更多的异常(但子类方法能够不抛出异常)。

   四、存在于父类和子类之间。

   五、方法被定义为final不能被重写。

 

十3、谈谈抽象与接口的区别?

1 接口只能包含抽象方法,抽象类能够包含普通方法。 2 接口只能定义静态常量属性,抽象类既能够定义普通属性,也能够定义静态常量属性。 3 接口不包含构造方法,抽象类里能够包含构造方法。 

相关文章
相关标签/搜索