JavaEE 面试题总结

一、 JDBC 4

1 Java中访问数据库的步骤 4

2 StatementPreparedStatementCallableStatement的功能、特点。 4

3 如何利用JDBCAPI获得插入数据的主键值 4

4 Tomcat连接池如何配置 4

二、 JSP 4

5 JSP中动态INCLUDE与静态INCLUDE的写法是什么,区别是什么 4

6 9大隐式对象 4

7 ELJSTL分别是什么 4

8 postget有什么异同,实现文件上传要用哪种方式 4

9 RequestResponse对象的主要方法 4

10 jsphtml注释有什么区别 4

11 常见EL表达式的用法 5

12 JSP的内置对象有那些及常用方法 5

13 SessionCookie的区别 5

三、 Servlet 5

14 Servlet的生命周期 5

15 Servlet的基本架构 5

16 JSPServlet有哪些相同点和不同点,他们之间的联系是什么? 5

17 简述Model1Model2 5

18 重定向和转发的区别,对应的方法是什么? 5

19 servletconfigservletcontext 5

20 简述开发一个servlet的步骤(非工具生成) 5

21 getAttribute() 5

22 过滤器的原理,责任链设计模式的应用 6

23 请写出在你在web程序设计时,处理中文字符编码问题的一些经验 6

24 forward redirect 的区别? 6

25 JSP 中动态INCLUDE 与静态INCLUDE 的区别?【基础】 6

26 JSP 的常用指令?【基础】 6

27 jsp 有哪些动作?作用分别是什么? 【基础】 6

28 jsp 有哪些内置对象?作用分别是什么? 【基础】 6

29 get post 的区别?【基础】 7

30 什么情况下调用doGet()doPost()?【基础】 7

31 如何从form 表单中得取checkbox 的值;【基础】 7

32 JSP Servlet 有哪些相同点和不同点,他们之间的联系是什么?【基础】 7

33 jsp 的四种范围?【基础】 7

34 Request 对象的主要方法? 【基础】 7

35 如何实现servlet 的单线程模式?【基础】 8

36 页面间对象传递的方法。【基础】 8

37 详细描述MVC。【基础】 8

38 MVC 的各个部分都有那些技术来实现?如何实现? 【基础】 8

39 BS CS 的联系与区别?【基础】 8

40 几种会话跟踪技术?【基础】 9

41 过滤器有哪些作用?【基础】 9

42 介绍在JSP 中如何使用JavaBeans?【基础】 9

43 JSP Servlet 中的请求转发分别如何实现?【基础】 9

44 Web.Xml 的作用?【基础】 9

45 写出熟悉的JSTL 标签。【基础】 9

46 JSP 内置对象作用,如何取Cookie 的方法 9

47 通过部署描述文件(web.xml)可以配置哪些功能? 10

48 JSP 有哪些的动作?分别有什么作用? 10

49 JSP SERVLET 区别 10

50 Tomcat class 加载的优先顺序一览 10

51 Servlet CGI 的区别 10

52 Servlet 中的init()方法什么时候被调用? 10

53 用什么方法使服务器关闭之后,session 所保存的信息不会丢失? 10

54 Servlet 的生命周期分为3 个阶段? CGI 的区别? 11

55 描述Cookie Session 的作用?区别和各自的应用范围?Session 工作原理 11

56 dao 是什么及作用 11

57 解释一下什么是servlet 11

58 HTTP 请求的GET POST 方式的区别 11

59 什么情况下调用doGet()doPost() 11

60 request 对象的主要方法 11

61 request.getAttribute() request.getParameter() 有何区别? 12

62 jsp 有哪些内置对象?作用分别是什么? 分别有什么方法? 12

63 JSP 的常用指令 12

64 页面间对象传递的方法 12

65 MVC 的各个部分都有那些技术来实现?如何实现? 12

66 Web 系统安全因素有哪些? 12

67 我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1 等,如何输出一个某种编码的字符串? 13

68 web 运用程序的稳定、安全需要考虑哪些? 13

69 介绍几种WEB 服务器,问Tomcat 里面的文件组成? 13

70 ISO8859-1 字符串转成GB2312 编码,语句为? 13

71 <jsp:include><%@include>的区别 13

72 说出数据连接池的工作机制是什么? 13

73 如何实现Servlet 单线程 13

74 哪些方法可以提高JDBC 性能? 13

75 Web 容器里面的对象存活周期? 13

76 浏览器页面与Tomcat 的交互过程? 14

四、 数据库 14

77 SQL 有哪三种注入方式?SQL 安全 14

78 数据库事务及隔离级别bbvrbtg 14

79 事务四大属性 14

80 说说存储过程定义,并描述一下优点和缺点? 14

 82 SqlServer 的完整性约束? 14

83 一张学生表student,有字段班级classid,学号id,成绩grade 15

84 写一条SQL 语句,查询姓张学生中平均成绩大于75 的学生信息 15

85 查一下每门课程都大于80 的学生姓名 15

86 truncate delete 的区别?(delete from table truncate table 的区别!) 15

87 一学生表!有班及id,学号!成绩!一求平均成绩!二求比平均成绩高的学生的所有信息 15

88 查询出M 页的N 行数据(分页的实现,求第M 也的记录数) 15

89 数据库三范式是什么? 15

90 join left join 的区别: 16

91 sql 语句分页: 16

92 oracle row_id 理解             16

93 嵌入式数据库和传统数据库的区别 16

94 Inserted deleted 的含义? 16

95 函数和过程的区别? 16

96 数据库优化的方案 16

97 Oracle 中有哪几种索引 16

98 数据库索引的优点和缺点 17

99 触发器有几种? 17

100 oracle 中除了数据库备份,还有什么方法备份? 17

101 写出删除表中重复记录的语句oracle 17

102 数据库里面游标,索引是怎么用的? 17

103 Oracle 中数据库中的一个表中,这个表没有主键id 也没有特定标示来查数据,怎么查? 17

104 大数据量下的分页解决方法 17

105 写一个用jdbc 连接并访问oracle 数据的程序代码 18

106 JavaScript 有哪几种数据类型 18

107 js 编码中innerHTML,outhtml,innertext 区别 18

108 写一个简单的json 对象? 18

109 什么是json ,jquery? 18

110 jQuery 中有id foo 的对象有att 属性,如何获取att 属性的值? 18

111、 jQuery 中添加文本怎么写在div 18

112 你为什么要使用jquery 18

113 你使用jquery 遇到过哪些问题,你是怎么解决的? 18

114 你知道jquery 中的选择器吗,请讲一下有哪些选择器? 19

115 jquery 中的选择器和css 中的选择器有区别吗? 19

116 你觉得jquery 中的选择器有什么优势? 19

117 你在使用选择器的时候有有没有什么觉得要注意的地方? 19

118 jquery 对象和dom 对象是怎样转换的? 19

119、 你是如何使用jquery 中的ajax 的? 19

120 你觉得jquery 中的ajax 好用吗,为什么? 19

121、 jquery $.get()提交和$.post()提交有区别吗? 19

122、 jquery 中的load 方法一般怎么用的? 19

123 jquery 中你是如何去操作样式的? 19

124 简单的讲叙一下jquery 是怎么处理事件的,你用过哪些事件? 19

125 你使用过jquery 中的动画吗,是怎样用的? 19

126 你使用过jquery 中的插件吗? 20

127 你一般用什么去提交数据,为什么? 20

128、 jquery 中引入css 有几种方式? 20

129 你在jquery 中使用过哪些插入节点的方法,它们的区别是什么? 20

130 你使用过包裹节点的方法吗,包裹节点有方法有什么好处? 20

131 jquery 中如何来获取或和设置属性? 20

132 如何来设置和获取HTML 和文本的值? 20

133 jquery 中有哪些方法可以遍历节点? 20

134 子元素选择器和后代选择器元素有什么区别? 20

135 jquery 中可以替换节点吗? 20

136 你觉得beforeSend 方法有什么用? 20

137、 siblings() 方法和$('prev~div')选择器是一样的嘛? 20

138 你在ajax 中使用过JSON 吗,你是如何用的? 21

139 有哪些查询节点的选择器? 21

140 nextAll() 能替代$('prev~siblindgs')选择器吗? 21

141 jQuery 中有几种方法可以来设置和获取样式 21

142 $(document).ready()方法和window.onload 有什么区别? 21

143 jQuery 是如何处理缓存的? 21

144 $.getScript()方法和$.getJson() 方法有什么区别? 21

145 你读过哪些有关于jQuery 的书吗? 21

