JavaEE面试题收集

by admin on 2019年10月7日

Java EE平台构建于Java SE平台之上,Java
EE平台提供一组API和运行环境来开发和运行大规模的,多层的,可扩展的,可靠的和安全的网络应用程序。这里会不断收集和更新JavaEE基础相关的面试题,目前已收集84题。

一、 JDBC 4

一面
HashMap 是线程安全的吗?Hashtable为什么是线程安全的?

一、 SDWebImage的实现原理

SDWebImage是用来加载网络图片的第三方库,实现了异步请求数据,并且实现了图片的缓存.
SDWebImage实现原理:
在内存和沙盒目录下各缓存一份文件,内存中的文件到一定程度会自动清除,沙盒目录下的文件需要由用户手动清除,第二次启动的时候,首先检测内存-检测沙盒目录-网络请求

一面

Onsubmit:提交Onblur:失去焦点Onclick:单击Onload:加载页面Onchange:内容改变onMouseMove:鼠标移动onMouseOver:鼠标经过onMouseOut:鼠标移出onselect:下拉选项被选中

history.golocation.reload()

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

ConcurrentHashmap怎么保证线程安全的? 详细说下。

二、frame和bounds的区别

坐标系不同。bounds是自己坐标系,rect中的origin一般都是(0,0)开始的。frame是父坐标系,rect中的origin就是指的在父系中的开始点。

看张图就明白了

图片 1

frame和bounds的对比

1.比较LinkedList、ArrayList的区别,分别适用于什么场景

前进

2、 Statement,PreparedStatement,CallableStatement的功能、特点。 4

HashMap 哈希运算的细节?为什么这么做?

三、类方法和实例方法的区别

1、类方法是属于整个类的,而实例方法是属于某个具体的对象的
2、类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量
3、类方法的调用可以通过类名.类方法,而实例方法只能通过对象.实例方法访问
4、类方法只能访问类方法,而实例方法可以访问类方法和实例方法
5、类方法不能被覆盖,实例方法可以被覆盖

简要总结:(1)所属范围不同,(2)访问的权限不同 (3)调用方式不同
(4)类方法不能被覆盖,实例方法可以被覆盖,
实例方法是建立实例才有的方法
类方法是直接可以使用类引用,不需要实例化就可以使用的方法,一般在项目中类方法都是设置为工具类使用的

2.Synchronized关键字和ReentrantLock的区别

history.gohistory.forward

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

ArrayList 和 LinkedList区别?

3.用过哪些线程池,ThreadPoolExecutor的参数含义

后退

4、 Tomcat连接池如何配置 4

ArrayList扩容机制是怎么样的? 详细说一下。

4.什么是悲观锁和乐观锁,乐观锁的实现原理

History.goHistory.back

二、 JSP 4

SpringMVC的工作原理?

5.计算机网络中OSI七层模型每一层的作用

Location.href=urlHistory.go

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

Session和Cookie的区别?

6.TCP三次握手、四次握手的过程,TCP和UDP协议的区别

Document.getElementById()Document.getElementsByName()Document.getElementsByTagName()

6、 9大隐式对象 4

RPC框架有用过么? 说下 Thrift 用法吧?

7.操作系统层面如何实现锁,形成死锁的必要条件,如何解决死锁

Onsubmit=“return false”

7、 EL和JSTL分别是什么 4

你一般在项目上怎么运用注释注解的?

8.数据库索引的实现原理,B树和B+的区别,建索引时一般会考虑哪些点

$:匹配字符串结束的位置^:匹配字符串开始的位置*:匹配零次或者多次+:匹配至少一次?:匹配零次或者一次.:匹配除换行符 \n之外的任何单字符{n}:n 是一个非负整数,匹配确定的 n 次 {n,m}:m 和 n 均为非负整数,表示最多和最少匹配次数,其中n <= m \w:匹配单个字符(a-z,0-9,_)\W:与\w相反\d:匹配数字\D:与\d相反

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

