面试题集--中关村.docx
JAVA企业面试题集一.java语言核心1 .说说你使用的linux命令:pwd,ls,cd,telnet,ssh,ftp,sftp,tar,jar,zip,mkdir,等等。2 .指出下列Linux命令的含义。(Linux )Is -a杳看当前目录信息,包括隐藏文件。cat file查看文件内容。chmod 777 file针对所有用户,将文件授权为读,写,执行权限。mount/dev/sdal/mnt/usbdisk 将设备挂戴为 mut/usbdisk0.怎么增加代码的清晰度和可观性?注释,包和引入语句,类和接口声明,缩进排版,声明,初始化,布局严格按照Java语言 编码规范.什么是Java集合APIJava集合框架API是用来表示和操作集合的统一框架,它包含接口、实现类、以及帮助程 序员完成一些编程的算法。简言之,API在上层完成以下几件事:1 .编程更加省力,提高城程序速度和代码质量.非关联的API提高互操作性2 .节省学习使用新API成本.节省设计新API的时间3 .鼓励、促进软件重用5 .说一下java5版本的一些新特性(列举几个你最熟悉的,并对其中两个做简单介绍)(对 java5的一些新特性的了解程度)1)泛型(Generic):增强了 java的类型安全,可以在编译期间对容器内的对象进行类型检 查,在运行期不必进行类型的转换2)增强循环(Enhanced for Loop)3)可变参数(Variable Arguments),实现了更灵活的方法参数传入方式例如: voidtest(Object . args)4)自动实现装箱和解箱操作(Boxing/Unboxing Conversions)实现了基本类型与外覆类 之间的隐式转换。基本类型至外覆类的转换称为装箱,外覆类至基本类型的转换为解箱5)静态导入(Static Imports)6)枚举类(Enumeration Classes)五.Ajax/JQuery1.什么是SSL双向认证和单向认证(选答)单向认证:客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据 进行加密,然后把加密后的数据和服务器端的公钥一起发送到客户端,客户端用服务器发送 来的公钥对数据解密,然后在用传到客户端的服务器公钥对数据加密传给服务器端,服务器 用私钥对数据进行解密,这就完成了客户端和服务器之间通信的安全问题,但是单向认证没 有验证客户端的合法性。双向认证:(1)客户端向服务器发送消息,首先把消息用客户端证书加密然后连同时把客户端证书一 起发送到服务器端(2)服务器接到消息后用首先用客户端证书把消息解密,然后用服务器私钥把消息加密, 把服务器证书和消息一起发送到客户端(3)客户端用发来的服务器证书对消息进行解密,然后用服务器的证书对消息加密,然后 在用客户端的证书对消息在进行一次加密,连同加密消息和客户端证书一起发送到服务器端, (4)到服务器端首先用客户端传来的证书对消息进行解密,确保消息是这个客户发来的, 然后用服务器端的私钥对消息在进行解密这个便得到了明文数据。,如何使用JavaScript编写代码调动一个周期性执行的代码。(JavaScript) 使用window对象的setinterval方法和setTimeout方法9 .请解释XML,JSON,BASE64o (数据传输)A) XML可扩展的标记语句,基于文本的通过数据表示方式。B ) JSON 一种基于文本的轻量级数据表示方式。C) BASE64基于文本的字节传输编码方式。10 . Ajax是什么,在什么地方使用?(JavaScript)A )运行在浏览器中的JavaScript,异步的向服务器发出HTTO请求。B )服务器处理该请求,响应的数据时XML或JSON (更常用XC )浏览器中的JavaScript收到并解析该数据,局部刷新页面。11 . jquery里的缓存问题如何解决?如果直接用jQuery里的$.ajax()方法的话,去除缓存很简单,只需要配置一下缓存属性 cache为false,但如果想要简单写法getJSON(),去除缓存就不能通过配置来解决了。因 为getJSON根本没有这个缓存属性让你来配置。因为如果其调用的地址URL和之前的一 样的话,回调函数会直接在缓存里面读取数据,而不是进后台调用相应的方法。解决方法就是让他的每次请求的URL地址不一样就行,但是同时又要不影响请求的服务所 需要的数据,那么可以有一下几种方法:1、$.getJSON( /URL?t=,/ +new Date(),function(json);就是原有的 URL 基础上力口一个 时间变量,每次的请求地址就不一样了。2、 $.getJSON( "URL?rand="+Math.random,function(json);就是原有的 URL 基础 上加上一个随机变量,不过这个方法有风险,万一随机数一样。OOOOO3、第三种方法就是自己定义一个递增变量在URL后面加上这个递增变量每次请求完后, 就递增一下。$.get()去除缓存的方法和$.getJSON()相同。六. struts21 .请说出struts框架的几大组件?1、MVC2、标签库3、校验框架4、国际化5、tiles. Struts2的有哪些优势劣势?(框架)A)优点:易用性好,扩展性强,侵入性弱。B )缺点:健壮性及安全性差。2 . Web应用中如何防止用户多次登录?在用户登录时,判断此用户是否已经在Application中存在,如果存在就报错,不存在的 话就加到Application中(Application是所有Session共有的,整个web应用程序唯一的 一个对象).页面之间的值传递方式:表单传参、URL传参、session传参、利用框架标签传参、application传参七. Hibernate1 .哪些情况不适合加载到Hibernate的二级缓存中,哪些情况适合?不适合的情况:经常被修改的数据;绝对不允许出现并发访问的数据;与其他应用共享的数据。适合的情况:数据更新频率低;允许偶尔出现并发问题的非重要数据;不会被并发访问的数据;常量数据;不会被第三方修改的数据。2 .在Hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没 有一个实体类与之对应,如何解决这个问题?解决方案一,按照t数据取出数据,然后自己组bean解决方案二,对每个表的bean写构造函数,比如表一要查出fieldl,field2两个字段,那么 有一个构造函数就是Bean(typelfiledl,type2field2),然后在hql里面就可以直接使用这 个 bean 了。3 .谈谈常见的数据库持久层框架,以及与JDBC的关系。(框架)A ) Hibernate 自动化,基于 O/RMapping 的 JDBC 框架B) MyBatis半自动的JDBC框架C)均构建在JDBC之上D )针对简单重复性的访问合适采用HibernateE )针对较为复杂的访问适合采用MyBatis或直接使用JDBC.JDBC , Hibernate分页怎样实现?方法分别为:1) Hibernate 的分页:Query query = session.createQuery("from Student");query.setFirstResult(firstResult); 设置每页开始的记录号 query.setMaxResults(resultNumber); 设置每页显示的记录数 Collection students = query.list();2) JDBC的分页:根据不同的数据库采用不同的sql分页语句例如:Oracle 中的 sql 语句为:"SELECT * FROM (SELECT a.*z rownum r FROMTB_STUDENT) WHERE r between 2 and 10M查询从记录号2到记录号10之间的所有记录4 . jdbc. hibernate, ibatis 的比较?jdbc:手动写sqldelete, insert, update要将对象的值一个一个取出传到sql中,不能直接传入一个对 象。select:返回的是一个resultset,要从ResultSet中一行一行、一个字段一个字段的取 出,然后封装到一个对象中,不直接返回一个对象。ibatis的特点:半自动化sql要手动写delete、insert、update:直接传入一个对象select:直接返回一个对象hibernate:全自动 不写sql,自动封装delete, insert, update:直接传入一个对象select:直接返回一个对象一.共同点:1 .都是0/R mapping框架,直接与数据库打交道。2 .都提供方言支持不同类型数据库的访问,通过xml文件格式将数据库表与java对象 连接起来。3 .都可以交给spring来管理.都是开源软件二区别:hibernate是当前流行的0/R框架,来自于,现在已成为HBOSS的一部分。 hibernate相对较复杂,学习周期长。ibatis/mybatis是另外一种优秀的o/r mapping框架,目前属于叩ache的一个子项 目了。ibatis上手快,很容易学学习。三机制使用ibatis提供的orm机制,对业务逻辑实现人员而言,面对的是纯粹的java对象。 这一层与通过hibernate实现orm而言基本一致,而对于具体的数据操作,hibernate会 自动生成sql语句,而ibatis则要求开发者编写具体的sql语句。相对hibernate而言, ibatis以sql开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。八Spring. Spring的loc和aop分别是用什么原理实现的?主要应用了 java的反射技术. spring的工作机制以及为什么要用?1 ) spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块 负责负责对请求进行真正的处理工作。2 ) DispatcherServlet 查询一个或多个 HandlerMapping,找至IJ处理请求的 Controller.3 ) DispatcherServlet 请请求提交到目标 Controller) Controller进行业务逻辑处理后,会返回一个ModelAndView4 ) Dispatcher查询一个或多个ViewRescdver视图解析器,找到ModelAndView对象指 定的视图对象6)视图对象负责渲染返回给客户端为什么用:AOP让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序 代码中。使用AOP后,公共服务(比如日志、持久性、事务等)就可以分解成方面并 应用到域对象上,同时不会增加域对象的对象模型的复杂性。IOC允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如 单词倒置所表明的,IOC就像反过来的JNDIO没有使用一堆抽象工厂、服务定位器、 单元素(singleton )和直接构造(straight construction ),每一个对象都是用其协作对象 构造的。因此是由容器管理协作对象(collaborator Spring即使一个AOP框架,也是一 IOC容器。Spring最好的地方是它有助于您替换对 象。有了 Spring ,只要用JavaBean属性和配置文件加入依赖性(协作对象然后可以 很容易地在需要时替换具有类似接口的协作对象。3 .如何实现国际化?国际化:不用修改代码,就适用于不同的语言国家本地化:如果要适应一个国家,要修改源代码实现过程:在struts-config.xml中用如下标签说明资源文件名,注意其只是文件名,没有语言一 国家<message-resources parameter="struts.ApplicationResources,' />在资源文件对应的目录struts中加入适应不同语言、国家的properties文件ApplicationResources_zh_CN.properties 中国ApplicationResources_en_US.properties us如果不是英语要转码native2ascii -encoding gb2312 源 ApplicationResources_zh_CN.properties 在jsp页面中用<bean:message key="7>取出信息4 . Spring 的 BeanFactory 与 Applicationcontext 区别?Applicationcontext和BeanFacotry相比才是供了更多的扩展功能,但其主要区别在于后 者是延迟加载,如果Bean的某一个属性 没有注入,BeanFacotry加载后,直至第一次使用 调用getBean方法才会抛出异常;而Applicationcontext则在初始化自身是检验,这样 有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContexto.说说你对用ssh框架进行开发的理解?框架:hibernate, spring、struts ;Hibernate主要用于数据持久化;Spring的控制反转能起到解耦合的作用;Struts主要用于流程控制。5 .请解释什么是MVC?(设计模式)A) M-Model封装业务数据及业务运算。B ) V-View封装用户界面。C ) C-Controller封装业务处理流程。6 . MVC的各个部分都有哪些技术来实现?如何实现?表示层struts持久层hibernate控制层spring也就是最常用的开发框架ssh7 .通过图,说说你对MVC模型的理解。(企业有可能让学生画图)?表示方法调用表示事件"1)首先是展示视图给用户,用户在这个视图上进行操作,并填写一些业务数据2)然后用户会点击提交按钮,来发出请求3)视图发出的用户请求会到达控制器,在请求中包含了想要完成什么样的业务功能以及相关 的数据。4)控制器会来处理用户请求,会把请求中的数据进行封装,然后选择并调用合适的模型,请 求模型进行状态更新,然后选择接下来要展示给用户的视图。5)模型会去处理用户请求的业务功能,同时进行模型状态的维护和更新6)当模型状态发生改变的时候,模型会通知相应的视图,告诉视图它的状态发生了改变。7)视图借到模型的通知后,会向模型进行状态查询,获取需要展示的数据,然后按照视图本 身的展示方式,把这些数据展示出来。8)接下来就是等待用户下一步操作,再次从头轮回了。6 .垃圾回收的优点和原理。并考虑2中回收机制。Java语言中一个显著的特点就是引入了垃圾回收机制,使C+程序员最头疼的内存管理的 问题迎刃而解,它使得JAVA程序员在编写程序的时候不再需要考虑内存管理。由于有个垃 圾回收机制,JAVA中的对象不再有"作用域"的概念,只有对象的引用才有“作用域"。 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一 个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用 的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所以对象进行垃圾 回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。7 .请说一下EJB规范,规定EJB中禁止操作都有什么?1 .不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等),.不能操作awt,2 .不能实现服务器功能,.不能对静态属生存取,3 .不能使用10操作直接存取文件系统,.不能加载本地库.,4 .不能将this作为变量和返回,.不能循环调用。8 .当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变 化后的结果,那么这里到底是值传递还是引用传递?( core java的掌握程度)java中的所有对象参数都是引用传递。只有primitive类型才是值传递。9 .谈一下你对输入输出流的理解?在java使用流的机制进行数据的传送,从文件到内存是输入流,从内存到文件是输出流, 输入流可以通过read读取,输出流以write或print写入,对于流可以是分为高层流和低 层流,低层以一个字节或字符为单位进行处理,高层流以一批数据为单位进行处理。FilelnputStream ( Sy stem, in )至 InputSteamReader 至 BufferReader OutputSteam(System.out) printstream FileReader 至 Buffered ReaderFileWriter 至 PrintWriter 或 bufferWriter分类:字节(二进制)F i I el n p u tSt rea m (低层输入流)FileOutputStream(低层输出流)Printstream(高层流)System.out.println()字符(一个char)FileReaderFileWriterJava语言提供了哪些API可以实现对文件的读写?在对大文件进行读取时因注意什么 问题?( JAVA I/O )A )随机访问文件,使用RandomAccessFileoB )流式访问文件,使用 FilelnputStream 和 File0utputStreamoC)对于大文件读取要根据情况采用缓冲的方式。10 .编写代码检查一个字符串是否为合法的EmaiL (Java正则表达式)使用正则表达式,例如:A_a-z0-9- + (/._a-z0-9-+)*a-z0-9-+(/.a-z0-9-+)*$.编写一段代码统计下面一句话中,各个字母出现的次数。(Java集合框架)Goodgoodstudydaydayup使用Map集合. Java中的异常处理机制的简单原理和应用,谈一下你的理解?当JAVA程序违反了 JAVA的语义规则时JAVA虚拟机就会将发生的错误表示为一个异常。 违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引 发 IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerExceptiono 另一 种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择 在何时用throw关键字引发异常。所有的异常都是java.Iang.Thowable的子类。11 .请跟我解释一下Jdo是什么?JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数 据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储 数据对象完全不需要额外的代码(如JDBC API的使用X这些繁琐的例行工作已经转移到 JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外, JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库 (ODBMS )等等,使得应用可移植性更强。12 .线程的四种状态都有什么?1 .新状态:线程已经被创建,但是还没有执行(start ()方法还没有被调用X.可执行状态:线程可以执行,虽然不一定执行。Cpu时间随时可能被分配给该线程,从而 使他执行。2 .死亡状态:正常情况下run ()返回使得线程死亡,调用stop ()或者destory ()会有 同样的效果,但是不被推荐,前者会产生异常,后者是强行终止,不会释放对象锁 4.阻塞状态:线程不会被分配cpu时间,无法执行。16 .请说出你所知道的线程同步的方法?wait。:使一个线程处于等待状态,并且释放所持有的对象的lock。sleep。:使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException 异常。notify。:唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒 某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是 让它们竞争。17 ,简述 synchronized fQjava.util.concurrent.locks.Lock 的异同?主要相同点:Lock能完成synchronized所实现的所有功能主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会 自动。释放锁,而Lock 一定要求程序员手工释放,并且必须在finally从句中释放。二.数据库.数据库要注意那些?命名的规范,数据的一致性和完整性,数据库性能调整,数据的清晰度和可查询性.索引的作用何在,如何使用索引?(数据库)A)提升查询效率B)对需要查询的列加索引C )索引和降低update的效率.索引的优缺点?创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。1 .建立方向索引的不利因素(缺点)?第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空 间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了 数据的维护速度。2 .哪些列不应该创建索引?第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很 少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降 低了系统的维护速度和增大了空间需求。第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少, 例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需 要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些 列的数据量要么相当大,要么取值很少。第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能 是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时, 会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。3 .什么是嵌入式数据库,相对于传统数据库的区别在哪里,举出所知道的嵌入式数据库或内 存数据库嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了 与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较 少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入 式运行模式允许嵌入式数据库通过SQL来轻松管理应用程序数据,而不依靠原始的文本文 件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。嵌入式数据库跟数据库服务器最大的区别在于它们运行的地址空间不同。通常,数据库服务 器独立地运行一个守护进程(daemon ),而嵌入式数据库与应用程序运行在同一个进程。4 .索引是怎样来提高搜索速度的?使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进 行排序的一种结构,例如employee表的姓(Ina me )列。如果要按姓查找特定职员,与 必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应 的指向表中物理标识这些值的数据页的逻辑指针清单。索引提供指向存储在表的指定列中的数据值的指针,然后根据你指定的排序顺序对这 些指针排序。数据库使用索引的方式与使用书籍中索引的方式很相似:它搜索索引以找到特 定值,然后顺指针找到该值的行。5 .触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区 别?事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常 事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。9 . exists和in的效率问题(数据库基础语法考)?在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行连接,这种情况 下,如果另一个表是小表的话,用in的效率要高,如果是大表的话,用exists的效率比较 |W)O.写出truncate和delate的区别。(数据库-Oracle )A)都可以删除数据库中的所有数据行。B ) Truncate效率高于delete ,但不可回滚。10 .写出Oracle和MySQL在分页查询时的不同。(数据库-Oracle , MySQL )A ) Oracle :使用rownum+子查询的方式。B) MySQL :使用limit关键字。三.JDBC/XML1 述你对 Statement,PreparedStatement,CallableStatement 的理解Statement:用于执行静态SQL语句并返回它所生成结果的对象,在执行时确定sql。PreparedStatement:表示预编译的SQL语句的对象。SQL语句被预编译并且存储在 PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句,可以传参数, 在得至IPreparedStatement对象时确定sqLCallableStatement:用于执行SQL存储过程的接口。如果有输出参数要注册说明是输出参 数。2 .什么事 SQL Injection ?如何避免?(JAVA JDBC )A )需要执行的SQL语句有一部分由用户的输入提供。B )用户提供恶意的输入从而改变SQL语句的意义。C)避免方式 采用SQL关键词过滤 或者使用预编译SQL的方式PrepareStatement。3 .写一个 Singleton 出来?class Singleton private static Singleton s;private Singleton()System.out.println("A Singleton Model example");public static Singleton getSigleton()if(s= = null)s=new SingletonQ;return s;) .什么是消息队列MQ消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列 存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行它们不需要知 道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。4 .什么是断点续传。HTTP协议是否支持断点下载和端点上传,实现原理。FTP (文件传输协议的简称)(File Transfer Protocol. FTP )客户端软件断点续传指的是 在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每 一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分 开始继续上传下载以后未上传下载的部分,而没有必要从头开始上传下载。用途可以节省时 间,提高速度。5 .XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?a:两种形式dtd schemab:本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展 schema的根本目的)c:有 DOM,SAX,STAX 等DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的, 这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对 XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要 一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会 触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的 顺序访问STAX:Streaming API for XML (StAX)xml文档有两种定义方法:dtd :数据类型定义(data type definition),用以描述XML文档的文档结构,是早期的 XML文档定义形式。schema :其本身是基于XML语言编写的,在类型和语法上的限定能力比dtd强,处理也 比较方便,因为此正逐渐代替dtd成为新的模式定义语言。6 .XSL和XSLT是什么XSL是指可扩展样式表语言(Extensible Stylesheet Language),是一种用于以可读格式 呈现XML数据的语言。XSLT是XSL中最重要的部分,XSLT是一种用于将XML文档转换任意文本的描述语言。四. Servlet/JSP1 . B/S的三层构架是什么?数据访问层、业务逻辑层和表示层.什么是 WebService ?Web Service是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可 以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任 何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务. 实际上,他的出现的最佳好处就是跨平台操作,不在局限于web编程语言的限制。2 .写出GET请求和POST请求在提交数据时的区别。(HTTP协议)A ) GET方式通过协议头地址信息提交,安全性差,提交数据量受到浏览器地址信息长 度的限制。如:IE为2千多个字符。B ) POST方式通过协议提交数据,安全性差,提交数据量比GET方式大的多。C)如果需要安全的提交,采用HTTPS协议.如何实现servlet的单线程模式?<%page isThreadSafe=" false" %>.不恰当使用Session ,对系统有哪些危害?( Servlet/JSP )A ) Session中不可存放安全级别高的数据。B ) Session中不可存放持久性数据。C ) Session中不可存放大量数据。3 .请解释下列工具(软件)的用途(开发环境)1 ) SVU版本管理工具2 ) ANT部署工具3 ) JUnit单元测试工具4 ) Apache Log4J 日志工具