146 $("#msg").text(); $("#msg").text("<b>new content</b>");有什么区别? 21

147 radio 单选组的第二个元素为当前选中值,该怎么去取? 21

148 选择器中idclass 有什么区别? 21

149 你使用过哪些数据格式,它们各有什么特点? 21

150 jQuery 能做什么? 22

151 ajax data 主要有几种方式? 22

152 jQuery 中的hover()toggle()有什么区别? 22

153 你知道jQuery 中的事件冒泡吗,它是怎么执行的,何如来停止冒泡事件? 22

154、 例如单击超链接后会自动跳转,单击"提交"按钮后表单会提交等,有时候我想阻止这些默认的行为,该怎么办? 22

155 jquery 表单提交前有几种校验方法?分别为?? 22

156、 jquery 中你有没有编写过插件,插件有什么好处?你编写过那些插件?它应该注意那些? 22

157 怎样给jquery 动态附加新的元素?那么怎样给新生成的元素绑定事件呢? 22

158 IE FireFox 脚本兼容性问题 22

159 css+div 的优势 23

160 DIV Span 的区别? 23

161 css 是什么层叠样式表 23

162 xml 有哪些解析技术,有什么区别? 23

163 ajax 的工作原理? 23

164 javascript 中设置定时调用myfun()函数(周期为1 )的代码是? 23

165 XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式? 23

166 HTTP 请求返回的状态码有哪些?分别有什么含义? 24

167 二叉树遍历有几种方法 24

168 JSON XML 的优缺点 24

一、 JDBC

1、 Java中访问数据库的步骤

导入驱动包、获得连接、获取语句对象、获得结果集、关闭结果集、语句对象、连接。

2、 StatementPreparedStatementCallableStatement的功能、特点。

Statement,用于执行静态 SQL 语句并返回它所生成结果的对象;(只执行一次的语句用这个)
PreparedStatement,表示预编译的 SQL 语句的对象,执行前可以进行赋值操作;(反复使用的语句用这个,有效的防止sql注入)
CallableStatement执行存储过程,预编译的,带参数的;  通过Sql=”{call 存储过程的名称(参数)}”;

 

3、 如何利用JDBCAPI获得插入数据的主键值

PreparedStatement pstmt = con.prepareStatement(“asdfsdf”,Statement.RETURN_GENERAT_KEYS);
pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();

4、 Tomcat连接池如何配置

6以上:在MATE-INF下配置context.xml
5.5conf/server.xml配置,在conf/context.xml加入链接;并在WEB-INF/web.xml下配置数据源

二、 JSP

5、 JSP中动态INCLUDE与静态INCLUDE的写法是什么,区别是什么

解析方式  可否传参数

动态include<jsp:include page=”test.jsp” flush=”true”/> 可以传参,适合包含动态页面,可以动态刷新;
静态include<%@include file=”test.html” %> 只包含页面代码,不能传参数。

6、 9大隐式对象

将对象的作用一起说出来

输入、输出对象:requestresponseout
作用域对象:pageContextsessionapplication
servlet对象:page(代表servlet对象)config(servlet配置)
错误对象:Exception isErrorPage=”true”

7、 ELJSTL分别是什么

EL: Expression Language 表达式语言 ${}帮助我们方便的使用表达式写法

JSTL: java  Standard tag Library  java标准标签库;把java代码从页面中分离出来,简化开发,类似与html风格

8、 postget有什么异同,实现文件上传要用哪种方式

post:传递的参数隐藏了,长度更长,更安全;文件上传只能用post
get:传递的参数在url后面;长度有限:255

9、 RequestResponse对象的主要方法

按三个方面:设置编码格式.  获取参数内容 (getAttribute().....). 页面跳转方式

requestgetAttribute()setAttribute()getParameter()getParameterValues()setCharaterEncoding()
responsesetCharaterEcoding()、获得其他对象的方法。。。

10、 jsphtml注释有什么区别

Html看的到、jsp看不到

11、 常见EL表达式的用法

${}

12、 SessionCookie的区别

Sessioncookie都是 跟踪回话的技术

Session:会话跟踪,服务器端维护
Cookie:存储用户临时数据,客户端维护;javax.servlet.http.Cookie

三、 Servlet

13、 Servlet的生命周期

初始化、实例化、服务、销毁

服务器加载servlet、服务器创建servlet实例、调用servlet实例的init方法、收到请求、调用service方法、调用doXxx方法处理请求并将输出结果返回客户端、等待下一个请求或由服务器卸载、调用destroy方法后被卸载。 

javax.servlet
javax.servlet.http
Servlet接口》》GenericServlet抽象类》》HttpServlet抽象列》》用户自定义Servlet
容器提供实现;
init()service()doXxx()destroy()

14、 JSPServlet有哪些相同点和不同点,他们之间的联系是什么?

都是实现javaWEB的手段,JSP侧重试图,Servlet主要用于控制逻辑;
jspservlet的简易方式,由javahtml组合成一个.jsp文件,编译后是一个“类servlet

15、 简述Model1Model2

都是MVC设计模式
Model1jsp+javabeansMjavabeans实现;VC放在jsp
Model2jsp+servlet+javabeansMjavabeansVjspCservlet

16、 重定向和转发的区别,对应的方法是什么?

响应次数. 地址栏的改变与否  是否带参数 ,  说明他们都是跳转页面的方法

重定向:redirect,告诉浏览器请求另一个地址,地址栏url改变
发:forward,请求不中断,转发到另一个资源,请求另一个地址后再把返回类容返回给客户端,地址栏url不改变

17、 servletconfigservletcontext

servletconfigservlet的配置,init方法传入的参数。
servletcontext:容器维护的一块存储空间,存放当前环境的一些信息和servlet相关信息,表示一个作用域。

18、 简述开发一个servlet的步骤(非工具生成)

继承HttpServlet抽象类,可以实现:initdestroydoXxx,在web.xml中配置servletservlet-mapping

19、 getAttribute()

获得属性,取出数据

20、 过滤器的原理,责任链设计模式的应用 

web应用程序的请求和响应处理添加功能的web服务组件,处在用户和web资源中间。
过滤器链FilterChain接口,调用过滤器链中的一系列过滤器。

21、 请写出在你在web程序设计时,处理中文字符编码问题的一些经验

<%@ page pageEcoding=”utf-8” %>表示由jsp页面转译成servlet使用的编码形式

<%@ page contentType=”text/html; charset=utf-8” %>请求发送的信息和响应消息的编码
工程的属性也使用UTF-8

22、 forward redirect 的区别?

答:forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

23、 JSP 中动态INCLUDE 与静态INCLUDE 的区别?【基础】

答:动态INCLUDE jsp:include 动作实现<jsp:include page="included.jsp"flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE include 伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

24、 JSP 的常用指令?【基础】

25、 jsp 有哪些动作?作用分别是什么? 【基础】

答:JSP 共有以下6 种基本动作:

jsp:include:在页面被请求的时候引入一个文件;

jsp:useBean:寻找或者实例化一个JavaBean。;

jsp:setProperty:设置JavaBean 的属性。;

jsp:getProperty:输出某个JavaBean 的属性;

jsp:forward:把请求转到一个新的页面;

Jsp:param

jsp:plugin:根据浏览器类型为Java 插件生成OBJECT EMBED 标记。

26、 jsp 有哪些内置对象?作用分别是什么? 【基础】

答:JSP 共有以下9 种基本内置组件(可与ASP 6 种内部组件相对应):

request:用户端请求,此请求会包含来自GET/POST 请求的参数;

response:网页传回用户端的回应;

pageContext:网页的属性是在这里管理;

session:与请求有关的会话期;

applicationservlet 正在执行的内容;

out:用来传送回应的输出;

configservlet 的构架部件;

pageJSP 网页本身;

exception:针对错误网页,未捕捉的例外。

27、 get post 的区别?【基础】

答:Form 中的get post 方法,在数据传输过程中分别对应了HTTP 协议中的GET POST 方法。二者主要区别如下:+

1Get 是用来从服务器上获得数据,而Post 是用来向服务器上传递数据;

2Get 将表单中数据按照variable=value 的形式,添加到action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL

3Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的所有操作对用户来说都是不可见的;

4Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post

5Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;

6Get Form 的默认方法

28、 什么情况下调用doGet()doPost()?【基础】

答:Jsp 页面中的form 标签里的method 属性为get 时调用doGet(),为post时调用doPost()

29、 如何从form 表单中得取checkbox 的值;【基础】