G1收集器的内存划分怎么样的?

9.怎么判断SQL查询是否使用到了索引

DELETE:选择性地删除数据,当删除整张表的数据时效率较低;只能删除整张表的数据,但是效率高于使用DELETE语句;不能选择性地删除。当truncate执行删除之后,自动生成的主键值重新从默认值开始。

9、 Request、Response对象的主要方法 4

说下标记-清除算法的具体过程吧?

10.MySQL存储引擎有哪些,区别是什么

Java API解析xml主要有两种方式;

10、 jsp和html注释有什么区别 4

知道有哪些jvm参数么?说一下吧?

11.公平锁和非公平锁区别

Dom解析:一次性加载整个文档,生成树形结构。在生成的文档对象中,可以对节点进行增删改查的操作。当xml文本当较小的时候,可以使用dom解析。

11、 常见EL表达式的用法 5

有了解过jvm调优么? 用过什么命令? 一般怎么调优?

二面

Sax解析:基于事件的解析方式,解析速度比较快,解析的文档大小理论上是没有限制的。

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

二面
JUC了解么? 说下CopyOnWriteArrayList吧?

1.Object类中包含哪些方法

还有一些开源的技术可以解析xml,dom4j或者jdom。

13、 Session与Cookie的区别 5

了解线程池么?给你实现一个线程池,怎么去实现呢?

2.重写hashCode方法但没有重写equals方法会有什么问题

表的设计要规范,即要符合数据库设计三范式。适当建立索引,在频繁作为检索条件,更新较少的字段上建立索引,以提高查询速度。分表查询,有水平分割、垂直分割。读写分离,读、写(create、update、delete)。建立存储过程。

三、 Servlet 5

什么情况会出现线程间卡住的情况?(不记得具体是怎么问的大概是这个意思吧)

3.HashMap的实现原理,在并发场景会有什么问题

Json(javascript simple object notation):轻量级的数据交换格式。

14、 Servlet的生命周期 5

你知道的锁有哪些?你说下Synchronized和Lock的区别吧?

4.ConcurrentHashMap的实现原理

使用{}实例化一个json对象,json对象多个元素使用逗号隔开,每个元素都是一个键值对

15、 Servlet的基本架构 5

了解Spring IOC 么?说下你了解的吧?

5.Redis两种持久化方式的区别,过期时如何淘汰数据

使用json-lib、gson、jackson可以解析json对象。需要将json对象转换成一个java对象,使用java对象访问属性。

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

说下Spring AOP吧?

6.Java中强引用和弱引用的区别

所有的索引都是为了更快地检索数据,索引存放在索引页中,数据存放在数据页中,索引以B树的形式存储

17、 简述Model1,Model2 5

你了解哪些RPC框架? Thrift是怎么工作的呢?其他的有了解么?

7.SpringMVC处理Web请求的完整流程

聚集索引:聚集索引用于决定数据表中的物理存储顺序,一张表最多有一个聚集索引。聚集索引的字段值尽量不能修改,因为修改后,因为修改后数据表的物理顺序需要重写排序。通常主键就是聚集索引

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

Mysql主从复制是怎么工作的呢?说说各个线程具体做了什么吧?

8.Spring中AOP的实现原理

非聚集索引:非聚集索引的关键自是index,不会决定表的物理存储顺序,在一张表内最多可以有249个非聚集索引。

19、 servletconfig和servletcontext 5

Redis 和 Memcache有什么区别? 你平时怎么选择的?为什么?

9.JDK动态代理和CGLib代理的区别

可以。但是只能有一个public类,而且public修饰的类名与文件名必须一致

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

Redis 如果数据不命中怎么处理的? 和Mysql是怎么同步数据的?

10.如何解决哈希冲突

Poi:操作office文档Jfreechat:生成各种图表Ckeditor:论坛中的富文本输入框Lucena:用于搜索技术Pinyin4j:操作汉字的拼音

