WEB 面试题(J2EE开发)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qian_meng/article/details/48583181

一、框架相关

1、jsp和servlet的区别、共同点、各自应用的范围??

JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

2、cookie和session的作用、区别、应用范围,session的工作原理???

Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。

3、jstl是什么?优点有哪些??

JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和PermittedTaglibsTLV)组成。优点有:
1、 在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。

4、j2ee的优越性主要表现在哪些方面?

MVC模式
a、J2EE基于JAVA 技术,与平台无关
b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。如BEA ,IBM,ORACLE等。
c、J2EE提供相当专业的通用软件服务。
d、J2EE提供了一个优秀的企业级应用程序框架,对快速高质量的开发系统打下了基础。
Model模型:应用程序的主体部分,用于表示业务逻辑。
View视图:应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
Controller控制器:用于根据用户的输入,控制用户界面数据显示,更新Model对象状态。
MVC模式的出现不仅实现了功能模块和显示模块的分离,同时还提够了应用系统的可维护、可扩展性、可移植性、和组建的可复用性。

5、Struts的优点

a、实现MVC模式,结构清晰,使开发者只需关注业务逻辑的实现。
b、有丰富的tag可以用,能大大提够开发效率,缩短开发时间。
c、页面导航。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处
d、提供Exception处理机制
e、支持L18N

9、过滤器和拦截器的区别

1、拦截器是基于java的反射机制的,而过滤器是基于函数回调
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只在容器初始化时调用一次
拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
过滤器:是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符.

10、Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。

工作原理:
1、读取并解析配置文件
2、读取并解析映射信息,创建SessionFactory
3、打开Sesssion
4、创建事务Transation
5、持久化操作
6、提交事务
7、关闭Session
8、关闭SesstionFactory
优点有:
1.、对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2、Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3、Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。
4、Hibernate的性能好,映射的灵活性比较出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

11、hibernate的核心类是什么??重要方法是什么??

Configuration、SessionFactory
Session如下方法 Save、 load、 Update、Delete

Query q=CreateQuery(“from Customer where customerName=:customerName”)

beginTransaction、close、Transaction、Commit()

12、session.load()和session.get()的区别

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。
其区别在于:
如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。

13、hql和sql的区别

可以这样说,hibernate是面向对象语言与关系型数据库之间的桥梁,他使得程序员可以不用关心底层数据库连接的代码,而可以专心写业务逻辑。
sql是面向数据库表查询
hql是面向对象查询的,其form子句返回的是对象的实例。

14、hibernate与jdbc之间的区别

可以这样说,hibernate是面向对象语言与关系型数据库之间的桥梁,他使得程序员可以不用关心底层数据库连接的代码,而可以专心写业务逻辑。
Hibernate作为一个O/R Mapping,比JDBC具备的优势有:
1.编程思想上,更加符合人的逻辑思维习惯,面向对象比面向过程更加容易理解,测试和维护
2.开发维护速度上,Hibernate显著的快,代码量显著小
3.通过Annotation进行数据库的字段加密
4.对Sql不熟的菜鸟来说可以自动调优
5.结合Spring,通过声明式事务可以省略事务的控制,事务以横切面形式出现

15、Jdbc比Hibernate具备的优势有:

1.大数据量访问时,Jdbc的效率显著快
2.直接操作数据库比较灵活

15、Hibernate是如何延迟加载?

当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

16、说下Hibernate的缓存机制  

1、内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存
2、 二级缓存:   
a) 应用及缓存   
b) 分布式缓存
c) 第三方缓存的实现

17、spring工作机制及为什么要用?

spring是一个轻量的控制反转和面向切面的容器框架
  1.springmvc把所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。
  2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
  3.DispatcherServlet把请求提交到目标Controller
  4.Controller进行业务逻辑处理后,会返回一个ModelAndView
  5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
  6.视图对象负责渲染返回给客户端。 IoC就是由容器来控制业务对象之间的依赖关系。控制反转的本质,是控制权由应用代码转到了外部容器,控制器的转移既是所谓的反转。控制权的转移带来的好处就是降低了业务对象之间的依赖程度,即实现了解耦。
DI/IOC,对持久层和表示层的控制与分配,增加系统的灵活性和稳定性. AOP,面向切面,利用代理对程序的有效管理.
spring是一个轻量级的IOC和AOP框架,通过spring的IOC实现松耦合,而作为一个AOP框架他又能分离系统服务,实现内聚开发Spring
最好的地方是它有助于您替换对象。有了Spring,只要用JavaBean
属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。} Spring对多种ORM框架提供了很好的支持

二、前端相关

1、前端页面有哪三层构成,分别是什么?作用是什么?

结构层 Html 表示层 CSS 行为层 js

2、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?

Ie(Ie内核) 火狐(Gecko) 谷歌(webkit)opear(Presto)

3.标签上title与alt属性的区别是什么?