答:可在页面把checkbox name 属性取同一个,value 属性取每个条目的id,后台用getParamter(name)能取到checkbox 的一组值。

30、 JSP Servlet 有哪些相同点和不同点,他们之间的联系是什么?【基础】

答:JSP Servlet 技术的扩展,本质上是Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"servlet"Servlet JSP 最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是Java HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

31、 jsp 的四种范围?【基础】

答:a.page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的include 指令,但是没有include 动作)表示。这既包括servlet 又包括被编译成servlet JSP 页面 b.request 是代表与Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web 组件(由于forward 指令和include 动作的关系) c.session 是代表与用于某个Web 客户机的一个用户体验相关的对象和属性。一个Web 会话可以也经常会跨越多个客户机请求 d.application 是代表与整个Web 应用程序相关的对象和属性。这实质上是跨越整个Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

32、 Request 对象的主要方法? 【基础】

答:setAttribute(String name,Object):设置名字为name 的属性值

getAttribute(String name):返回由name 指定的属性值

getAttributeNames():返回request 对象所有属性的名字集合(枚举)

getCookies():返回客户端的所有Cookie 对象,结果是一个Cookie 数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body 的长度

getHeader(String name):获得HTTP 协议定义的文件头信息

getHeaders(String name):返回指定名的request Header 的所有值(枚举)

getHeaderNames():返回所有request Header 的名字(枚举)

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端请求中传送的name 指定的参数值

getParameterNames():获得客户端传送给服务器端的所有参数的名字(枚举)

getParameterValues(String name):获得有name 指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP 地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关Session