21、 getAttribute() 5

你平时一般用哪个java版本的? jdk1.8有什么新特性呢?

三面

事务:

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

jvm gc的时候整个过程是怎么样的呢?

1.介绍自己印象最深的项目

单个逻辑单元执行的一系列操作,要么全部执行,要么全部不执行。

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

你在项目中一般怎么调优JVM的呢?

2.Web工程哪些地方可能会导致中文乱码,如何解决

特点:

24、 forward 和redirect 的区别? 6

你有什么工作上的规划么?

3.Error和Exception的区别,举例常见的Error和Exception,遇到Error、Exception时分别应该如何处理

原子性(Atomicity):事务中各元素不可分割,全部执行成功或者撤销所有的操作一致性(Consistency):事务完成后数据保持一致的状隔离性(Isolation):事务是相对独立的,对某数据进行修改时,其他事务不变持久性(Durability):事务完成后对系统的影响是永久性的。

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

聊下项目吧

4.介绍JVM的垃圾回收机制,为什么年轻代使用复制算法,老年代采用标记算法

但一个业务逻辑包括多个数据库操作的时候,而且需要保证每个数据表操作都执行的成功进行下一个操作,这个时候可以使用事务

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

三面
聊下项目

  1. 为什么只需要一个Eden而需要两个Survivor,如何设置年轻代的大小,这个比率的是谁和谁的比值

操作dom,改变dom的结构

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

项目上有什么更好的优化么?

6.什么时候发生浮点数精度丢失,存储0.1会不会发生精度丢失

指令:<%@ %>脚本:<% %>表达式:<%=%>声明:<%! %>注释:<% -- %>动作:<jsp:动作名称 属性=””>静态内容:html内容

PagepageContextrequestresponseoutsessionapplicationconfigexception

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

服务器DNS劫持怎么处理?

7.在要求高精度的场景,Java怎么解决

用于处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置isErrorPage值为true的页面中才可以被使用,在一般的JSP页面中使用该对象,将无法编译JSP文件。

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

Https具体流程是怎么样的?

8.比较下Java和C++语言的不同点

Get请求发送的文本内容大小有限制,而post请求没有限制Get请求的请求参数会出现在url路径中,而发送post请求时,参数不会显示在url路径中Get安全系数较低,但是效率较高。Post安全系数较高,但效率较低Get请求只能发送字符串,post请求可以提交二进制数据

应用层表示层会话层传输层网络层数据链路层物理层(物理层是最底层,应用层是最高层)

TCP/IP协议IPX/SPX协议NetBEUI协议

TCP 是面向连接的传输层协议 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的 TCP 提供可靠交付的服务 TCP 提供全双工通信面向字节流

TCP编程UDP编程

TCP协议:传输控制协议,提供可靠无差错的数据传输,效率较低UDP协议:用户数据报协议,不可靠的数据传输,效率较高

服务器程序创建一个ServerSocket,然后再用accept方法等待客户来连接客户端程序创建一个Socket并请求与服务器建立连接服务器接收客户的连接请求,并创建一个新的Socket与该客户建立专线连接刚才建立了连接的两个Socket在一个线程上对话服务器开始等待新的连接请求

继承Thread类实现Runnable接口推荐使用Runnable接口

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

输入一个网址访问具体流程是怎么样的?

9.post、get请求的区别

Synchronized关键字在方法签名上,可以防止多个线程同时访问这个对象的synchronized修饰的方法。如果一个对象有多个synchronized方法,只要一个线程访问其中的一个同步方法,那么其他线程就不能访问对象其他的任何一个同步方法。不同对象实例的synchronize方法是互不干扰的,也就是说,其他对象还可以访问这个类中的同步方法。

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

html css js等静态资源加载的顺序是怎么样的?依据什么?

10.https和http区别

