面试题集3:javaEE基础

1、SERVLET APIforward()redirect()的区别?
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

**2、什么情况下调用doGet()doPost()? **
答:Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()

3、request.getAttribute()request.getParameter() 有何区别?
答:getAttribute是返回对象,getParameter返回字符串 。总的来说:request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。

4、jsp有哪些内置对象?作用分别是什么? 分别有什么方法?
答:
JSP中九大内置对象为:

|对象|含义|类型|作用域|
|------------------|
|request |请求对象| javax.servlet.ServletRequest|Request|
|response|响应对|javax.servlet.SrvletResponse|Page|
|pageContext|页面上下文对象|javax.servlet.jsp.PageContext |Page|
|session|会话对象|javax.servlet.http.HttpSession|Session|
|application|应用程序对象 |javax.servlet.ServletContext|Application|
|out|输出对象| javax.servlet.jsp.JspWriter|Page|
|config|配置对象|javax.servlet.ServletConfig|Page|
|page|页面对象| javax.lang.Object|Page|
|exception|例外对象|javax.lang.Throwable|page|

相关方法:

  • request对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象。常用的方法有:getParameter、getParameterNames 和getParameterValues通过调用这几个方法来获取请求对象中所包含的参数的值。
  • response 对象代表的是对客户端的响应,也就是说可以通过response 对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用
  • pageContext对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性。常用的方法有 :findAttribute、getAttribute、getAttributesScope 和getAttributeNamesInScope。一般情况下pageContext对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理。
  • session对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。

**5、页面间对象传递的方法 **
答:request,session,application,cookie等。

6、J2EE是技术还是平台还是框架? 什么是J2EE
答:J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。

7、什么是MVC模式?
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。
这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层:

  • 1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
  • 2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
  • 3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

8、解析xml有哪几种方式,优缺点?

  • 1、JDOM生成和解析XML
    为减少DOM、SAX的编码量,出现了JDOM。优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。
  • 2、SAX生成和解析XML文档
    为解决DOM的问题,出现了SAXSAX事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少。SAX解析器代码比DOM解析器代码小,适于Applet下载。缺点:不是持久的,事件过后若没保存数据,那么数据就丢了。无状态性,从事件中只能得到文本,但不知该文本属于哪个元素。使用场合:Applet。只需XML文档的少量内容,很少回头访问,机器内存少。
  • 3、DOM生成和解析XML文档
    XML文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作,支持删除、修改、重新排列等多种功能。缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间。使用场合:一旦解析了文档还需多次访问这些数据,硬件资源充足(内存、CPU)。
  • 4、DOM4J生成和解析XML文档
    DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java 软件都在使用DOM4J来读写XML,特别值得一提的是连 SunJAXM也在用DOM4J

未完待续。。。