getServerName():获取服务器的名字`

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

33、 如何实现servlet 的单线程模式?【基础】

答:<%@page isThreadSafe=false%>

34、 页面间对象传递的方法。【基础】

答:request,session,application,cookie 等。

35、 详细描述MVC。【基础】

答:基于Java Web 应用系统采用MVC 架构模式,即model(模型)、view(视图)、control(控制)分离设计;这是目前WEB 应用服务系统的主流设计方向。

Model:即处理业务逻辑的模块,每一种处理一个模块;

View:负责页面显示,显示MODEL 处理结果给用户,主要实现数据到页面转换过程;

Control:负责每个请求的分发,把FORM 数据传递给MODEL 处理,把处理结果的数据传递给VIEW 显示。

36、 MVC 的各个部分都有那些技术来实现?如何实现? 【基础】

答:MVC ModelViewController 的简写。"Model" 代表的是应用的业务逻辑(通过JavaBeanEJB 组件实现), "View" 是应用的表示面(由JSP 页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把 应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用

37、 BS CS 的联系与区别?【基础】

答:C/S Client/Server 的缩写,是客户机与服务器结构的应用程序,服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如OracleSybaseInformix SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server 的缩写,是浏览器和服务器结构的应用程序,即Web 应用程序,客户机上只要安装一个浏览器(Browser),如Netscape Navigator InternetExplorer,服务器安装OracleSybaseInformix SQL Server 等数据库。在这种结构下,用户界面完全通过WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。

C/S B/S 区别:

1)硬件环境不同:

C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务;B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S 更强的适应范围, 一般只要有操作系统和浏览器就行;

2)对安全要求不同:

C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S 发布部分可公开信息;B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户;

3)对程序架构不同:

C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑;B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上.C/S 有更高的要求B/S 结构的程序架构是发展的趋势, MS .Net 系列的BizTalk 2000 Exchange 2000 , 全面支持网络的构件搭建的系统. SUN IBM 推的JavaBean 构件技术等,使B/S 更加成熟;

4)软件重用不同:

C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S 要求下的构件的重用性好;B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子;

5)系统维护不同:

C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统;B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级;

6)处理问题不同:

C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统;B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S 无法作到的. 与操作系统平台关系最小;

7)用户接口不同:

C/S 多是建立的Window 平台上,表现方法有限,对程序员普遍要求较高;B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本;

8)信息流不同:

C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低;B/S 信息流向可变化, B-B B-C B-G 等信息、流向的变化, 更像交易中心。

38、 几种会话跟踪技术?【基础】

Session  Cookie  URL重写  隐藏域表单

39、  过滤器有哪些作用?【基础】

答:可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等。

40、 介绍在JSP 中如何使用JavaBeans?【基础】

答:在JSP 中使用JavaBean 常用的动作有:

1<jsp:useBean />:用来创建和查找bean 对象;

2<jsp:setProperty />:用来设置bean 的属性,即调用其setXxx()方法;

3<jsp:getProperty />:用来获得bean 的属性,即调用其getXxx()方法。

41、 JSP Servlet 中的请求转发分别如何实现?【基础】

答:JSP 中的请求转发可利用forward 动作实现:<jsp:forward />Serlvet 中实现请求转发的方式为:

getServletContext().getRequestDispatcher(path).forward(req,res)

42、 Web.Xml 的作用?【基础】

答:用于配置web 应用的信息;如listenerfilter servlet 的配置信息等。

43、 写出熟悉的JSTL 标签。【基础】

答:<c:if><c:choose><c: when><c: otherwise><c:forEach><c:set>

44、 JSP 内置对象作用,如何取Cookie 的方法

使用request 对象的getCookies()方法取到所有客户端cookies 信息。

(1) HttpServletRequest 类的request 对象

作用:代表请求对象,主要用于接受客户端通过HTTP 协议连接传输到服务器端的数据。

(2) HttpServletResponse 类的respone 对象

作用:代表响应对象,主要用于向客户端发送数据

(3) JspWriter 类的out 对象

作用:主要用于向客户端输出数据;Out 的基类是JspWriter

(4) HttpSession 类的session 对象

作用:主要用于来分别保存每个用户信息,与请求关联的会话;会话状态维持是Web 应用开发者必须面对的问题。

(5) ServletContext 类的application 对象

作用:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application 对象,

故其保存的信息被所有用户所共享.

(6) PageContext 类的pageContext 对象

作用:管理网页属性,为JSP 页面包装页面的上下文,管理对属于JSP 中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。

(7) ServletConfig 类的config 对象

作用:代码片段配置对象,表示Servlet 的配置。

(8) Object 类的Page(相当于this)对象

作用:处理JSP 网页,是Object 类的一个实例,指的是JSP 实现类的实例,即它也是JSP本身,只有在JSP 页面范围之内才是合法的。

(9)Exception

作用:处理JSP 文件执行时发生的错误和异常

45、 通过部署描述文件(web.xml)可以配置哪些功能?

1、配置项目的欢迎页面。

2、配置Servlet 访问URL

3、配置Web 容器、Servlet 的初始化参数

4、配置错误页面,可以通过异常编号进行错误页面跳转。

5、Servlet 加载优先级。

6、Web 容器监听器。

7、Web 请求过滤器。

8、设置会话的过期时间。

46、 JSP 有哪些的动作?分别有什么作用?

<jsp:include>:在页面被请求的时候引入一个文件。

<jsp:useBean>:寻找或者实例化一个JavaBean。

<jsp:setProperty>:设置JavaBean 的属性。

<jsp:getProperty>:输出某个JavaBean 的属性。

<jsp:forward>:把请求转到一个新的页面。

<jsp:param>:在请求转发与include 中进行页面传参。

<jsp:plugin>:根据浏览器类型为Java 插件生成OBJECT 或EMBED 标记。

47、 JSP SERVLET 区别

JSP 在本质上就是SERVLET,但是两者的创建方式不一样.Servlet 完全是JAVA 程序代码构成,擅长于流程控制;而.JSP 由HTML 代码和JSP 标签构成,可以方便地编写动态网页.因此在实际应用中采用Servlet 来控制业务流程,而采用JSP 来生成动态网页,同时在MVC设计模式中JSP 充当视图层,而Servlet 位于控制层。另外JSP 也是Servlet 技术的扩展,本质上就是Servlet,就是JSP 的另一种简易体现形式,因为JSP 编译后就是一个“类servlet”,再经由JVM 编译生成Java 类文件来执行。

48、 Tomcat class 加载的优先顺序一览

第一步:加载JVM 类库。一般是加载由虚拟机提供的基本的运行时类和系统扩展目录($JAVA_HOME/jre/lib/ext)下的JAR 包。

第二步:加载系统环境变量的类库。这个加载器用来加载CLASSPATH 环境变量中指定的类。

第三步:加载Tomcat 下面common 文件夹下面的公共类库。

第四步:加载自己需要的catalina 类库。

第五步:webapps 下面自己应用的类库,包括webapp1、webapp1......等。

49、 Servlet CGI 的区别

Servlet 主要是运行在服务器端的一个组件,基于Java 语法构建,延用Java 的传统优势——可移植、稳健、易开发。CGI 不可移植,为某一特定平台编写的CGI 应用只能运行于这一环境中。每一个CGI 应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。这种模式将引起很高的内存、CPU 开销,而且在同一进程中不能服务多个客户。

CGI(Common Gateway Interface)HTTP服务器与你的或其它机器 上的程序进行交谈的一种工具,其程序须运行在网络服务器上。

Servlet 对CGI 的最主要优势在于一个Servlet 被客户端发送的第一个请求激活,然后它将继续运行于后台,等待后续请求。每个请求将生成一个新的线程,而不是一个完整的进程,多个客户能够在同一个进程中同时得到服务,也就是说它是基于多线程模式。而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

50、 Servlet中的init()方法什么时候被调用?

当客户端第一次请求该Servlet 时,由容器调用该Servlet 类的init()方法对该Servlet进行初始化,该初始始化方法只被调用一次。

51、 用什么方法使服务器关闭之后,session 所保存的信息不会丢失?

使用cookie 实现,服务器端将需要保存的信息,通过Cookie 并写入客户端磁盘中,下次访问时,客户端浏览器携带写入的信息提交至服务器,这样可以使信息不会因服务器关闭而丢失。

52、 Servlet 的生命周期分为3 个阶段? CGI的区别?

Servlet 的生命周期主要由3 个过程组成。

(1)init()方法:服务器初始化servlet。 

(2)service()方法:初始化完毕,servlet 对象调用该方法响应客户的请求。

(3)destroy()方法:调用该方法消灭servlet 对象。

其中,init()方法只在servlet 第一次被请求加载的时候被调用一次,当有客户再请求servlet 服务时,web 服务器将启动一个新的线程,在该线程中,调用service

方法响应客户的请求。

53、 描述Cookie Session 的作用?区别和各自的应用范围?Session 工作原理

Cookie 和Session 都是用来服务器端和客户端进行会话跟踪的一种技术。区别:Cookie 只能传输字符数据,字符是通过加密后写到客户端,下次请求时协带至

服务器端,Cookie 协带的数据大小为4KB,对数据量超出4KB 的数据,无法处理,Cookie数据一般是通过加密后存储在客户端,而Session 在服务器端和浏览器缓存中都保存在ID的值,通过此ID 来识别唯一的客户端。Session 对数据存储的大小没有限制,但存储的信息加重服务器的负载,另外Session 在分布式服务器的使用上也有限制,Session 无法跨域,也就是多台服务器无法共享会话。 Session 原理:当客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) 保存在服务器内存中,服务器响应客户端时,将Session ID 写入浏览器缓存中,当下次客户端请求时,就会将该Session ID 携带至服务器,服务器再根据ID 比对,识别不同客户端请求,以此方式来不断维持服务器和客户端状态跟踪。

54、 dao 是什么及作用

DAO 是数据库访问接口,负责管理与数据库打交道操作对象,将对数据维护与操作的方法通过DAO 封装起来,使得这些操作可以从系统的业务逻辑中独立出来,从而使系统中的数据库操作变得统一和简单化,方便开发人员对组件职责进行划分。

55、 解释一下什么是servlet

Servlet 是用Java 编写的服务器端程序,由服务器端调用和执行的Java 类。是使用JavaServlet 应用程序设计接口(API)及相关类和方法来构建的,而Java Servlet API 定义了servlet和Java 使能的服务器之间的一个标准接口,这使得Servlets 具有跨服务器平台的特性,当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet 建立起服务器返回给客户机的响应。Servlet 的功能很广泛,例如可以创建响应至客户端的所有HTML元素内容和动态数据内容,与其它组件通讯等等。

56、 HTTP 请求的GET POST 方式的区别

GET 和 POST.是HTTP 定义的与服务器交互的不同方法,是使用HTTP 的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义。

1、Get 方式在通过URL 提交数据,数据在URL 中可以看到; POST 方式,数据放置在HTML HEADER内提交,无法在地址栏看到。

2、GET 方式提交的数据最多只能有1024 字节,而POST 则没有此限制。

3、GET 一般用作小数据量的请求,POST 一般用作大数据量的请求,如:附件。

57、 什么情况下调用doGet()doPost()

根据客户端的请求的方式来决定调用哪个方法处理请求,如果客户端采用GET 方式发送请求,服务器端则采用doGET()来处理,如果采用post 方式,服务器端则采用doPOST()

58、 request 对象的主要方法

setAttribute(String name,Object):设置名字为name 的request 的参数值

getAttribute(String name):返回由name 指定的属性值

getAttributeNames():返回request 对象所有属性的名字集合,结果是一个枚举的实例

getCookies():返回客户端的所有Cookie 对象,结果是一个Cookie 数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body 的长度

getHeader(String name):获得HTTP 协议定义的文件头信息

getHeaders(String name):返回指定名字的request Header 的所有值,结果是一个枚举的实例

getHeaderNames():返回所以request Header 的名字,结果是一个枚举的实例

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端传送给服务器端的有name 指定的参数值

getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例

getParametervalues(String name):获得有name 指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP 地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

59、 request.getAttribute() request.getParameter() 有何区别?

request.getAttribute()获取在请求对象中设置的属性,该方法返回对象为Object 类型,而getParameter()方法是获取指定的请求参数值,返回值为String 类型的字符串。

60、 jsp 有哪些内置对象?作用分别是什么? 分别有什么方法?

答:JSP 共有以下9 个内置的对象:

1) request 用户端请求,此请求会包含来自GET/POST 请求的参数

2) response 网页传回用户端的回应

3) pageContext 网页的属性是在这里管理

4) session 与请求有关的会话期

5) application servlet 正在执行的内容

6) out 用来传送回应的输出

7) config servlet 的构架部件

8) page JSP 网页本身

9) exception 针对错误网页,未捕捉的例外

具体说明如下:

request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session 数据的有用的方法。

response 表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)

out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

pageContext 表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的API,并且包装了通用的servlet 相关功能的方法。

session 表示一个请求的javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息

applicaton 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet引擎和servlet 环境的信息

config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。

page 表示从该页面产生的一个servlet 实例

61、 JSP 的常用指令

1) <%@include >用来在JSP 页面包含静态资源

2) <%@taglib >用来指定JSP 页面标签类型

3) <%@page >用来指定页面相关属性

62、 页面间对象传递的方法

request、session、application、Cookie 等,其中比较常用的像request、Session。request主要是应用在同一请求周期内,可能进行对象或参数的共享传递。而Session 主要可以应用于同一客户端会话周期内进行参数属性的共享。

63、 MVC 的各个部分都有那些技术来实现?如何实现?

MVC 是Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), View 是应用的表示面(由JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

64、 Web 系统安全因素有哪些?

1)操作系统、后台数据库的安全问题:这里指操作系统和后台数据库的漏洞,配置不当,如弱口令等等,导致黑客、病毒可以利用这些缺陷对网站进行攻击。

2)Web 发布系统的漏洞:Web 业务常用的发布系统(即Web 服务器),如IIS、Apache等,这些系统存在的安全漏洞,会给入侵者可乘之机。

3)Web 应用程序的漏洞:主要指Web 应用程序的编写人员,在编程的过程中没有考虑到安全的因素,使得黑客能够利用这些漏洞发起对网站的攻击,比如SQL 注入、跨站脚本攻击等等。

4)自身网络的安全状况:网站服务器所处的网络安全状况也影响着网站的安全,比如网络中存在的DoS 攻击等,也会影响到网站的正常运营。

65、 我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1 等,如何输出一个某种编码的字符串?

66、 web 运用程序的稳定、安全需要考虑哪些?

Web 服务器的性能考虑主要有:并发用户数、事务安全、负载均衡、时段流量、网络带宽网格安全等。

网络安全方面:

(1) 关键数据的保护,例如用户数据等

(2) 功能服务的正常提供。

(3) 网站的防攻击能力。

(4) 对异常灾害的恢复能力。

程序性能:

(1) 响应请求并运行得出结果的时间。

(2) 错误的检测和拦截。

(3) 扩展性。

67、 介绍几种WEB 服务器,问Tomcat 里面的文件组成?

Apache、Tomcat、Jetty、Jboss、Websphere、WebLogic

68、 ISO8859-1 字符串转成GB2312 编码,语句为?

String s=new String(text.getBytes(“iso8859-1”),”gb2312”)

69、 <jsp:include><%@include>的区别

上面两种都是在当前页面加载或包含另一页面内容,而使用<jsp:include>动作标签实现时它总是会检查所含文件中的变化,适合用于包含动态页面,并且包含的页页要符合web容器语法要求,因为被包含的页面会被web 引擎进行编译和加载,同时包含时会发送http请求,所以可以携带参数。而<%@include>是用伪码实现,定不会检查所含文件的变化,只是简单的将被加载的资源拷贝到了当前,而这种包含更多的是一种重用,不能实现参数共享。

70、 说出数据连接池的工作机制是什么?

web 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。实现方式,返回的Connection 是原始Connection 的代理,代理Connection 的close 方法不是真正关连接,而是把它代理的Connection 对象还回到连接池中。

71、 如何实现Servlet 单线程

<%@ page isThreadSafe="false"%>

72、  Web 容器里面的对象存活周期?

当然由web 容器进行创建管理的对象主要有application,session,request,page 这四个级别的对象,而这4 种级别的对象,根据它们自身的特点来管理所持的对象,如:request中的对象的生命周期就是在请求范围内,Session 在是会话周期内,page 是在当前JSP Page内,Application 是在服务器启、停的周期内。

73、 浏览器页面与Tomcat 的交互过程?

当一个JSP 页面第一次被访问的时候,JSP 引擎将执行以下步骤:

(1)将JSP 页面翻译成一个Servlet,这个Servlet 是一个java 文件,同时也是一个完整的java 程序,第一次运行将java文件转换为二进制码

(2)再由java 编译器对这个二进制码 进行编译,得到可执行class 文件

(3)再由JVM 解释器来解释执行class 文件,生成向客户端发送的应答,然后发送给客户端

以上三个步骤仅仅在JSP 页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。

四、 数据库

74、 SQL 有哪三种注入方式?SQL 安全

动态SQL 拼装注入、SQL 溢出漏洞、获取管理员权限、

75、 数据库事务及隔离级别

读未提交   读提交  重复读  序列化

据但是第二个事务却中途失败退

出导致对数据两个修改都失效了这是系统没有执行任何锁操作因此并发事务并没有被隔离开来

2. 脏读(Dirty Reads):一个事务开始读取了某行数据但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险很可能所有操作都被回滚

3. 不可重复读(Non-repeatable Reads):一个事务对同一行数据重复读取两次但是却得到了不同结果。例如在两次读取中途有另外一个事务对该行数据进行了修改并提交

4. 两次更新问题(Second lost updates problem):无法重复读取特例,有两个并发事务同时读取同一行数据然后其中一个对它进行修改提交而另一个也进行了修改提交这就会造成第一次写操作失效

5. 幻读(Phantom Reads):也称为幻像(幻影)。事务在操作过程中进行两次查询,第二次查询结果包含了第一次查询中未出现的数据(这里并不要求两次查询SQL 语句相同)这是因为在两次查询过程中有另外一个事务插入数据造成的

76、 事务四大属性

   数据库事务的属性包括四大类,即ACID。ACID分别是四个英文单词的首写字母,这四个英文单词是Atomicity(原子性)、 Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。 
1、原子性 Atomicity 
    事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。 
2、一致性 Consistency 
    事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。 
3、隔离性 Isolation 
    隔离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。 
4、持久性 Durability    
    持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何数据库系统故障。持久性通过数据库备份和恢复来保证。   
  严格来说数据库事务属性(ACID)都是由数据库管理系统来进行保证的,在整个应用程序运行过程中应用无需去考虑数据库的ACID实现。

77、 说说存储过程定义,并描述一下优点和缺点?

CREATE PROCEDURE getUserInfo_PROC (存储过程名)

AS

begin

//过程体

end

GO

优点:

(1) 减轻网络流量

(2) 可被作为一种安全机制来使用

(3) 允许标准组件式编程

(4) 能够实现较快的执行速度

缺点:

(1) 可移值性差

(2) 重构复杂

78、 数据库中为什么要映射主外健?什么是事务处理?

主外键:保持数据完整性。数据库事务是指作为单个逻辑工作单元执行的一系列操作。事务可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。事务内相关操作组合为一个要么全部成功要么全部失败,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

79、 SqlServer 的完整性约束?

(1) 主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空

(2) 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。

(3) 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束

(4) 默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”

(5) 外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列

80、 一张学生表student,有字段班级classid,学号id,成绩grade

(1)求各个班的平均成绩 

Select classid,avg(grade) from student group by classid

(2)查询出比该班平均成绩高的学生的所有信息

select w.id,w. grade,b.avg_ grade from student w,(select classid,avg(grade) avg_grade from student group by classid) b where w. classid =b. classid and w.grade >b.avg_grade;

81、 写一条SQL 语句,查询姓张学生中平均成绩大于75 的学生信息

select * from student where name in (select name from student where name like '张%' group by name having avg(score) > 75)

82、 查一下每门课程都大于80 的学生姓名

学生表student 分数表grade

select s.name from student s where s.id not in(select g.studentid from grade g where g.marks<=80)

或者

select s.name from student s where not exists(select 1 from grade g where g.studentid=s.id and g.marks<=80)

83、 truncate delete 的区别?(delete from table truncate table 的区别!)

truncate 是DDL 語言.delete 是DML 語言DDL 語言是自動提交的.命令完成就不可回滾.truncate 的速度也比delete 要快得多.

相同点:truncate 和不带where 子句的delete, 以及drop 都会删除表内的数据

不同点:

1. truncate 和delete 只删除数据不删除表的结构(定义)drop 语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);

依赖于该表的存储过程/函数将保留,但是变为invalid 状态.

2.delete 语句是dml,这个操作会放到rollback segement 中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.truncate,drop 是ddl, 操作立即生效,原数据不放到rollback segment 中,不能回滚.操作不触发trigger.

3.delete 语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动显然drop 语句将表所占用的空间全部释放truncate 语句缺省情况下见空间释放到minextents 个extent,除非使用reusestorage; truncate 会将高水线复位(回到最开始).

4.速度,一般来说: drop> truncate > delete

5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及使用上,想删除部分数据行用delete,注意带上where 子句. 回滚段要足够大.

想删除表,当然用drop想保留表而

84、 一学生表!有班及id,学号!成绩!一求平均成绩!二求比平均成绩高的学生的所有信息

select id,avg(成绩) from table group by id select * from table where 成绩> (select 成绩from (select id,avg(成绩) 成绩from table group by id)as a )

85、 查询出M 页的N 行数据(分页的实现,求第M 也的记录数)

Select top N from table where id not in (select top (M-1)*N id from table )

86、 数据库三范式是什么?

第一范式(1NF):

字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作

为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两个独立的字段。

第二范式(2NF):

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

第三范式(3NF):

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

所以第三范式具有如下特征:

1,每一列只有一个值

2,每一行都能区分。

3,每一个表都不包含其他表已经包含的非主关键字信息。

例如,帖子表中只能出现发帖人的id,而不能出现发帖人的id,还同时出现发帖人姓名,否则,只要出现同一发帖人id 的所有记录,它们中的姓名部分都必须严格保持一致,这就是数据冗余。

87、 join left join 的区别:

inner join(等值连接) 只返回两个表中联结字段相等的行

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

88、 sql 语句分页:

Mysql 数据库:

SELECT TOP 页大小* FROM table1 WHERE id NOT IN (

SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id

) ORDER BY id

Oracle 数据库:

在ORACLE 大数据量下的分页解决方法。一般用截取ID 方法,还有是三层嵌套方法。

截取ID 的方法

select * from emp a, (select empno,rownum as num from emp)b where a.empno=b.empno and b.num between 5 and 7;

三层嵌套

SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;

89、 oracle row_id 理解

ORACLE 的row_id 是一个伪列,其个是为18 个字节可将这18 个字节用6363 来划分,分别表示段编号,数据文件编号,数据块

90、 嵌入式数据库和传统数据库的区别

嵌入式数据库主要像:SQLite、

传统数据库服务器:SQL Server 、Oracle、MySQL

嵌入式数据库SQLite 的主要特点:

1. 支持事件,不需要配置,不需要安装,也不需要管理员;

2. 支持大部分SQL92;

3.一个完整的数据库保存在磁盘上面一个文件,同一个数据库文件可以在不同机器上面使用,最大支持数据库到2T,字符和BLOB 的支持仅限制于可用内存;

4.整个系统少于3 万行代码,少于250KB 的内存占用(gcc),大部分应用比目前常见的客户端/服务端的数据库快,没有其它依赖

5. 源代码开放,代码95%有较好的注释,简单易用的API。官方带有TCL 的编译版本。

关系数据库特点:

1、更好的安全性、多用户管理

2、强大的数据管理能力,如索引、视图等关系对象

3、强大的数据库编程式的设计,像T-SQL、存储过程、游标

4、丰富的数据类型

91、 Inserted deleted 的含义?

inserted 表反映插入或更新操作时插入的记录

deleted 表反映删除或更新操作时删除的记录

92、 函数和过程的区别?

返回类型  sql调用

  • 存储过程:

1) 一般用于在数据库中完成特定的业务 任务的

2) 可以定义返回类型,也可以不定义返回类型

3) SQL 语句中不可以调用  

  • 函数:

1) 一般用于特定的数据查询或数据转换处理

2) 申请时必须要定义返回类型,且程序体中必须定义return 语句。

3) 不能独立执行,必须作为表达式的一部分调用

4) SQL 语句中可以调用。

93、 数据库优化的方案

建立主键,为数据库创建索引,建立存储过程,触发器,可提高查询速度。

94、 Oracle 中有哪几种索引

1.单列索引与复合索引

一个索引可以由一个或多个列组成,用来创建索引的列被称为“索引列”。单列索引是基于单列所创建的索引,复合索引是基于两列或者多列所创建的索引。

2.唯一索引与非唯一索引

唯一索引是索引列值不能重复的索引,非唯一索引是索引列可以重复的索引。无论是唯一索引还是非唯一索引,索引列都允许取NULL 值。默认情况下,Oracle 创建的

索引是不唯一索引。

3.B 树索引

B 树索引是按B 树算法组织并存放索引数据的,所以B 树索引主要依赖其组织并存放索引数据的算法来实现快速检索功能。

4.位图索引

位图索引在多列查询时,可以对两个列上的位图进行AND 和OR 操作,达到更好的查询效果。

5.函数索引

Oracle 中不仅能够直接对表中的列创建索引,还可以对包含列的函数或表达式创建索引,这种索引称为“位图索引

95、 数据库索引的优点和缺点

优点:

1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

3、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:

1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

2、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速

96、 触发器有几种?

共2 种,一种DML 触发,就是遇到DML 事件时触发执行,像insert\update\delete。一种DDL 触发,遇到DDL 事件时触发,像Login Datatabase、更改数据库状态、create 语句等

97、 oracle 中除了数据库备份,还有什么方法备份?

Oracle 数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。

10G 有几种新功能进行备份,像数据磅

98、 写出删除表中重复记录的语句oracle

delete from people

where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by

99、 数据库里面游标,索引是怎么用的?

declare cur cursor keyset for get 返回null,load classnotfoundException

100、 Oracle 中数据库中的一个表中,这个表没有主键id 也没有特定标示来查数据,怎么查?

利用伪列标识进行查询。

101、 大数据量下的分页解决方法

答:最好的办法是利用sql 语句进行分页,这样每次查询出的结果集中就只包含某页的数据

内容。再sql 语句无法实现分页的情况下,可以考虑对大的结果集通过游标定位方式来获取

某页的数据。

sql 语句分页,不同的数据库下的分页方案各不一样,下面是主流的三种数据库的分页sql:

sql server:

String sql =

"select top " + pageSize + " * from students where id not in" +

"(select top " + pageSize * (pageNumber-1) + " id from students order by id)" +

"order by id";

mysql:

String sql =

"select * from students order by id limit " + pageSize*(pageNumber-1) + "," +

pageSize;

oracle:

String sql =

"select * from " +

(select *,rownum rid from (select * from students order by postime desc) where

rid<=" + pagesize*pagenumber + ") as t" +

"where t>" + pageSize*(pageNumber-1);

102、 写一个用jdbc 连接并访问oracle 数据的程序代码

103、 JavaScript 有哪几种数据类型

简单:Number,Boolean,String,Null,Undefined

复合:Object,Array,Function

104、 js 编码中innerHTML,outhtml,innertext 区别

(1) innerHTML 设置或获取位于对象起始和结束标签内的HTML 

(2) outerHTML 设置或获取对象及其内容的HTML 形式

(3) innerText 设置或获取位于对象起始和结束标签内的文本

(4) outerText 设置(包括标签)或获取(不包括标签)对象的文本

105、 写一个简单的json 对象?

var json_ =

{

stuId : 2012002,

stuName:‘李华明’,

stuAge:20,

stuSex:’男’

}

如果一个JavsScript 对象转JSON 可以通过eval()函数转换成JSON 对象进行访问。

106、 什么是json ,jquery?

JSON: (javaScript Object Notation)是一种轻量级的数据交换格式。

JSON 两种结构:

名称/值对的集合,不同的语言中,它被理解为对象,记录,结构,字典,哈希表,有键列表,关联数组。值的有序列表,数组

jQuery:

jQuery 由美国人John Resig 创建是一个优秀的javascript 框架使用户能够方便的处理HTML documents events 实现动画效果,并且方便地为网站提供AJAX 交互。

107、 jQuery 中有id foo 的对象有att 属性,如何获取att 属性的值?

$(‘foo’).att(‘attr’).val()

108、 jQuery 中添加文本怎么写在div

可以通过jQuery 提供的元素选择器或ID 选择器为实现,如:

$(‘div’).append(‘Hello ’);要求只能有一个div 否则$(‘div’)返回的是数组$(‘#ID 名称’).append(“hello”);

109、 你为什么要使用jquery

因为jQuery 是轻量级的框架,大小不到30kb,它有强大的选择器,出色的DOM 操作的封装,有可靠的事件处理机制(jQuery 在处理事件绑定的时候相当的可靠),完善的ajax(它的ajax 封装的非常的好,不需要考虑复杂浏览器的兼容性和XMLHttpRequest 对象的创建和使用的问题。) 出色的浏览器的兼容性。而且支持链式操作,隐式迭代。行为层和结构层的分离,还支持丰富的插件,jquery 的文档也非常的丰富。

110、 你使用jquery 遇到过哪些问题,你是怎么解决的?

答:这个答案是开发的,看你是否有相关的项目经验。例前台拿不到值,JSON 可是出现的错误(多了一个空格等)这编译是不会报错的jquery 库与其他库冲突:

1>如果其他库在jquery 库之前导入的话

1 我们可以通过jquery.noconflict()将变量的$的控制权过度给其他库

2 自定义快捷键,用一个变量接住jquery.noconflict()

3 通过函数传参

2>如果jquery 库在其他库之前导入就直接使用jquery 今天在处理一个数据问题时,发现jQuery.ajax()方法返回的值一直有问题,清除缓存后数据无误,多次测试后发现返回的值都是之前的值,并且一直未执行url(后台为JAVA,设置断点一直未进入)。在网上查找下,发现是未设置type 的原因。如果没设置jQuery.ajax 的type="Post",那么ajax 就会默认type="Get",这就会导致之前数据被缓存起来。加上type="Post",问题解决!

111、 你知道jquery 中的选择器吗,请讲一下有哪些选择器?

jQuery 中的选择器大致分为:基本选择器,层次选择器,过滤选择器,表单选择器

112、 jquery 中的选择器和css 中的选择器有区别吗?

jQuery 选择器支持CSS 里的选择器,jQuery 选择器可用来添加样式和添加相应的行为CSS中的选择器是只能添加相应的样式

113、 你觉得jquery 中的选择器有什么优势?

简单的写法$('ID') 来代替document.getElementById()函数支持CSS1 到CSS3 选择器完善的处理机制(就算写错了id 也不会报错)

114、 你在使用选择器的时候有有没有什么觉得要注意的地方?

1) 选择器中含有".","#","[" 等特殊字符的时候需要进行转译

2) 属性选择器的引号问题

3) 选择器中含有空格的注意事项

115、 jquery 对象和dom 对象是怎样转换的?

jquery 转DOM 对象:jQuery 对象是一个数组对象,可以通过[index]的丰富得到相应的DOM 对象还可以通过get[index]去得到相应的DOM 对象。DOM 对象转jQuery 对象:$(DOM对象)

116、 你是如何使用jquery 中的ajax 的?

如果是一些常规的ajax 程序的话,使用load(),$.get(),$.post(),就可以搞定了, 一般我会使用的是$.post() 方法。如果需要设定beforeSend(提交前回调函数),error(失败后处理),success

117、 你觉得jquery 中的ajax 好用吗,为什么?

答: 好用的。因为jQuery 提供了一些日常开发中夙瑶的快捷操作,例load,ajax,get,post等等,所以使用jQuery 开发ajax 将变得极其简单,我们就可以集中精力在业务和用户的体验上,不需要去理会那些繁琐的XMLHttpRequest 对象了。

118、 jquery $.get()提交和$.post()提交有区别吗?

1) $.get() 方法使用GET 方法来进行异步请求的。$.post() 方法使用POST 方法来进行异步请求的。

2) get 请求会将参数跟在URL 后进行传递,而POST 请求则是作为HTTP 消息的实体内容发送给Web 服务器的,这种传递是对用户不可见的。

3) get 方式传输的数据大小不能超过2KB 而POST 要大的多

4) GET 方式请求的数据会被浏览器缓存起来,因此有安全问题。

119、 jquery 中的load 方法一般怎么用的?

答:load 方法一般在载入远程HTML 代码并插入到DOM 中的时候用通常用来从Web 服务器上获取静态的数据文件。如果要传递参数的话,可以使用$.get() 或$.post()

120、 jquery 中你是如何去操作样式的?

addClass() 来追加样式

removeClass() 来删除样式

toggle() 来切换样式

121、 简单的讲叙一下jquery 是怎么处理事件的,你用过哪些事件?

答: 首先去装载文档,在页面家在完毕后,浏览器会通过javascript 为DOM 元素添加事件。

122、 你使用过jquery 中的动画吗,是怎样用的?

【参考】答:使用过。hide() 和show() 同时修改多个样式属性。像高度,宽度,不透明度。fadeIn()和fadeOut() fadeTo() 只改变不透明度slideUp() 和slideDown() slideToggle() 只改变高度animate() 属于自定义动画的方法。

123、 你使用过jquery 中的插件吗?

【参考】答:看个人的实力和经验来回答了。

124、 你一般用什么去提交数据,为什么?

【参考】答:一般我会使用的是$.post() 方法。如果需要设定beforeSend(提交前回调函数),error(失败后处理),success(成功后处理)及complete(请求完成后处理)回调函数等,这个时候我会使用$.ajax()

125、 jquery 中引入css 有几种方式?

【参考】答:四种行内式,内嵌式,导入式,链接式

126、 你在jquery 中使用过哪些插入节点的方法,它们的区别是什么?

【参考】append(),appendTo(),prepend(),prependTo(),after(),insertAfter()before(),insertBefore() 大致可以分为内部追加和外部追加

append() 表式向每个元素内部追加内容。appendTo() 表示讲所有的元素追加到指定的元素中。例$(A)appendTo(B) 是将A 追加到B

中下面的方法解释类似

127、 你使用过包裹节点的方法吗,包裹节点有方法有什么好处?

【参考】 wrapAll(),wrap(), wrapInner() 需要在文档中插入额外的结构化标记的时候可以使用这些包裹的方法应为它不会帛画原始文档的语义

128、 jquery 中如何来获取或和设置属性?

【参考】jQuery 中可以用attr()方法来获取和设置元素属性removeAttr() 方法来删除元素属性

129、 如何来设置和获取HTML 和文本的值?

【参考】html()方法类似于innerHTML 属性可以用来读取或者设置某个元素中的HTML 内容注意:html() 可以用于xhtml 文档不能用于xml 文档text() 类似于innerText 属性可以用来读取或设置某个元素中文本内容。val() 可以用来设置和获取元素的值

130、 jquery 中有哪些方法可以遍历节点?

children() 取得匹配元素的子元素集合,只考虑子元素不考虑后代元素

next() 取得匹配元素后面紧邻的同辈元素

prev() 取得匹配元素前面紧邻的同辈元素

siblings() 取得匹配元素前后的所有同辈元素

closest() 取得最近的匹配元素find() 取得匹配元素中的元素集合包括子代和后代

131、 子元素选择器和后代选择器元素有什么区别?

【参考】答:子代元素是找子节点下的所有元素,后代元素是找子节点或子节点的子节点中的元素

132、 jquery 中可以替换节点吗?

【参考】可以在jQuery 中有两者替换节点的方式replaceWith() 和replaceAll() 例如在<ptitle="hao are you">hao are you</p>替换成<strong>I am fine<strong>$('p').replaceWith('<strong>I am fine</strong>'); replaceAll 与replaceWith 的用法前后调换一下即可。

133、 你觉得beforeSend 方法有什么用?

【参考】发送请求前可以修改XMLHttpRequest 对象的函数,在beforeSend 中如果返回false可以取消本次的Ajax 请求。XMLHttpRequest 对象是唯一的参数所以在这个方法里可以做验证

134、 siblings() 方法和$('prev~div')选择器是一样的嘛?

【参考】 $('prev~div') 只能选择'#prev'元素后面的同辈<div>元素而siblings()方法与前后的文职无关,只要是同辈节点就都能匹配。

135、 你在ajax 中使用过JSON 吗,你是如何用的?

【参考】使用过,在$.getJSON() 方法的时候就是。因为$.getJSON() 就是用于加载JSON 文件的

136、 有哪些查询节点的选择器?

【参考】我在公司使用过:first 查询第一个,:last 查询最后一个,:odd 查询奇数但是索引从0 开始:even 查询偶数, eq(index)查询相等的,:gt(index)查询大于index 的,:lt 查询小于index:header 选取所有的标题等

137、 nextAll() 能替代$('prev~siblindgs')选择器吗?

【参考】能。使用nextAll() 和使用$('prev~siblindgs') 是一样的

138、 jQuery 中有几种方法可以来设置和获取样式

答:addClass() 方法,attr() 方法

139、 $(document).ready()方法和window.onload 有什么区别?

【参考】 两个方法有相似的功能,但是在实行时机方面是有区别的。

1) window.onload 方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的。

2) $(document).ready() 方法可以在DOM 载入就绪时就对其进行操纵,并调用执行绑定的函数。

140、 jQuery 是如何处理缓存的?

【参考】要处理缓存就是禁用缓存.

1) 通过$.post() 方法来获取数据,那么默认就是禁用缓存的。

2) 通过$.get()方法来获取数据,可以通过设置时间戳来避免缓存。可以在URL 后面加上+(+new Date)例$.get('ajax.xml?'+(+new Date),function () { //内容

});

3) 通过$.ajax 方法来获取数据,只要设置cache:false 即可。

141、 $.getScript()方法和$.getJson() 方法有什么区别?

【参考】

1) $.getScript() 方法可以直接加载.js 文件,并且不需要对javascript 文件进行处理,javascript 文件会自动执行。

2) $.getJson() 是用于加载JSON 文件的,用法和$.getScript()

142、 你读过哪些有关于jQuery 的书吗?

【参考】

《jquery 基础教程》《jquery 实战》《锋利的jquery 》《巧用jquery 》

《jQuery 用户界面库学习指南》等

143、 $("#msg").text(); $("#msg").text("<b>new content</b>");有什么区别?

【参考】

1 $("#msg").text() 是返回id 为msg 的元素节点的文本内容

2 $("#msg").text("<b>new content</b>"); 是将“<b>new content</b>” 作为普通文本串写入id 为msg 的元素节点内容中, 页面显示粗体的<b>new content</b>

144、 radio 单选组的第二个元素为当前选中值,该怎么去取?

【参考】 $('input[name=items]').get(1).checked = true;

145、 选择器中idclass 有什么区别?

【参考】在网页中每个id 名称只能用一次,class 可以允许重复使用

146、 你使用过哪些数据格式,它们各有什么特点?

【参考】HTML 格式,JSON 格式,javascript 格式,XML 格式

1) HTML 片段提供外部数据一般来说是最简单的。

2) 如果数据需要重用,而且其他应用程序也可能一次受到影响,那么在性能和文件大小方面具有优势的JSON 通常是不错的选择。

3) 而当远程应用程序未知时,XML 则能够为良好的互操作性提供最可靠的保证。

147、 jQuery 能做什么?

【参考】

1) 获取页面的元素

2) 修改页面的外观

3) 改变页面大的内容

4) 响应用户的页面操作

5) 为页面添加动态效果

6) 无需刷新页面,即可以从服务器获取信息

7) 简化常见的javascript 任务

148、 ajax data 主要有几种方式?

【参考】三种,html 拼接的,json 数组,form 表单经serialize()序列化的。

149、 jQuery 中的hover()toggle()有什么区别?

【参考】

hover()和toggle()都是jQuery 中两个合成事件。hover()方法用于模拟光标悬停事件。toggle()方法是连续点击事件。

150、 你知道jQuery 中的事件冒泡吗,它是怎么执行的,何如来停止冒泡事件?

【参考】 知道,事件冒泡是从里面的往外面开始触发。在jQuery 中提供了stopPropagation()方法可以停止冒泡。

151、 例如单击超链接后会自动跳转,单击"提交"按钮后表单会提交等,有时候我想阻止这些默认的行为,该怎么办?

【参考】可以用event.preventDefault()或在事件处理函数中返回false,即return false;

152、 jquery 表单提交前有几种校验方法?分别为??

【参考】

formData:返回一个数组,可以通过循环调用来校验

jaForm:返回一个jQuery 对象,所有需要先转换成dom 对象

fieldValue:返回一个数组beforeSend()

153、 jquery 中你有没有编写过插件,插件有什么好处?你编写过那些插件?它应该注意那些?

【参考】

插件的好处:对已有的一系列方法或函数的封装,以便在其他地方重新利用,方便后期维护和提高开发效率插件的分类:封装对象方法插件、封装全局函数插件、选择器插件

注意的地方:

1) 插件的文件名推荐命名为jquery.[插件名].js,以免和其他的javaScript 库插件混淆。

2) 所有的对象方法都应当附加到jQuery.fn 对象上,而所有的全局函数都应当附加到jQuery对象本身上。

3) 插件应该返回一个jQuery 对象,以保证插件的可链式操作。

4) 避免在插件内部使用$作为jQuery 对象的别名,而应使用完整的jQuery 来表示,这样可以避免冲突或使用闭包来避免。

5) 所有的方法或函数插件,都应当一分好结尾,否则压缩的时候可能出现问题。在插件头部加上分号,这样可以避免他人的不规范代码给插件带来影响。

6) 在插件中通过$.extent({})封装全局函数,选择器插件,扩展已有的object 对象

7) 通过$.fn.extend({})封装对象方法插件

154、 怎样给jquery 动态附加新的元素?那么怎样给新生成的元素绑定事件呢?

【参考】jQuery 的html()可以给现在元素附加新的元素直接在元素还未生成前就绑定肯定是无效的,因为所绑定的元素目前根本不存在。所以我们可以通过live 和livequery 来动态绑定事件

155、 IE FireFox 脚本兼容性问题

(1) window.event:表示当前的事件对象,IE 有这个对象,FF 没有,FF 通过给事件处理函数传递事件对象

(2) 获取事件源IE 用srcElement 获取事件源,而FF 用target 获取事件源

(3) 添加,去除事件IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)

FF : element.addEventListener(“click”, function, true) element.removeEventListener(“click”,function, true)

(4) 获取标签的自定义属性IE:div1.value 或div1[“value”]FF:可用div1.getAttribute(“value”)

(5) document.getElementByName()和document.all[name]IE;document.getElementByName()和document.all[name]均不能获取div 元素

FF:可以

(6) input.type 的属性

IE:input.type 只读

FF:input.type 可读写

(7) innerText textContent outerHTML

IE:支持innerText, outerHTML

FF:支持textContent

(8) 是否可用id 代替HTML 元素

IE:可以用id 来代替HTML 元素

FF:不可以这里只列出了常见的,还有不少

156、 css+div 的优势

Div+CSS 标准的优点:

1.大大缩减页面代码,提高页面浏览速度,缩减带宽成本;

2.结构清晰,容易被搜索引擎搜索到,天生优化了seo

3.缩短改版时间。只要简单的修改几个CSS 文件就可以重新设计一个有成百上千页面的站点。

4.强大的字体控制和排版能力。CSS 控制字体的能力比糟糕的FONT 标签好多了,有了CSS,我们不再需要用FONT 标签或者透明的1 px GIF 图片来控制标题,改变字体颜色,字体样式等等。

5.CSS 非常容易编写。你可以象写html 代码一样轻松地编写CSS。

6.提高易用性。使用CSS 可以结构化HTML

7.可以一次设计,随处发布。更好的控制页面布局

157、 DIV Span 的区别?

DIV(division)是一个块级元素,可以包含段落、标题、表格,乃至诸如章节、摘要和备注等。而SPAN 是行内元素,SPAN 的前后是不会换行的,它没有结构的意义,纯粹是应用样式,当其他行内元素都不合适时,可以使用SPAN在HTML 视图中工作时,可以在<DIV> 内编辑文本,将某些字包含在<SPAN> 元素内,以强调那些字。与<DIV> 不同,<SPAN> 和它周围的文本一起移动

158、 css 是什么层叠样式表

层叠样式表,用来进行页面样式设计,美化页面显示

159、 xml 有哪些解析技术,有什么区别?

有DOM,SAX,STAX 等

DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM 的树结构所造成的,这种结构占用的内存较多,而且DOM 必须在解析文件之前把整个文档装入内存,适合对XML 的随机访问SAX:不现于DOM,SAX 是事件驱动型的XML 解析方式。它顺序读取XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML 文件,适合对XML 的顺序访问

第86 页共188 页

160、 ajax 的工作原理?

Ajax 基本上就是把JavaScript 技术和XMLHttpRequest 对象放在Web 表单和服务器之间。当用户填写表单时,数据发送给一些JavaScript 代码而不是直接发送给服务

器。相反,JavaScript 代码捕获表单数据并向服务器发送请求。同时用户屏幕上的表单也不会闪烁、消失或延迟。换句话说,JavaScript 代码在幕后发送请求,用户甚至不知道请求的发出。更好的是,请求是异步发送的,就是说JavaScript 代码(和用户)不用等待服务器的响应。因此用户可以继续输入数据、滚动屏幕和使用应用程序。然后,服务器将数据返回JavaScript 代码(仍然在Web 表单中),后者决定如何处理这些数据。它可以迅速更新表单数据,让人感觉应用程序是立即完成的,表单没有提交或刷新而用户得到了新数据。JavaScript 代码甚至可以对收到的数据执行某种计算,再发送另一个请求,完全不需要用户干预!这就是XMLHttpRequest 的强大之处。它可以根据需要自行与服务器进行交互,用户甚至可以完全不知道幕后发生的一切。结果就是类似于桌面应用程序的动态、快速响应、高交互性的体验。

161、 javascript 中设置定时调用myfun()函数(周期为1 )的代码是?

setInterval(myfun(),1000)

162、 XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式?

两种形式dtd 、schema,

本质区别:schema 本身是xml 的,可以被XML 解析器解析(这也是从DTD 上发展schema 的根本目的)。

解析的中有:DOM、SAX、JDOM、DOM4J 等。

DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM 的树结构所造成的,这种结构占用的内存较多,而且DOM 必须在解析文件之前把整个文档装入内存,适合对XML 的随机访问SAX:不现于DOM,SAX 是事件驱动型的XML 解析方式。它顺序读取XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML 文件,适合对XML的顺序访问。

163、 HTTP 请求返回的状态码有哪些?分别有什么含义?

3XX:重定向,这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location 域中指明。

302:请求的资源现在临时从不同的URI 响应请求

303:对应当前请求的响应可以在另一个URI 上被找到,而且客户端应当采用GET 的方式访问那个资源。

4XX:请求错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。像,403、404、405 错误

5XX:服务器错误,这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

像,500、501、502 等错误

164、 二叉树遍历有几种方法

有3 种方法。先序遍历、中序遍历、后序遍历

165、 JSON XML 的优缺点

1) 在可读性方面,JSON 和XML 的数据可读性基本相同。JSON 和XML 的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

2) 在可扩展性方面,XML 天生有很好的扩展性,JSON 当然也有,没有什么是XML 能扩展,JSON 不能的。

3) 在编码难度方面,XML 有丰富的编码工具,比如Dom4j、JDom 等,JSON 也有json.org提供的工具,但是JSON 的编码明显比XML 容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML 就不太容易了。

4) 在解码难度方面,XML 的解析得考虑子节点父节点,让人头昏眼花,而JSON 的解析难度几乎为0。这一点XML 输的真是没话说。

5) 在流行度方面,XML 已经被业界广泛的使用,而JSON 才刚刚开始,但是在Ajax 这个特定的领域,未来的发展一定是XML 让位于JSON。到时Ajax 应该变成Ajaj(AsynchronousJavascript and JSON)了。

6) JSON 和XML 同样拥有丰富的解析手段。

7) JSON 相对于XML 来讲,数据的体积小。

8) JSON 与JavaScript 的交互更加方便。

9) JSON 对数据的描述性比XML 较差。

10) JSON 的速度要远远快于XML。

猜你喜欢

转载自www.cnblogs.com/798911215-Darryl-Tang/p/9124615.html