Synchronized如果修饰的是静态方法,防止多个线程同时访问这个类中的静态同步方法,它对类中所有对象都能起作用。也就是说,只有一个对象一个线程可以访问静态同步方法

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

Session多系统多服务器共享问题

11.平时看哪些技术网站,如何学习新技术

Synchronized修饰方法中的某段代码块,只对当前代码块实行互斥访问。当多个线程同步访问同步代码块,同一时间只能有一个线程得到执行,其他线程必须等待当前线程执行完代码块之后才能执行。当一个线程访问同步代码快时,其他线程可以访问非同步的代码。当一个线程访问同步代码块时,那么其他线程访问对其他同步代码块的访问将会被阻塞

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

Cookie分布式问题

Synchronized关键字是不能继承的,如果父类的synchronized在继承时并不自动是synchronized修饰的,需要显示地声明。

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

实现一个类似Oauth2的授权,你会怎么实现

Synchronized修饰this时,会得到这个对象的对象锁,当一个线程访问时,那么其他线程访问对象的所有同步代码块或者同步方法,将会被阻塞。

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

Maven中怎么查看项目依赖的jar包

在一个应用程序中初始化一个线程集合,然后在需要执行新的任务时重用线程池中的线程,而不是创建一个新的线程。线程池中的每个线程都有被分配一个任务,一旦任务完成,线程就回到线程池中,等待下一次的任务分配

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

说一下你最熟悉的一个数据结构和算法吧。

游标是sql查询结果集的一个指针,与select语句相关联。

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

说下快排的整个过程吧,在白板上面画一下吧。有什么优化的地方么?

游标关键字是cursor,主要包含两个部分:游标结果集和游标位置。

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

最近看什么书?说一下最近印象最深刻的一个知识吧?

游标结果集:执行select语句后的查询结果游标位置:一个指向游标结果集内某条记录的指针。

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

分布式了解多少?

游标主要有两个状态:打开和关闭。

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

只有当游标处于打开状态时,才能够操作结果集中的数据当游标关闭后,查询结果集就不存在了

定义游标打开游标操作游标数据关闭游标

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

Mulitipart/form-data

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

_blank:在新的窗口打开网页_self:在本页面打开新网页_parent:在父frameset框架打开网页_top:去掉所有页面框架,使用document.htnl替代frameset文档

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

_top

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

加载:判断servlet实例是否存在,如果不存在,就加载serlvet实例化:初始化服务销毁

Init()Service()doGet或者doPostdestroy

新建就绪运行死亡阻塞

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

preparedStatement会预编译sql语句,能够提高批量的数据操作的执行效率,Statement执行slq的时候才进行编译

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

Preparedstatement在第一次执行sql的时候,比较耗费资源。如果只对数据库进行一次操作,使用statement比较好。

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

Statement会出现sql注入的问题,使用preparedstatment可以解决sql注入

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

Session保存在服务端,cookie保存在客户端Session保存是对象,cookie只能保存字符串Session不能设置路径,cookie可以设置保存路径。同一个网站不同网页的cookie可以保存到不通的路机构下,彼此是无法相互访问的。Session在服务器关闭后会自动消失,cookie则不会。

存储过程的关键自是procedure,函数关键字是function函数必须有返回值,存储过程没有返回值,但是有传出参数函数注重的是结果,存储过程注重的是过程函数可以在select语句中直接使用,而存储过程则不能

SessionCookie表单隐藏域url重写

PageContextRequestSessionApplication

统一资源定位符http://localhost:8080/myWeb/index.html:协议+主机地址+端口+项目名称+资源名称

TomcatJbossWeblogicGlassfish

可以将web项目打包成.war文件把war文件放在webapps文件夹中

49、 JSP 与SERVLET 区别 10

在tomcat根目录的conf文件夹内打开server.xml文件,修改Connector节点的port属性

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