Alt 当图片不显示是 用文字代表。 Title 为该属性提供信息

3、你如何对网站的文件和资源进行优化?

期待的解决方案包括:文件合并 文件最小化/文件压缩 使用CDN托管 缓存的使用

4、清除浮动的几种方式,各自的优缺点

1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,,,增加无意义的标签)
2.使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)
3.是用afert伪元素清除浮动(用于非IE浏览器)
4.行内元素有哪些?块级元素有哪些?CSS的盒模型? 块级元素:div p h1 h2 h3 h4 form ul 行内元素: a b br i span input select Css盒模型:内容,border ,margin,padding

5、display:none 和 visibility:hidden 的区别
6、ajax请求的时候get 和post方式的区别

一个在url后面 一个放在虚拟载体里面
有大小限制
安全问题
应用不同 一个是论坛等只需要请求的,一个是类似修改密码的

7、ajax请求时,如何解释json数据

使用eval parse 鉴于安全性考虑 使用parse更靠谱

8、例举3种强制类型转换和2种隐式类型转换?强制

(parseInt,parseFloat,number) 隐式(== - ===)

9、你如何对网站的文件和资源进行优化?

期待的解决方案包括:文件合并 文件最小化/文件压缩 使用CDN托管 缓存的使用

10、JS主要数据类型?

主要的类型有number、string、object 以及 Boolean 类型,其他两种类型为 null 和 undefined。

11、JSON是什么?什么时候使用它,描述一下他的语法

JSON(JavaScript Object Notation)
是一种轻量级的文本数据交换格式,指的是JavaScript对象表示法。它基于JavaScript的一个子集。
json两种结构:对象和数组,通过这两种结构可以表示各种复杂的结构。
1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为
{key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值。
2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为
[“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是
数字、字符串、数组、对象几种。 示例:包含三个条目的数组。 { “people”: [   { “firstName”: “Brett”,
“lastName”:”McLaughlin”, “email”: “aaaa” },   { “firstName”: “Jason”,
“lastName”:”Hunter”, “email”: “bbbb”},   { “firstName”: “Elliotte”,
“lastName”:”Harold”, “email”: “cccc” } ]}

12、常见的Http状态码及含义

HTTP: Status 200 – 服务器成功返回网页
HTTP: Status 404 – 请求的网页不存在
HTTP: Status 503 – 服务不可用

13、样式表的链接方法:

用HTML链接样式表
HTML:
<link rel="stylesheet" type="text/css" href="css/global.css">
XHTML:
<link rel="stylesheet" tyoe="text/css" href="css/global.css" />
注释:rel=”stylesheet” –表示链接的类型:链接到样式表; type=”text/css” –是让浏览器知道需要哪一种数据:一个包含css的文本文件。
用CSS链接样式表

@import url(css/global.css);
@import url(css/forms.css);

注释:link标签更为常用,@import会减缓样式表的下载速度。

14、什么是ajax:

AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发技术。
Ajax包含下列技术: 基于web标准(standards-based presentation)XHTML+CSS的表示; 使用
DOM(Document Object Model)进行动态显示及交互; 使用 XML 和 XSLT 进行数据交换及相关操作; 使用
XMLHttpRequest 进行异步数据查询、检索; 使用 JavaScript 将所有的东西绑定在一起。 为什么要用ajax:
Ajax应用程序的优势在于:
1. 通过异步模式,提升了用户体验
2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。 AJAX的最大的特点是什么。 Ajax可以实现动态不刷新(局部刷新) 就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息

15、AJAX和JAVASCRIPT的区别?

javascript是一种在浏览器端执行的脚本语言, Ajax是一种创建交互式网页应用的开发技术
,它是利用了一系列相关的技术其中就包括javascript。
Javascript是由网景公司开发的一种脚本语言,它和sun公司的java语言是没有任何关系的,它们相似的名称只是一种行销策略。
在一般的web开发中,javascript是在浏览器端执行的,我们可以用javascript控制浏览器的行为和内容。
在Ajax应用中信息是如何在浏览器和服务器之间传递的 通过XML数据或者字符串

16、JavaScript框架(架包)?

在java中比较流行的有 dojo, Prototype , JQuery, Dwr, extjs 等等

17、AJAX都有哪些有点和缺点?

ajax的优点
2、使用异步方式与服务器通信,具有更加迅速的响应能力。
3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。 ajax的缺点
1、ajax不支持浏览器back按钮。
2、安全问题 AJAX暴露了与服务器交互的细节。
3、对搜索引擎的支持比较弱。
4、破坏了程序的异常机制。
5、不容易调试

18、W3C标准有哪些?

W3C推行的主要规范有HTML,CSS,XML,XHTML和DOM(Document Object Model)。

19、谈谈Js的内存泄露问题。
20、谈谈对Html 5的了解。20、谈谈对CSS 3的了解。

猜你喜欢

转载自blog.csdn.net/qian_meng/article/details/48583181