126、什么是SpringIOC?
127、什么是Aop?
128、Spring的核心类有哪些?
131、乐观锁与悲观锁的主要区别在哪?
132、为什么要自定义异常?
133、你所做的项目中异常是如何处理的?
134、Synchronized 和 static Synchronized 的区别?
135、内存泄露与内存溢出的区别?
137、字符流和字节流的区别?
141、Jsp是java类吗?具体是哪个?
142、Jsp中的静态include与动态include的区别?
143、js中null 与 undefined的区别?
144、servlet为什么不是线程安全的? 如何保证servlet的线程安全?
145、hibernate中 load和get的区别?
146、hibernate的工作原理?
147、hibernate与mybatis的共同点,不同点?
148、hibernate如何配置懒加载 ?
149、hibernate 中的注解与配置模式有什么区别?
150、webservice有几种实现方式?
151、webservice配置步骤?
152、数据库设计表原则?
154、左连接与右连接的区别?
155、Spring中AOP主要用于哪些方面?
156、Spring中AOP的实现方式?
159、conCurrentHashMap的实现方式?
160、threadLoacl的结构? 主要用于什么场景?
161、java中什么是重入锁,什么是读写锁,它们各自的应用场景?
162、什么情况会发生死锁,列举一种,发生后如何解决?
163、JVM发生OOM 是如何造成的,列举一种?
164、如何快速定位和处理OOM (内存泄露与内存溢出)?
165、Jvm的垃圾回收机制有哪些? 高级
167、gc怎样判定对象是需要回收的?
168、什么是双亲委派模型? 优点是什么?
170、hibernate的缓存机制?
171、使用hibernate在性能方面有哪些考虑?
174、Webservice如何控制事务?
176、索引是越多越好吗,为什么?如何衡量索引后的性能?
177、什么情况下索引会不起作用?
180、Sql优化的逻辑?
181、Spring中如何配置多个数据源(JPA/Hibernate/Mybatis)?
182、Cglib的动态代理与JDK的动态代理有什么区别?
192、如何处理socket丢包?
194、个人发展的长期和短期规划是什么?
196、简要描述一下数据库的主键/外键和约束,以及追加的sql命令。
197、如何修改Tomcat服务器的端口号,如何让tomcat启动指定目录下的web程序。
198、简要介绍一下数据库连接池,以及一些常用的连接池(默认是c3p0,还有proxool,druid等)的配置和使用。
199、Hibernate中list()方法和iterator()方法有什么差别,get()和Load()方法有什么差别 中级
200、请谈一下Spring的事务管理方式,以及如何将spring的事务管理配置到指定服务方法上。
201、Spring环境下多数据源的事务管理如何实现,可以使用哪一些框架(Atomikos,JOTM)?
202、简要介绍一下ExecutorService对象有哪几种,每一种ExecutorService有什么不同?如何让一个操作在线程池中运行?
203、 ThreadPoolExecutor中,submit方法和excecute方法有什么不同? 中级
204、简要介绍一下线程的几种状态,线程进入挂起状态可能有哪几种情况,每种情况如何唤醒? notify和notifyAll方法有什么不一样?
回答sleep和资源使用阻塞就可以
205、简要说明Java Input/OutputStream和Reader的差别,如果要设置读/写内容的编码集,在哪一个上设置? Java的I/O机制使用了什么设计模式?
209、Spring 初始化一个Bean的方式有哪几种,如何将一个值赋给Bean对象? 中级
210、在Java程序中如何获得Spring容器中的一个对象?有几种方式?
211、在Java程序中如何获得Spring容器的上下文对象?
212、Hibernate对象类中有的属性是延迟加载的,如何在一次Session连接获取数据对象时同时获取这些属性? 高级
213、Mybatis如何实现分页,如何针对不同的数据库实现统一的分页? 高级
214、请简要介绍Mybatis中缓存的使用,Mybatis的缓存不同Session间可以互相访问么?Mybatis使用的缓存何时会更新?高级
216、 java内存参数中的-Xms,-Xmx,-Xss,-XX:PermSize,-XX:MaxPermSize各自的含义
217、 Tomcat和 在服务器端和客户端的连接方式上有什么差异
222、Mybatis的查询命令中如果有多个参数该如何写Mapper文件?
223、对Hibernate操作的拦截哪两种方式?这两种方式有什么差别?
224、Spring MVC Controller中的方法,如何指定请求的返回数据形式?
225、使用Spring MVC搭建的Restful请求,如何指定执行的请求的编码集?
226、请简要介绍Spring MVC中使用的几个注解的含义:@RequestBody, @RequestMapping, @RequestParam, @PathVariable
227、在Spring MVC中,“xxxRequest/{id}”和“xxxRequest?id=?”两种类型的请求有什么不同?
228、Spring MVC的请求中如果包含多个参数时,怎样定义参数能使得请求方法更简洁?
231、什么是Java的内部类,为什么要引入内部类,请举出一个java内部类的例子?初级

你可能感兴趣的:(面试题集3:javaEE基础)