请求转发只能将请求转发给同一个Web应用中的其他资源,而重定向不仅可以定向到当前应用程序中的其他资源,也可以重定向到其他站点上的资源。

51、 Servlet 与CGI 的区别 10

重定向结束后,浏览器地址栏显示URL会发生改变,由初始的URL地址变成重定向的目标URL。而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

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

请求转发的发起者和接受者之间共享相同的HttpServletRequest实例和HttpServletResponse实例,而重定向的发起者和接受者使用各自的HttpServletRequest实例和HttpServletResponse实例。

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

转发是一次请求,重定向是二次请求。转发是在服务器进行的,重定向在客服端进行的。

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

上传文件主要用的是开源组件,如apache commoms
fileupload或者jspformatupload

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

200:请求成功400:不是正确的请求,大多情况下表示参数错误404:找不到请求资源500:服务器内部错误403:服务器拒绝405:请求的method不支持504:服务器临时不可用

IncludeTaglibPage

56、 dao 是什么及作用 11

Session.invalidate()

57、 解释一下什么是servlet 11

使用jstl标签库,使用numberformat或者dateformat标签

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

线程同步:同时只有一条线程执行一个任务线程异步:同时有多条线程可以执行执行任务

同步任务:当前任务没有完成之前,其他任务不能够执行异步任务:当前任务没有完成,任然可以可以发送一个新的请求

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

过滤器:在请求发送之后,处理之前对请求的一次拦截,可以更改请求状态或者参数值等。

60、 request 对象的主要方法 11

创建过滤器:实现filter接口,重写doFilter方法,最后在web.xml中配置过滤器

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

Integer是int的包装类型。Int的默认值是0,integer的默认值是null

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

使用junit

63、 JSP 的常用指令 12

Select top 3 * from tb_name where id not in (select top 3 id from
tb_name)

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

ava
Web开发中的监听器就是application、session、request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件,如下所示:

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

ServletContextListener:对Servlet上下文的创建和销毁进行监听。 ServletContextAttributeListener:监听Servlet上下文属性的添加、删除和替换。 HttpSessionListener:对Session的创建和销毁进行监听。

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

静态包含是通过JSP的include指令包含页面,动态包含是通过JSP标准动作<jsp:forward>包含页面。

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

静态包含是编译时包含,如果包含的页面不存在则会产生编译错误,而且两个页面的”contentType”属性应保持一致,因为两个页面会合二为一,只产生一个class文件,因此被包含页面发生的变动再包含它的页面更新前不会得到更新。

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

动态包含是运行时包含,可以向被包含的页面传递参数,包含页面和被包含页面是独立的,会编译出两个class文件,如果被包含的页面不存在,不会产生编译错误,也不影响页面其他部分的执行。

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

可以通过请求对象(HttpServletRequest)的getParameter()方法通过参数名获得参数值。如果有包含多个值的参数,可以通过请求对象的getParameterValues()方法获得。当然也可以通过请求对象的getParameterMap()获得一个参数名和参数值的映射。

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

通过请求对象(ServletRequest)的setCharacterEncoding方法可以设置请求的编码,其实要彻底解决乱码问题就应该让页面、服务器、请求和响应、Java程序都使用统一的编码,最好的选择当然是UTF-8;通过响应对象(ServletResponse)的setContentType方法可以设置响应内容的类型,当然也可以通过HttpServletResponsed对象的setHeader(String,
String)方法来设置。

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

从表面上看,Web
Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法透明的调用这个应用程序,不需要了解它的任何细节,跟你使用的编程语言也没有关系。例如可以创建一个提供天气预报的Web
Service,那么无论你用哪种编程语言开发的应用都可以通过调用它的API并传入城市信息来获得该城市的天气预报。之所以称之为Web
Service,是因为它基于HTTP协议传输数据,这使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。

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

对象关系映射(Object-Relational
Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术

73、 如何实现Servlet 单线程 13

SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。对于应用程序,最好将SessionFactory通过单例模式进行封装以便于访问。Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元。Session是由SessionFactory创建的,在任务完成之后它会被关闭。Session是持久层服务对外提供的主要接口。Session会延迟获取数据库连接(也就是在需要的时候才会获取)。为了避免创建太多的session,可以使用ThreadLocal将session和当前线程绑定在一起,这样可以让同一个线程获得的总是同一个session。Hibernate
3中SessionFactory的getCurrentSession()方法就可以做到。

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

如果没有找到符合条件的记录,get方法返回null,load方法抛出异常。

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

get方法直接返回实体类对象,load方法返回实体类对象的代理。

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

在Hibernate
3之前,get方法只在一级缓存中进行数据查找,如果没有找到对应的数据则越过二级缓存,直接发出SQL语句完成数据读取;load方法则可以从二级缓存中获取数据;从Hibernate
3开始,get方法不再是对二级缓存只写不读,它也是可以访问二级缓存的。

四、 数据库 14

瞬时态(transient)持久态(persistent)游离态

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

瞬时态的实例可以通过调用save()、persist()或者saveOrUpdate()方法变成持久态;游离态的实例可以通过调用
update()、saveOrUpdate或者replicate()变成持久态。save()和persist()将会引发SQL的INSERT语句,而update会引发UPDATE语句。save()和update()的区别在于一个是将瞬时态对象变成持久态,一个是将游离态对象变为持久态。merge()方法可以完成save()和update()方法的功能,它的意图是将新的状态合并到已有的持久化对象上或创建新的持久化对象。

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

对于persist()方法,

79、 事务四大属性 14

persist()方法把一个瞬时态的实例持久化,但是并不保证标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间;

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

persist()方法保证当它在一个事务外部被调用的时候并不触发一个INSERT语句,当需要封装一个长会话流程的时候,persist()方法是很有必要的;

 82、 SqlServer 的完整性约束? 14

save()方法不保证第②条,它要返回标识符,所以它会立即执行INSERT语句,不管是在事务内部还是外部。至于lock()方法和update()方法的区别,update()方法是把一个已经更改过的脱管状态的对象变成持久状态;lock()方法是把一个没有更改过的脱管状态的对象变成持久状态。

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

Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;

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

如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断,从而提升性能)中进行查找,如果NonExists中存在同样的查询条件,则返回null;

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

如果一级缓存查询失败则查询二级缓存,如果二级缓存命中则直接返回;

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

如果之前的查询都未命中,则发出SQL语句,如果查询未发现对应记录则将此次查询添加到Session的NonExists中加以记录,并返回null;

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

根据映射配置和SQL语句得到ResultSet,并创建对应的实体对象;

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

将对象纳入Session的管理;

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

如果有对应的拦截器,则执行拦截器的onLoad方法;

90、 join 与left join 的区别: 16

如果开启并设置了要使用二级缓存,则将数据对象纳入二级缓存;

91、 用sql 语句分页: 16

返回数据对象。

92、 oracle 中row_id 理解             16

list()方法无法利用一级缓存和二级缓存,它只能在开启查询缓存的前提下使用查询缓存;iterate()方法可以充分利用缓存,如果目标数据只读或者读取频繁,使用iterate()方法可以减少性能开销。

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

list()方法不会引起N+1查询问题,而iterate()方法可能引起N+1查询问题

94、 Inserted 和deleted 的含义? 16

延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。Hibernate使用了虚拟代理机制实现延迟加载,我们使用Session的load()方法加载数据或者一对多关联映射在使用延迟加载的情况下从一的一方加载多的一方,得到的都是虚拟代理,简单的说返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法时才会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。

95、 函数和过程的区别? 16

延迟加载与session关闭的矛盾一般可以这样处理:

96、 数据库优化的方案 16

关闭延迟加载特性。这种方式操作起来比较简单,因为Hibernate的延迟加载特性是可以通过映射文件或者注解进行配置的,但这种解决方案存在明显的缺陷。首先,出现”no
session or session was
closed”通常说明系统中已经存在主外键关联,如果去掉延迟加载的话,每次查询的开销都会变得很大。

97、 Oracle 中有哪几种索引 16

在session关闭之前先获取需要查询的数据,可以使用工具方法Hibernate.isInitialized()判断对象是否被加载,如果没有被加载则可以使用Hibernate.initialize()方法加载对象。

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

使用拦截器或过滤器延长Session的生命周期直到视图获得数据。Spring整合Hibernate提供的OpenSessionInViewFilter和OpenSessionInViewInterceptor就是这种做法。

99、 触发器有几种? 17

制定合理的缓存策略(二级缓存、查询缓存)。采用合理的Session管理机制。尽量使用延迟加载特性。设定合理的批处理参数。如果可以,选用UUID作为主键生成器。如果可以,选用乐观锁替代悲观锁。在开发过程中, 开启hibernate.show_sql选项查看生成的SQL,从而了解底层的状况;开发完成后关闭此选项。考虑数据库本身的优化,合理的索引、恰当的数据分区策略等都会对持久层的性能带来可观的提升,但这些需要专业的DBA提供支持。

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

Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体、修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除非显示调用了Session的flush()方法或通过close()方法关闭Session。通过一级缓存,可以减少程序与数据库的交互,从而提高数据库访问性能。

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

SessionFactory级别的二级缓存是全局性的,所有的Session可以共享这个二级缓存。不过二级缓存默认是关闭的,需要显示开启并指定需要使用哪种二级缓存实现类(可以使用第三方提供的实现)。一旦开启了二级缓存并设置了需要使用二级缓存的实体类,SessionFactory就会缓存访问过的该实体类的每个对象,除非缓存的数据超出了指定的缓存空间。

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

一级缓存和二级缓存都是对整个实体进行缓存,不会缓存普通属性,如果希望对普通属性进行缓存,可以使用查询缓存。查询缓存是将HQL或SQL语句以及它们的查询结果作为键值对进行缓存,对于同样的查询可以直接从缓存中获取数据。查询缓存默认也是关闭的,需要显示开启。

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

IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency
Injection)叫依赖注入,是对IoC更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的”控制反转”就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

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

依赖注入可以通过setter方法注入、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。

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

no:不进行自动装配,手动设置Bean的依赖关系。 byName:根据Bean的名字进行自动装配。byType:根据Bean的类型进行自动装配。constructor:类似于byType,不过是应用于构造器的参数,如果正好有一个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。autodetect:如果有默认的构造器,则通过constructor的方式进行自动装配,否则使用byType的方式进行自动装配。

106、 JavaScript 有哪几种数据类型 18

AOP(Aspect-Oriented
Programming)指一种程序设计范型,该范型以一种称为切面的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点(crosscutting
concern)。

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

Singleton:Bean以单例的方式存在Prototype:表示每次从容器中调用Bean时,都会返回一个新的实例,prototype通常翻译为原型Request:每次HTTP请求都会创建一个新的BeanSession:同一个HttpSession共享同一个Bean,不同的HttpSession使用不同的BeanglobalSession:同一个全局Session共享一个Bean

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

首先需要在Spring配置文件中增加配置:<context:component-scan
base-package=”org.example”/>

109、 什么是json ,jquery? 18

用@Component、@Controller、@Service、@Repository注解来标注需要由Spring
IoC容器进行对象托管的类。

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

@Controller通常用于控制器@Service通常用于业务逻辑类@Repository通常用于DAO类普通的类用@Component来标注。

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

Spring支持编程式事务管理和声明式事务管理。声明式事务管理要优于编程式事务管理,尽管在灵活性方面它弱于编程式事务管理,因为编程式事务允许通过代码控制业务。

112、 你为什么要使用jquery? 18

客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求。

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

DispatcherServlet收到请求后,将根据请求的信息(包括URL、HTTP协议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找到处理该请求的Handler(任何一个对象都可以作为请求的Handler)。

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

在这个地方Spring会通过HandlerAdapter对该处理器进行封装。

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

HandlerAdapter是一个适配器,它用统一的接口对各种Handler中的方法进行调用。

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

Handler完成对用户请求的处理后,会返回一个ModelAndView对象给DispatcherServlet,ModelAndView顾名思义,包含了数据模型以及相应的视图的信息。

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

ModelAndView的视图是逻辑视图,DispatcherServlet还要借助ViewResolver完成从逻辑视图到真实视图对象的解析工作。

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

当得到真正的视图对象后,DispatcherServlet会利用视图对象对模型数据进行渲染。

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

客户端得到响应,可能是一个普通的HTML页面,也可以是XML或JSON字符串,还可以是一张图片或者一个PDF文件。

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

Spring IoC容器找到关于Bean的定义并实例化该Bean。 pring IoC容器对Bean进行依赖注入。如果Bean实现了BeanNameAware接口,则将该Bean的id传给setBeanName方法。如果Bean实现了BeanFactoryAware接口,则将BeanFactory对象传给setBeanFactory方法。如果Bean实现了BeanPostProcessor接口,则调用其postProcessBeforeInitialization方法。如果Bean实现了InitializingBean接口,则调用其afterPropertySet方法。如果有和Bean关联的BeanPostProcessors对象,则这些对象的postProcessAfterInitialization方法被调用。当销毁Bean实例时,如果Bean实现了DisposableBean接口,则调用其destroy方法。

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、 选择器中id,class 有什么区别? 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、 Statement,PreparedStatement,CallableStatement的功能、特点。

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

 

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

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

 

4、 Tomcat连接池如何配置

6以上:在MATE-INF下配置context.xml;
5.5:conf/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大隐式对象

将对象的作用一起说出来

 

输入、输出对象:request、response、out
作用域对象:pageContext、session、application
servlet对象:page(代表servlet对象)、config(servlet配置)
错误对象:Exception
isErrorPage=”true”

7、 EL和JSTL分别是什么

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

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

 

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

 

 

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

9、 Request、Response对象的主要方法

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

request:getAttribute()、setAttribute()、getParameter()、getParameterValues()、setCharaterEncoding()
response:setCharaterEcoding()、获得其他对象的方法。。。

10、 jsp和html注释有什么区别

Html看的到、jsp看不到

11、 常见EL表达式的用法

${}

12、 Session与Cookie的区别

Session和cookie都是 跟踪回话的技术

 

 

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、 JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

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

15、 简述Model1,Model2

都是MVC设计模式
Model1:jsp+javabeans,M由javabeans实现;V、C放在jsp中
Model2:jsp+servlet+javabeans,M:javabeans,V:jsp,C:servlet

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

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

 

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

17、 servletconfig和servletcontext

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

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

继承HttpServlet抽象类,可以实现:init、destroy、doXxx,在web.xml中配置servlet、servlet-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:与请求有关的会话期;

application:servlet 正在执行的内容;

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

config:servlet 的构架部件;

page:JSP 网页本身;

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

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

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

 

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

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

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

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

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

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

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

答:C/S 是Client/Server 的缩写,是客户机与服务器结构的应用程序,服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix 或SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server 的缩写,是浏览器和服务器结构的应用程序,即Web 应用程序,客户机上只要安装一个浏览器(Browser),如Netscape Navigator 或InternetExplorer,服务器安装Oracle、Sybase、Informix 或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 应用的信息;如listener、filter 及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、 数据库事务及隔离级别

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

 

 

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

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

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

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

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

  4. 幻读(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),大部分应用比目前常见的客户端/服务端的数据库快,没有其它依赖

  1. 源代码开放,代码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、 选择器中id,class 有什么区别?

【参考】在网页中每个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。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图