java模拟器安卓版7.0编写was屏幕上输出6个100到200之间的随机正整数,要求每行输出两个

java工程师笔试面试题
1. J2EE 是什么?它包括哪些技术?
解答:从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的 J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。
主要包括以下这些技术:
1) Servlet
Servlet 是 Java 平台上的 CGI 技术。Servlet 在服务器端运行,动态地生成 Web 页面。与传统的 CGI和许多其它类似 CGI 的技术相比,Java Servlet 具有更高的效率并更容易使用。对于 Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
JSP(Java Server Page)是一种实现普通静态 HTML 和动态页面输出混合编码的技术。从这一点来看,非常类似 MicrosoftASP、PHP 等技术。借助形式上的内容和外观表现的分离,Web 页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP 来合成。在运行时态,JSP 将会被首先转换成 Servlet,并以 Servlet 的形态编译运行,因此它的效率和功能与 Servlet 相比没有差别,一样具有很高的效率。
EJB 定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。
JDBC(Java Database Connectivity , Java 数据库连接)API 是 一 个 标 准 SQL(Structured QueryLanguage,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准 Java API 编写数据库应用程序。JDBC API 主要用来连接数据库和直接调用 SQL 命令执行各种 SQL 语句。利用 JDBC API 可以执行一般的 SQL 语句、 动态 SQL 语句及带 IN 和 OUT 参数的存储过程。 Java 中的 JDBC 相当于 Microsoft平台中的
ODBC(Open DatabaseConnectivity)。
2.测试生命周期、测试过程分为几个阶段,以及各阶段的含义?
解答:软件测试生命周期一般包括 6 个阶段:1)计划 2)分析,3)设计,4)构建,5)测试周期,6)最后测试和实施,1) 计划:产品定义阶段2). 分析:外部文档阶段3). 设计:文档架构阶段4). 构建:单元测试阶段5). 测试周期:错误修正,重复系统测试阶段6). 最后的测试和实施:代码冻结阶段
4. 什么是 Web 容器?
解答:容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是这样的容器。
5. 运行时异常与一般异常有何异同?
解答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
9.试述数据库完整保护的主要任务和措施。
解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容:实体完整性规则,参照物完整性规则以及用户定义完整性规则。前两个是有 DBMS 自动处理。实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要求,主关键字和元组的唯一性对应。参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基表中必存在元组。用户定义完整性规则针对具体的数据环境由用户具体设置的规则,它反应了具体应用中的语义要求。一个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检查以及完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领域。
12. 类有哪三个基本特性?各特性的优点?
解答:类具有封装性、继承性和多态性。
封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。
继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成员。
多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。
13.谈谈对 XML 的理解?说明 Web 应用中 Web.xml 文件的作用?
解答:XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样,都是 SGML(Standard GeneralizedMarkup Language,标准通用标记语言)。Xml 是 Internet 环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但 XML 极其简单易于掌握和使用。web.xml的作用是配置欢迎页,servlet,filter,listener
14.jsp 有哪些内置对象?作用分别是什么?(至少三个)
解答:1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header 和 session 数据的有用的方法。
2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。
3) out 对象是javax.jsp.JspWriter 的一个实例,&&& 并提供了几个方法使你能用于向浏览器回送输出结果。
4) pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的servlet 相关功能的方法。
5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息。
6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息。
7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。
8)page 表示从该页面产生的一个servlet 实例。9)exception 针对错误网页,未捕捉的例外
15.事务是什么?有哪些属性,并简要说明这些属性的含义。
解答:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如 SQL,C++或 Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句(或函数调用)来界定。事务由事务开始(begintransaction)和事务结束(end transaction)之间执行的全体操作组成。事务应该具有 4 个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为 ACID
(atomicity)&&。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
&一致性(consistency)&&。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
&&& 隔离性(isolation)&&。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)&&。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
19、HashMap 和 Hashtable 的区别?
解答:HashMap 是 Hashtable 的轻量级实现(非线程安全的实现)&&&&&&& ,他们都实现了 Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上高于 Hashtable。HashMap 允许将 null 作为一个 entry 的 key 或者 value, Hashtable 不允许HashMap 把 Hashtable 的 contains方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解Hashtable继承自
Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。最大的不同是,Hastable 的方法是 synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要自己为s它的方法实现同步,而 HashMap 就必须为之提供同步。
20.请说出 ArrayList,Vector, LinkedList 的存储性能和特性
解答: ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
21. 描述 J2EE 框架的多层结构,并简要说明各层的作用。
解答:1)Presentation layer(表示层)a. 表示逻辑(生成界面代码)b. 接收请求 c. 处理业务层抛出的异常 d. 负责规则验证(数据格式,数据非空等)e. 流程控制
2) Service layer(服务层/业务层)a.封装业务逻辑处理,并且对外暴露接口b.负责事务,安全等服务
3) Persistence layer(持久层) a 封装数据访问的逻辑,暴露接口 b.提供方便的数据访问的方案(查询语言,API,映射机制等)
4)Domain layer(域层) a. 业务对象以及业务关系的表示b. 处理简单的业务逻辑c. 域层的对象可以穿越表示层,业务层,持久层软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。
23.简要描述如何结合 struts、hibernate、spring 开发 Web 应用?
解答:Struts 可以将 jsp 页面的表单关联起来,就是把 JSP 页面的表单数据封装成 javaBean,这样的话,在 action 中你再也不需要使用传统的 request.getParameter(&name&);还有 struts 有一个控制器,你在 struts 编程中的控制器(XxxAction)都是继承总的 ActionServlet,它能集中处理请求,然后转到相关的页面。还有 struts 的表单验证组件,不用你写 js 验证了,只需要你配置一下文件就可以了。另外 struts 的令牌机制可以防表单重复提交。
&Spring 是一个轻量级容器,非侵入性.包含依赖注入,AOP 等。它是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。
&&&&Hibernate:它可以让我们以 OO 的方式操作数据库,这让我们看到了 hibernate 的强大之处,体验到操作数据的方便。但 hibernate 最耀眼之处是 hibernate 的缓存机制,而不是以 OO 的方式操作数据库。Hibernate 的缓存机制不外乎是一级缓存 session,二级缓存 sessionFactory,和第三方缓存 如 ehcache 。 也就 是 hibernate 的 最 强大 的地 方 是 它的 缓存 , 理解了 这 个 才能 真正 的 理解hibernate,Hibernate
的命名查询/命名参数查询,&&& 就是将 hql 语句放在一个单独的 xml 文件之中,&&& 它仍然让人们以面向对象的方式去操纵数据,而不用在以 OO 的方式写着代码的同时,然后再转变思维,用面向关系的方式去写那些 sql 语句。但 hibernate不仅做了这些,它的native sql 查询方式,完
全满足 sql 语句的偏爱者,它像 ibatis 一样,将 sql 语句放在配置文件之中
27.列出自己常用的 jdk 包.
解答:JDK 常用的 package
java.lang:这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一个可以不用 import 就可以使用的 Package
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如 URL,URLConnection 等。
java.util : 这个是系统辅助类,特别是集合类 Collection,List,Map 等。
java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet 等
28.列出自己常用的 jdk 中的数据结构
解答:线性表,链表,哈希表是常用的数据结构。
32、abstract class 和 interface 有什么区别?
解答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是
public static final 的。一个类可以实现多个接口,当类实现接口时,必须实现接口的所有方法。抽象类在 Java 语言中表示的是一种单继承的关系,对于 interface 来说则不然,并不要求 interface 的实现者和 interface 定义在概念本质上是一致的,仅仅是实现了interface 定义的契约而已;抽象类中可以定义自己的成员变量,也可以包含非抽象的方法,而在接口中只能有静态的常量,所有方法必须是抽象的;实现抽象类时可以只实现其中的部分方法,而要是实现一个接口的话就必须实现这个接口中的所有抽象方法
35.JSP 页面之间传递参数的方法有哪些?
解答:& 1)request2)session 3)application 4)提交表单5)超链接
36.fowrard 和 redirect 的区别
1、转发与重定向的区别
&&&&&& 转发的地址必须是同一个应用内部的各个组件。重定向的地址没有限制。
2)能否共享request
&&&&&& 转发可以&重定向不行
3)浏览器地址栏的地址是否变化
&&&&&& 转发不变&& 重定向会变
4)事件是否处理完毕
&&&&&& 转发是一件事未做完& 重定向是一件事已经做完
forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,&&& 在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下比如,需要跳转到一个其它服务器上的资源,则必须使用
sendRedirect()方法。
37.Java 反射机制的作用?
解答:Java 反射机制的作用是:
1)在运行时判断任意一个对象所属的类。2)在运行时构造任意一个类的对象。3)在运行时判断任意一个类所具有的成员变量和方法。4)在运行时调用任意一个对象的方法
38.你是怎么理解 java 的泛型的?
解答: 在1.5 之前,没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
&&&& 泛型是 Java SE 1.5 的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
40.在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL 语句、java 等
1)数据库设计方面:
a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select idfrom t where num is null可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询:select id from t wherenum=0
c. 并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的 当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段 sex,male、female 几乎各一半,那么即使在 sex 上建了索引也对查询效率起不了作用。
d. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
3)java 方面:
a.尽可能的少造对象。b.合理摆正系统设计的位置。大量数据操作,和少量数据操作一定是分开的。大量的数据操作,肯定不是 ORM 框架搞定的。,
c.使用 jDBC 链接数据库操作数据d.控制好内存,让数据流起来,而不是全部读到内存再处理,而是边读取边处理;e.合理利用内存,有的数据要缓存
43.请写出一个超链接,点击链接后可以向 zhangsan@d-heaven.com 发送电子邮件。
&&&a href=”mailto: zhangsan@d-heaven.com”&发邮件&/a&
44.请说明 meta 标签的作用。
解答:meta 是用来在 HTML 文档中模拟 HTTP 协议的响应头报文。meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta 的属性有两种:name 和 http-equiv。name 属性主要用于描述网页,对应于 content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所索引擎都使用网上机器人自动查找 meta 值来给网页分类)&&&&&&&&&& 。这其中最重要的是 description(站点在搜索引擎上的描述)和 keywords(分类关键词)&&&
,所以应该给每页加一个 meta 值。比较常用的有以下几个:
1).<meta name=&Generator& contect=&&>用以说明生成工具(如 Microsoft FrontPage 4.0)
2).<meta name=&KEYWords& contect=&&>向搜索引擎说明你的网页的关键词;
3).<meta name=&DEscription& contect=&&>告诉搜索引擎你的站点的主要内容;
4).<meta name=&Author& contect=&你的姓名&>告诉搜索引擎你的站点的制作的作者;
5).<meta name=&Robots& contect= &all|none|index|noindex|follow|nofollow&>
&&& 其中的属性说明如下:
&&& 设定为 all:文件将被检索,且页面上的链接可以被查询;设定为 none:文件将不被检索,且页面上的链接不可以被查询; 设定为 index:文件将被检索;设定为follow:页面上的链接可以被查询;设定为 noindex:文件将不被检索,但页面上的链接可以被查询设定为 nofollow:文件将不被检索,页面上的链接可以被查询。
6).http-equiv 属性
&&& a、<meta http-equiv=&Content-Type&contect=&text/html&;charset=gbk&>
&&& 和 <meta http-equiv=&Content-Language&contect=&zh-CN&>用以说明主页制作所使用的文字以及语言;
&&& b、<metahttp-equiv=&Refresh& contect=&n;url=http://yourlink&>定时让网页在指定的时
间 n 内,跳转到页面//yourlink;
&&& c、<metahttp-equiv=&Expires& contect=&Mon,12 May :00 GMT&>可以用于设定网页的到期时间,一旦过期则必须到服务器上重新调用。需要注意的是必须使用 GMT 时间格式;
&&& d、<meta http-equiv=&Pragma&contect=&no-cache&>是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从 Cache 中再调出;
&&& e、<metahttp-equiv=&set-cookie& contect=&Mon,12 May :00GMT&>cookie 设定,如果网页过期,存盘的 cookie 将被删除。需要注意的也是必须使用 GMT 时间格式;
&&& f、<metahttp-equiv=&Pics-label& contect=&&>网页等级评定,在 IE 的 internet 选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过 meta 属性来设置的;
&&& g、<metahttp-equiv=&windows-Target& contect=&_top&>强制页面在当前窗口中以独立页面显示,可以防止自己的网页被别人当作一个frame 页调用;
&&& h、<metahttp-equiv=&Page-Enter&contect=&revealTrans(duration=10,transtion=
&&&50)&>和<metahttp-equiv=&Page-Exit& contect=&revealTrans(duration=20,transtion
&&&=6)&>设定进入和离开页面时的特殊效果,这个功能即 FrontPage 中的“格式/网页过渡”,不过所加的页面不能够是一个 frame 页面。
48.请写出一段 JavaScript 代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用户点击的是“确认”还是“取消”&&&&&&&&&&&&& 。
&&& &TITLE&click&/TITLE&
&&& &Script &
&&&&&&& function validateForm()
&&&&&&&&&&& if(confirm(&你确认提交这个表单么?&))
&&&&&&&&&&& {
&&&&&&& &&&&&&&&alert(“确定”);
&&&&&&&&&&& }else{
&&&&&&&&&& alert(“取消”);
&&& &/Script&
&&& &FORM NAME=&TEST&action=&FirstJS.htm&&
&&&&&&& &INPUT TYPE=&button&NAME=&SUB& VALUE=&提交&onClick=&JavaScript:validateForm()&&
&&& &/FORM&
51.JavaScript 能否操作 cookie 和 session?
解答:JavaScript 可以操作 cookie,但是不能操作 session
52.请写出如下正则表达式的含义;
com︱cn︱net
^http://www.d-heaven.com/$
^http://www.sina.com.cn/new/newid=\d+
解答:com︱cn︱net 表示匹配 com 或是 cn 或是 net 中一个
&&&&^http://www.d-heaven.com/$ 表示匹配:http://www.d-heaven.com/
&&&&&^http://www.sina.com.cn/new/newid=\d+
表示匹配http://www.sina.com.cn/new/newid=其后可以出现 1 到多个数字
53.请用正则表达式匹配出 QQ 号(假设 QQ 号码为 5—10 位)&&&&&&&&&& ;
解答: ^\d{5,10}$
54. String,&StringBuffer& StringBuilder 的区别。
解答:String 的长度是不可变的;StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer,如果最后需要 String,那么使用 StringBuffer 的 toString()方法;线程安全;
StringBuilder 是从 JDK 5 开始,为 StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
55.请写出 5 种常见到的 runtimeexception。
解答:NullPointerException:当操作一个空引用时会出现此错误。
NumberFormatException:数据格式转换出现问题时出现此异常。
ClassCastException:强制类型转换类型不匹配时出现此异常。
ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。ArithmeticException:数学运行错误时出现此异常
57.请写出一个单例模式。
解答:单例模式(Singletonpattern):确保一个类只有一个实例,并提供一个全局的访问点
public class EagerSingleton
private static final EagerSingletonm_instance =
new EagerSingleton();
* 私有的默认构造子
private EagerSingleton() { }
* 静态工厂方法
public static EagerSingleton getInstance()
58.在 java 中,List 是个接口,那实现 List 接口的类有哪些,有什么区别?
解答: ArrayList 是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,LinkedList 使用双向链表实现存储按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
64.Java 异常处理中,try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code会不会被执行,什么时候被执行,在 return 前还是后?
解答:会执行,在return 前执行。
66.Class.forName(String className)这个方法的作用
解答:通过类的全名获得该类的类对象
67.你认为在表上建立索引可以提高数据库系统的效率吗,为什么?
解答:不一定建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的 where 子句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
68.hibernate 中的 java 对象有几种状态,其相互关系如何(区别和相互转换)&&&&&&&&&&&&& 。
解答:在 Hibernate中,对象有三种状态:临时状态、持久状态和游离状态。
临时状态:当 new 一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被 jre 垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过 Session 的 save 或者SaveOrUpdate 把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象;
持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行 delete 操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)&&& 。
游离状态:当 Session进行了 Close、Clear 或者 evict 后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值 但是因为会话已经消失 对象不在持久化管理之内,&&&&&&& 所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。
69.对 hibernate 的延迟加载如何理解,在实际应用中,延迟加载与 session 关闭的矛盾是如何处理
解答:& 延迟加载就是并不是在读取的时候就把数据加载进来而是等到使用时再加载。那么 Hibernate是怎么知识用户在什么时候使用数据了呢?又是如何加载数据呢?其实很简单,它使用了代理机制。返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用 getter 方法时就会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。这种情况就叫做未初始化的关系。
延迟加载与 session 关闭的矛盾一般可以这样处理:
1)、关闭延迟加载特性。
操作起来比较简单,因为hibernate 的延迟加载特性是在 hbm 配置里面可控制的。 默认 lazy=&true&,具体配置可以查看一下相关文档,就不详细叙述了。但使用这个解决办法带来的隐患是十分大的。首先,出现 no session or session was closed 就证明了您已经在使用外键关联表,如果去掉延迟加载的话,则表示每次查询的开销都会变得十分的大,如果关联表越多,后果也可以想象得到。所以不建议使用这个方法解决。
2)、在 session 关闭之前把我们想要查询的数据先获取了。
首先需要了解一下session 什么时候关闭,也就是它的生命周期。通常情况下 hibernate 会在查询数据关闭 session,&& 而使用 getHibernateTemplate().get 方法查询后会延迟关闭的时间。 会在事务结束后才关闭。使用拦截器(Interceptor)或过滤器(Filter)控制 session。
spring 为解决 hibernate 这一特性提供的解决方案,可以有效的控制 session 生命周期。
70.什么是 AOP 和 OOP,IOC 和 DI 有什么不同?
1)面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。AOP 是 OOP 的延续,是 Aspect Oriented Programming 的缩写,意思是面向方面编程。 将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。AOP 就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中
2)控制反转 IOC(Inversion of Control) 控制指的就是程序相关类之间的依赖关系.传统观念设计中,通常由调用者来创建被调用者的实例, 在 Spring 里,创建被调用者的工作不再由调用者来完成,而是由 Spring 容器完成,依赖关系被反转了,称为控制反转,目的是为了获得更好的扩展性和良好的可维护性。依赖注入(Dependency injection)创建被调用者的工作由 Spring 容器完成,然后注入调用者,因此也称依赖注入。控制反转和依赖注入是同一个概念。
71.Struts1 中 actionform 和 action 属于 MVC 哪一层,为什么?
解答:actionform 和 action 属于 MVC 的 Model 层,Action 用来处理业务逻辑,actionform 保存用户表单数据以便于在不同页面间传递。而 MVC 中的 model 层就是业务逻辑层,该层用于实现具体的业务逻辑、状态维护及管理。
73.error 和 exception 有什么区别?
解答:error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。
74.Log4J 是 Apache 组织的开源一个开源项目,通过 Log4J,可以指定日志信息输出的目的地,如console、file 等。Log4J 采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。
解答:Log4J 分 为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别, 则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。
75.说出几个与 spring 同类型的开源框架,说出几个与 hibernate 同类型的开源框架,说出几个与struts 同类型的开源框架
1)与 spring 同类型的开源框架:JUIDE、EJB3.0、picoContainer
2)与 hibernate 同类型的开源框架 :ibatis,jdo,JPA
3)几个与 struts 同类型的开源框架:webwork,tapestry,JSF
76、Struts2 包含哪些标签?
&s:ahref=&&&&/s:a&-----超链接,类似于 html 里的&a&&/a&
&s:actionname=&&&&/s:action&-----执行一个 view 里面的一个 action
&s:actionerror/&-----如果 action 的 errors 有值那么显示出来
&s:actionmessage/&-----如果 action 的 message 有值那么显示出来
&s:append&&/s:append&-----添加一个值到 list,类似于 list.add();
&s:autocompleter&&/s:autocompleter&-----自动完成&s:combobox&标签的内容,这个是 ajax
&s:beanname=&&&&/s:bean&-----类似于 struts1.x 中的,JavaBean 的值
&s:checkbox&&/s:checkbox&-----复选框
&s:checkboxlistlist=&&&&/s:checkboxlist&-----多选框
&s:comboboxlist=&&&&/s:combobox&-----下拉框
&s:component&&/s:component&-----图像符号
&s:date/&-----获取日期格式
&s:datetimepicker&&/s:datetimepicker&-----日期输入框
&s:debug&&/s:debug&-----显示错误信息
&s:div&&/s:div&-----表示一个块,类似于 html 的&div&&/div&
&s:doubleselect list=&&doubleName=&& doubleList=&&&&/s:doubleselect&-----双下拉框
&s:if test=&&&&/s:if&
&s:elseiftest=&&&&/s:elseif&
&s:else&&/s:else&-----这 3 个标签一起使用,表示条件判断
&s:fielderror&&/s:fielderror&-----显示文件错误信息
&s:file&&/s:file&-----文件上传
&s:formaction=&&&&/s:form&-----获取相应 form 的值
&s:generator separator=&&val=&&&&/s:generator&----和&s:iterator&标签一起使用
&s:head/&-----在&head&&/head&里使用,表示头文件结束
&s:hidden&&/s:hidden&-----隐藏值
&s:i18nname=&&&&/s:i18n&-----加载资源包到值堆栈
&s:includevalue=&&&&/s:include&-----包含一个输出,servlet 或 jsp 页面
&s:inputtransferselectlist=&&&&/s:inputtransferselect&-----获取 form 的一个输入
&s:iterator&&/s:iterator&-----用于遍历集合
&s:label&&/s:label&-----只读的标签
&s:merge&&/s:merge&-----合并遍历集合出来的值
&s:optgroup&&/s:optgroup&-----获取标签组
&s:optiontransferselect&&&&&&&&&&&&&&&&&&&&& doubleList=&&&&&&&&&&&&&&&&& list=&&
doubleName=&&&&/s:optiontransferselect&-----左右选择框
&s:param&&/s:param&-----为其他标签提供参数
&s:password&&/s:password&-----密码输入框
&s:property/&-----得到'value'的属性
&s:pushvalue=&&&&/s:push&-----value 的值 push 到栈中,从而使 property 标签的能够获取 value
&s:radiolist=&&&&/s:radio&-----单选按钮
&s:reset&&/s:reset&-----重置按钮
&s:selectlist=&&&&/s:select&-----单选框
&s:setname=&&&&/s:set&-----赋予变量一个特定范围内的值
&s:sortcomparator=&&&&/s:sort&-----通过属性给 list 分类
&s:submit&&/s:submit&-----提交按钮
&s:subset&&/s:subset&-----为遍历集合输出子集
&s:tabbedPanelid=&&&&/s:tabbedPanel&-----表格框
&s:table&&/s:table&-----表格
&s:textname=&&&&/s:text&-----I18n 文本信息
&s:textarea&&/s:textarea&-----文本域输入框
&s:textfield&&/s:textfield&-----文本输入框
&s:token&&/s:token&-----拦截器
&s:tree&&/s:tree&-----树
&s:treenodelabel=&&&&/s:treenode&-----树的结构
&s:updownselectlist=&&&&/s:updownselect&-----多选择框
&s:url&&/s:url&-----创建 url
77、struts2 中,OGNL 访问值栈的时候查找的顺序是什么?请排序:模型对象、临时对象、固定名称的对象、Action 对象
解答:struts2 的值栈排列顺序为:1).临时对象;2).模型对象;3).Action 对象;4).固定名称对象(如#application, #session,#request 等对象)&&&&&
78、struts2 中,Action 通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的?
解答:1)可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范 set和 get 方法)获取页面表单数据。
2)会把处理好的数据成员放入值栈中,到页面可以使用 struts2 标签取值就可以了。
79.常用的设计模式有哪些?说明工厂模式。
解答:Java 中的 23 种设计模式:
Factory(工厂模式) Builder(建造模式),Factory Method(工厂方法模式),
Prototype(原始模型模式)&&&&&& ,Singleton(单例模式),Facade(门面模式)&&&&& ,
Adapter(适配器模式)&&&&& ,Bridge(桥梁模式),Composite(合成模式)&&&&&&& ,
Decorator(装饰模式)&&&& ,Flyweight(享元模式)&&&&& ,Proxy(代理模式)& ,
Command(命令模式)&&&& ,Interpreter(解释器模式)&&&&&& ,Visitor(访问者模式) ,
Iterator(迭代子模式)&&&&& ,Mediator(调停者模式)&&&&&& ,Memento(备忘录模式) ,
Observer(观察者模式)&&&&& ,State(状态模式)&&&&& ,Strategy(策略模式)& ,
Template Method(模板方法模式) Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
80.什么是数据库的参照完整性?
解答:数据库的参照完整性是指表与表之间的一种对应关系,通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现。有对应参照完整性的两张表格,在对他们进行数据插入、更新、删除的过程中,系统都会将被修改表格与另一张对应表格进行对照,从而阻止一些不正确的数据的操作。
81.如何优化数据库,如何提高数据库的性能?
1)硬件调整性能
最有可能影响性能的是磁盘和网络吞吐量,解决办法扩大虚拟内存,并保证有足够可以扩充的空间;
把数据库服务器上的不必要服务关闭掉;把数据库服务器和主域服务器分开;把 SQL 数据库服务器的
吞吐量调为最大;在具有一个以上处理器的机器上运行 SQL。
2)调整数据库
若对该表的查询频率比较高,则建立索引;建立索引时,想尽对该表的所有查询搜索操作,&&&&&&&&&&&&&& 按照
where 选择条件建立索引,尽量为整型键建立为有且只有一个簇集索引,数据在物理上按顺序在数据
页上,缩短查找范围,为在查询经常使用的全部列建立非簇集索引,能最大地覆盖查询;但是索引不
可太多,执行 UPDATEDELETE INSERT 语句需要用于维护这些索引的开销量急剧增加;避免在索引中
有太多的索引键;避免使用大型数据类型的列为索引;保证每个索引键值有少数行。
3)使用存储过程
应用程序的实现过程中,能够采用存储过程实现的对数据库的操作尽量通过存储过程来实现,因为存
储过程是存放在数据库服务器上的一次性被设计、编码、测试,并被再次使用,需要执行该任务的应
用可以简单地执行存储过程,并且只返回结果集或者数值,这样不仅可以使程序模块化,同时提高响
应速度,减少网络流量,并且通过输入参数接受输入,使得在应用中完成逻辑的一致性实现。
4)应用程序结构和算法
建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使用。因为人们在使用 SQL 时往往会陷入一个误区,即太关注于所得的结果是否正确,特别是对数据量不是特别大的数据库操作时,是否建立索引和使用索引的好坏对程序的响应速度并不大,因此程序员在书写程序时就忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在数据量特别大时或者大型的或是复杂的数据库环境中(如联机事务处理 OLTP 或决策支持系统 DSS)中表现得尤为明显。在工作实践中发现,不良的 SQL 往往来自于不恰当的索引设计、不充份的连接条件和不可优化的
where 子句。在对它们进行适当的优化后,其运行速度有了明显地提高!
82.JS 中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
解答:alert&&&&& confirm&&prompt
83.描述 JSP 和 Servlet 的区别、共同点、各自应用的范围
解答:JSP 在本质上就是 SERVLET,但是两者的创建方式不一样.Servlet 完全是 JAVA 程序代码构成,擅长于流程控制和事务处理,通过 Servlet 来生成动态网页很不直观.JSP 由 HTML 代码和 JSP 标签构成,可以方便地编写动态网页.因此在实际应用中采用 Servlet 来控制业务流程,而采用 JSP 来生成动态网页.
84.在 java 语言中 int 和&&&&&& Integer 有什么区别
解答:int 是基本数据类型,Integer 是 int 的包装类,属于引用类型
85.如何获得&div id=”div1”&This isfirst layer&/div&中的值?
解答:&script&
&&var div1=Document.getElementById(“div1”);
&&alert(div1.innerHTML)
86.JDK1.5 中支持的 for 循环的语法
解答:for(typeelement : array) {
&System.out.println(element)
type 集合(不仅仅指Collection,也包含普通的数组)中元素的数据类型
element遍历到& 的元素array 集合对象本身(当然不只是 Collection)
87.简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
解答:主要相同点:Lock 能完成 synchronized 所实现的所有功能
主要不同点Lock 有比 synchronized 更精确的线程语义和更好的性能。&&&&&&&&&&&&& synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放
88.如何格式化日期
Date now=new Date();
SimpleDateFormat sdf=newSimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
String formatNow=sdf.format(now);
变量 formatNow 就是格式化好的日期。
89.将字符“12345”转换成 long 型
解答: Strings=&12345&;
&longnum=Long.valueOf(s).longValue();
90.struts 中如何实现国际化,涉及哪些文件?
解答:“国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同而显示不同的用户界面。 Struts 框架通过使用&bean:message&标记以及使用 java.util 数据包中定义的 Locale 和 ResourceBundle 类来支持国际化。java.text.MessageFormat 类定义的技术可以支持消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。会涉及到资源文件,不需了解这些类的细节就可进行国际化和设置消息的格式。会涉及到资源文件,struts-config.xml
配置文件,web.xml 配置文件。
91.例举在诊断 Oracle 性能问题时,常用的工具、方法
1)简单一点的可以用 toad 及 dbartisan 这样的工具。
2)纯做性能监测,比较出色的有 spolight 和 emc 的 I3,这两个软件都比较贵。
3)一些网管系统这方面也不错,如 hp 的 openview。不过定制起来不太容易,且很贵。
4)不用花钱又好用的就是 Oracle 的 statpack 了。
5)再有就是自己写脚本了,大多数有经验的 DBA 都喜欢这样的方式。优点是实用灵活。缺点是如果想出一个性能变化的曲线图等图表,且做的美观就需要些 delphi,c++builder 或是 pb 的开发功底了。
92.Oracle 启动中,startup nomount、 startup mount 有什么差别?
解答:startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪文件和报警文件。startup mount:装载数据库,打开控制文件。nomount 方式下还没有读取控制文件,该选项用于在数据库的控制文件全部损坏,需要重新创建数据库控制文件或创建一个新的数据库时使用。mount 选项下并没有打开数据文件,该选项可以用来修改数据库的运行模式或进行数据库恢复。
93.Oracle 启动中,spfile.ora、init&SID&.ora、spfile&SID&.ora 这三个文件正确的先后顺序是
解答:启动数据库,使用startup 命令,Oralce 将会按照以下顺序在缺省目录中搜索参数文件:spfile&SID&.ora, spfile.ora ,init&SID&.ora a
94.说明 Oracle 数据库逻辑备份和物理备份的方式。
解答:Oracle 备份包括逻辑备份和物理备份。
1).逻辑备份
数据库的逻辑备份包含读一个数据库记录集和将记录集写入文件。
a.输出(Export)输出可以是整个数据库、指定用户或指定表。
b.输入(Import)输入将输出建立的二进制转储文件读入并执行其命令。
2).物理备份
物理备份包含拷贝构成数据库的文件而不管其逻辑内容。
Oracle 支持两种不同类型的物理文件备份脱机备份&&& (offline backup)和联机备份(online b。a.脱机备份: 脱机备份用在当数据库已正常关闭,数据库处于&offline&时,要备份下列文件:所有数据文件所有控制文件所有联机日志init.ora(可选的)
b 联机备份:联机备份可用来备份任何运作在ARCHIVELOG 方式下的数据库。在这种方式下,联机日志被归档,在数据库内部建立一个所有作业的完整记录。联机备份过程具备强有力的功能。第一,提供了完全的时间点(point-in-time)恢复。第二,在文件系统备份时允许数据库保持打开状态。
102、查看下面的代码,写出可以使程序正常执行的修改方法
1.public class MyClass {
2.static String s1;
3. String s2;
4. public static void main(String args[]) {
5.&&&&&&String s3;
6.&&&&&&System.out.println(&s1 =& + s1);
7.&&&&&&System.out.println(&s2 =& + s2);
8.&&&&&&System.out.println(&s3 =& + s3);
解答:删除第 8 行或者将第 6 行改为 String s3 = &&;
103、为了显示 myStr = 23 这样的结果,写出在控制台输入的命令
&public class MyClass {
&&&&public static void main(String args[]) {
&&&&&&&&String s1 = args[0];
&&&&&&&&String s2 = args[1];
&&&&&&&&String myStr = args[2];
&&&&&&&&System.out.printin(&myStr =& + s2 + myStr);
解答:javaMyClass 1 2 3 4
104、写出下面代码的执行结果
public class MyClass {
&&&&static void aMethod(StringBuffer sf1, StringBuffer sf2) {
&&&&&&&&sf1.append(sf2);
&&&&&&&&sf2 = sf1;
&&&&public static void main(String[] args){
&&&&&&&&StringBuffer sf1 = new StringBuffer(&A&);
&&&&&&&&StringBuffer sf2 = new StringBuffer(&B&);
&&&&&&&&aMethod(sf1,sf2);
&&&&&&&&System.out .println(sf1+ &:&+sf2);
解答:AB:B
105、第 3 行中生成的 object 在第几行执行后成为 garbage collection 的对象?
1.public class MyClass {
2. public StringBuffer aMethod() {
3.&&&&&&StringBuffer sf = new StringBuffer(&Hello&);
4.&&&&&&StringBuffer[] sf_arr = new StringBuffer[1];
5.&&&&&&sf_arr[0] =
6.&&&&&&sf =
7.&&&&&&sf_arr[0] =
解答:第 7 行
106、写出执行下面的代码后的结果
&&public class MyClass {
&&&&public static void main(String args[]) {
&&&&&&&&java.util.Vector v1 = new java.util.Vector();
&&&&&&&&v1.addElement(&Hello&);
&&&&&&&&v1.addElement(new Float(3.14f));
&&&&&&&&v1.addElement(10);
&&&&&&&&System.out.println(v1.elementAt(0) + &:& + v1.elementAt(1) +&:&+ v1.elementAt(2));
解答:Hello :3.14 : 10
107、写出执行下面代码后的正确结果
interface MyDB {
public void getConnection();
class MyDBDriver implements MyDB {
&&&&&&&&public void getConnection() {
&&&&&&&&&&&System.out.println(&getConnection()&);
public class MyClass {
&&&&&&&public static void aMethod(MyDB db) {
&&&&&&&&&&&db.getConnection();
&&&&&&&public static void main(String args[]) {
&&&&&&&&&&&MyDBDriver db_driver = new MyDBDriver();
&&&&&&&&&&&aMethod(db_driver);
解答:getConnection()
108、下列程序运行的结果是
&class A {
&&&class Dog {
&&&&&&&private S
&&&&&&&Dog(String s, int a) {
&&&&&&&&&&&name =
&&&&&&&&&&&age =
&&&&&&&&&&&step = 0;
&&&&&&&public void run(Dog fast) {
&&&&&&&&&&&fast.step++;
&&&public static void main(String args[]) {
&&&&&&&A a = new A();
&&&&&&&Dog d = a.new Dog(&Tom&, 3);
&&&&&&&d.step = 25;
&&&&&&&d.run(d);
&&&&&&&System.out.println(d.step);
109、请看下列程序,运行结果是
class Super{
void print(){
System.out.print(i);
public class Sub extends Super{
void print(){
System.out.print(j);
public static void main(String[] args){
System.out.print(new Sub().j);
解答:03040
110、getSomething ()执行时发生 IllegalArgumentException 会出现什么样的结果?
&&&void makeConnection(String url) {
&&&&&&&try {
&&&&&&&&&&&getSomething();
&&&&&&&}catch(NullPointerException e) {
&&&&&&&&&&&System.out.printin(&Invalid URL&) ;
&&&&&&&&&&&
&&&&&&&}catch(Exception e) {
&&&&&&&&&&&System.out.println(&Exception&);
解答:Exception
111.Tomcat 服务器的默认端口是多少?怎样修改 tomcat 的端口?
解答:默认端口为 8080,可以通过 service.xml 的 Connector 元素的 port 属性来修改端口。
112.多线程有几种实现方法,都是什么?同步的方法有几种,都是什么?
解答:多线程有两种实现方法:继承 Thread 类或者实现 Runnable 接口。
实现同步也有两种方法:一种是同步方法,另一种是同步代码块。
同步方法是在方法返回类型前面加上 synchronized 关键字
同步代码块是synchronized (这里写需要同步的对象){...}
113.谈一下聚簇索引和非聚簇索引的区别以及各自的优缺点。
聚集索引,表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的
影响比较大
非聚集索引,不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很小
114. 死锁的必要条件?怎么克服?
解答:产生死锁的四个必要条件:
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁的解决方法:a 撤消陷于死锁的全部进程 b 逐个撤消陷于死锁的进程,直到死锁不存在;c 从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。 d 从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态
115.描述重做与回滚的认识;
解答:重做日志生成日志文件,是为将来恢复数据库使用的.
回滚段保存未提交数据,是为支持事务而起作用的。
116.索引组织表,聚蔟表的用途;
索引组织表:数据按主码存储和排序,同索引结构一样,不过数据直接存储于主码后面。适用于信息.检索、空间和 OLAP 程序。索引组织表的适用情况:
a.代码查找表。b.经常通过主码访问的表。c.构建自己的索引结构。d.加强数据的共同定位,要数据按特定顺序物理存储。e.经常用 between,,and,,对主码或唯一码进行查询。数据物理上分类查询。如一张订单表,按日期装载数据,想查单个客户不同时期的订货和统计情况。
索引聚簇表:索引聚簇表是表相关的表共享同一数据块中的相同列,并把相关数据存储中同一个数据块上。创建索引聚簇表中最重要的是对 SIZE 参数有很好的估量,否则聚簇将会降低空间利用,降低效率。
使用索引聚簇表的注意点:
a 如果表中数据有大量 DML 操作的话,那么聚簇将不适用,因为会消极地影响到 DML 性能。b 聚簇中,全表扫描将受到影响。这是因为将扫描聚簇中不同表的数据,额外增加很多无用的数据。c 如果经常 TRUNCATE 表和装载表的话,聚簇将不适用。聚簇中的表无法被 TRUNCATE 的,这是因为每个块中不只是存储一张表的数据。
truncate table empERROR at line 1:
ORA-03292: Table to be truncated is part ofa cluster
d 如果大部分是读取操作,且通过聚簇码索引或聚簇表中其他索引来读取的话,聚簇将会比较适用。
117.消耗资源的 SQL 的定位方法;
解答:selectsql_text
from v$sql
where disk_reads & 1000 or (executions& 0 and buffer_gets/executions & 30000);
SELECT * FROM (
SELECT sql_text,buffer_gets,disk_reads FROMv$sql
ORDER BY buffer_gets,disk_reads DESC)
WHERE ROWNUM&=10;
118.对触发器的认识;
解答:触发器是表上的程序,主要提供数据添加、修改与删除后的程序处理方法,可以用来检查数据及进行数据更新,也可以分担一些前端应用程序撰写的逻辑规则。用场景: 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。触发器的主要应用场合概括起来讲有以下几种:1).当向一张表中添加或删除记录时,需要在相关表中进行同步操作。比如,当为应用系统添加一个系统用户时,需要同时向权限表中添加该用户的缺省权限,此时就编写系统用户表的触发器在添加记录动作时触发。
&&&2).当表上某列数据的值与其他表中的数据有联系时。比如,当某客户进行欠款消费,可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。
&&&3).当需要对某张表进行跟踪时。比如,当人事表中有人离职时,第一时间通知或更改相关表的值。
119.对 ORA-01555 错误的认识;
解 答: ORA-01555 错 误 产 生 的 原 因 : 一 致 性 读 (Consistent Get) 和 延 迟 块 清 除 (Delayed Block
Cleanout)。
120.将 ORACLE 数据库更改为归档模式;写出步骤
解答:具体步骤如下:
1),以 exp 方式在线备份数据库到指定位置;2),观察当前数据库是以服务器参数文件(spfile)方式启动还是以参数文件(pfile)方式启动:SQL& s
NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&TYPE
----------------------------------------------- ------------------------------
spfile&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&string&&&&&& /ho
me/db/oracle/10g/dbs/spfile
&&&&&&&&&&XXXX.oravalue 后有内容,说明数据库以服务器参数文件方式启动,这里的 spfile 文件对应的裸设备为/dev/vgdata/rspfile(通过查看/home/db/oracle/10g/dbs/initSID.ora 文件内容获得)&&&&&&&&& ;
3),关闭所有实例(shutdown immediate)&&&&&&& ;
4),任意选取一个实例,创建参数文件到指定路径:
SQL&createpfile='/home/db/oracle/pfile.ora'
5),修改 pfile.ora 文件,添加参数 cluster_database=false;
6),以修改之后的参数文件按 nomount 方式启动数据库:
SQL&startup nomountpfile='/home/db/oracle/pfile.ora';
7),使数据库以 exclusive 方式启动:
SQL&alter data
8),改变归档模式:
9),将 pfile 参数中的 cluster_database 重新更改为“true”;
10),更新服务器参数文件:
SQL&create spfile frompfile='/home/db/oracle/pfile.ora';
11),关闭数据库实例;
12),分别在两个节点上启动数据库:
13),在两个节点上分别检查归档模式是否更改成功:
Database log mode&&&&&&&&&&&&&&&&&&&&&&&&&& Archive Mode
Automatic archival&&&&&&&&&&&&&&&&&&&&&&&& Enabled
Archive destination&&&&&&&&&&&&&&&&&&&&&&/home/db/oracle/10g/dbs/arch
Oldest online log sequence&&&&&&&& 489
Next log sequence to archive&&&& 491
Current log sequence&&&&&&&&&&&&&&&&&&&& 491
121.把表 A 从表空间 TSP1 更改成表空间 TSP2 的方法
解答:alter tableA move tablespace TSP2
122.删除表的列;
解答:alert table表名 drop 列名
123.删除表空间的数据文件?
解答:用 SQLPLUS 命令: drop&&&&&&&& tablespace&&& tablename&&&including&&& contents
就可以把所有相关的数据删除
124.如何用 ALTER 命令把表数据加到缓存表里,清除呢?
解答:添加:alerttable 表名 cache
&&&&&清除:alert table表名 nocache
125.数据的复制实现办法?
解答:数据复制,就是将数据库中的数据拷贝到另外一个或多个不同的物理站点上,从而保持源数据
库与目标数据库中指定数据的一致性。
数据复制的实现方法:在具体的实现之前,首先要做好设计与规划。这就需要细致分析具体的业务情
况,设计出一套能够满足业务需要的方案。通常在设计过程中,需要确定出要建立的数据库站点,各
站点的类型,需要复制的数据对象,以及同步方式、冲突解决方案等内容。
数据复制的实现主要包括以下几步:(1)创建复制站点。(2)创建组对象。(3)配置冲突解决方案。
126.建立 ORACLE 数据库后,系统自带的两个用户是什么,相应的密码是什么?他们的身份是什么?
解答: 用户&&&&&&& 密码&&&&&&&&&&&& 身份
System&&manager&&&&&& SYSDBA
Sys&&change_on_instal&&& SYSDPER
127.在建立 ORACLE 数据库时,选择“事务处理”模板与选用“数据仓库”模板的
区别是什么?
解答:事物处理型:经常反馈给客户信息,处理大容量或超大容量的数据.
&&&&&&&&数据仓库型:主要频繁处理小型数据库,只是进行一些查询等操作.
128、在使用 OMS 之前需要建立资料档案库。在建立资料档案库的时候,在“为资料档案库选择数据
库”选项卡中输入的服务名称应该如何写。&&&&&& (比如你要连接 192.168.1.2 机器上的 SIST 数据库)。
解答:192.168.1.2:1521:SIST
129、登陆 OMS 所使用的用户名和密码分别为什么?如果在登陆时,系统提示找不到服务,你应该如
解答:用户名:SYSMAN,
&&&&&密码:OEM_TEMP
问题出现在服务器没有启动,只能通过手动的方法在 Windows 管理工具下的策略中将服务器启动。
130、请说出两种以上扩大数据库的方式
解答 1) 修改现有表空间的大小;
&&&&2)向表空间插入一个新的数据文件.
131 在 ORACLE 中的物理文件包含哪四种?
解答:1)数据文件 扩展名为*.dbf
&&&&&2)控制文件 扩展名为*.rtl
&&&&&3)配置文件 扩展名为*.ora
&&&&&4)日志文件 扩展名为*.dbf
132. 日志文件(记录文件)有哪几种,分别介绍他们的工作模式。
解答: 归档日志:当日志写满,完成一次循环之前建立一个副本。这样数据库就可以在损坏中得到恢
复。恢复的过程相当于把建库的所有动作重新做一次。最安全的数据库工作方式,占用空间也最大
非归档日志:日志写满后,直接覆盖,它只是部分地记录数据库操作,所以恢复能力有限。
133、简要写出在 system 方案中建立序列 xl 的步骤。
create squence system.xl
start whith 1
increment by 1
minvalue 1
nomaxvalue
134、写出 SQL 语句,向表中插入一条记录,其中 ID 字段的值来自序列 XL。
Insert into system.table1 values(xl.nextval,’tom’,21,’男’,2000);
135、写出一个匿名的 SQL 程序块,&&&&&&&&&& 完成如下任务:&&&&& 向表中插入 3000 条记录, salary 字段中有 500
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&在
条记录的值为
条记录的值为
条记录的值为
条记录的值为 1800
Id 字段的值来自序列 xl,其他字段的值任意.
x number:=0;
for x in 1..3000 loop
If(x&=500) then
Insert into system.testvalues(x1.nextval,'jim',24,'m',1000);
elsif((x&500)and (x&1001)) then
Insert into system.testvalues(system.xl1.nextval,'jim',24,'m',1200);
Elsif((x&1000)and (x&2001)) then
Insert into system.testvalues(system.xl1.nextval,'jim',24,'m',1500);
Insert into system.testvalues(system.xl1.nextval,'jim',24,'m',1800);
136、写出一个存储过程,这个存储过程的作用是修改特定 id 编号的记录,将该条记录的salary 字
段的值加上 500;
Create or replace proceduresystem.update_age
(vid in number) is
Update table1 set salary=salary+500 whereid=
137、用 SQL 语句创建个一个视图,这个视图用来显示 ID&1000 的记录;
解答:create viewst as select * from table1 where id&1000;
138、创建一个 system 方案中的函数 fn1,函数作用为:将指定 ID 号的记录中的 salary 字段值乘以
Create or replace functionsystem.fn1(salary1 system.table1 salary &type)
Return number as
V1 numbre:=1.05;
V2=v1*salary1;
Return v2;
139.解释冷备份和热备份的不同点以及各自的优点
解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库
关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用
并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由
于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& (因为不必将 archive
log 写入硬盘)
140. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?
解答:重建控制文件,用带backup control file 子句的 recover 命令恢复数据库。
141. 如何转换 init.ora 到 spfile?
解答:使用 createspfile from pfile 命令
142. 解释 data block , extent 和 segment 的区别(这里建议用英文术语)
解答:data block 是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连
续的 data block 就组成了 extent . 一个数据库对象拥有的所有 extents 被称为该对象的 segment.
143. 给出两个检查表结构的方法
解答:1、DESCRIBE 命令
2、DBMS_METADATA.GET_DDL 包
144. 怎样查看数据库引擎的报错
解答:alert log.
145. 使用索引的理由
解答:快速访问表中的data block
146. 给出在 STAR SCHEMA 中的两种表及它们分别含有的数据
解答:Fact tables和 dimensiontables. fact table 包含大量的主要的信息而 dimension tables
存放对 fact table某些属性描述的信息
147. FACT Table 上需要建立何种索引?
解答:位图索引(bitmapindex)
148. 给出两种相关约束?
解答:主键和外键
149. 如何在不影响子表的前提下,重建一个母表
解答:子表的外键强制失效,重建母表,激活外键
150. 如何建立一个备份控制文件?
解答:Alterdatabase backup control file to trace.
151. 给出数据库正常启动所经历的几种状态 ?
STARTUP NOMOUNT – 数据库实例启动
STARTUP MOUNT - 数据库装载
STARTUP OPEN –数据库打开
152. 哪个 column 可以用来区别 V$视图和 GV$视图?
解答: INST_ID 指明集群环境中具体的某个 instance 。
153. 如何生成 explain plan?
运行utlxplan.sql. 建立 plan 表针对特定 SQL 语句,&&&&&& 使用 explain plan set statement_id = 'tst1'
into plan_table 运行 utlxplp.sql 或 utlxpls.sql 察看 explain plan
154. 如何增加 buffer cache 的命中率?
解答:在数据库较繁忙时,适用buffer cache advisory 工具,查询 v$db_cache_advice . 如果有
必要更改,可以使用alter system set db_cache_size 命令
155. 解释$ORACLE_HOME 和$ORACLE_BASE 的区别?
解答:ORACLE_BASE是 oracle 的根目录,ORACLE_HOME 是 oracle 产品的目录
156. 如何判断数据库的时区?
解答:SELECTDBTIMEZONE FROM&&&&&& DUAL
157. 解释 GLOBAL_NAMES 设为 TRUE 的用途
解答:GLOBAL_NAMES指明连接数据库的方式。如果这个参数设置为 TRUE,在建立数据库链接时就必须
用相同的名字连结远程数据库
158.如何加密 PL/SQL 程序?
解答:WRAP
159. 解释 TABLE Function 的用途
解答:TABLEFunction 是通过 PL/SQL 逻辑返回一组纪录,用于普通的表/视图。他们也用于 pipeline
和 ETL(ETL, Extraction-Transformation-Loading 的缩写,中文名称为数据提取、&&&&&&& 转换和加载)过程。
160. 举出 3 种可以收集 threeadvisory statistics
解答:BufferCache Advice, Segment Level Statistics, Timed Statistics
161. Audit trace 存放在哪个 oracle 目录结构中?
解答:unix$ORACLE_HOME/rdbms/audit
Windows the event viewer
162. 解释 materialized views 的作用
解答:Materializedviews 用于减少那些汇总,集合和分组的信息的集合数量。它们通常适合于数
据仓库和 DSS 系统
163. 当用户进程出错,哪个后台进程负责清理它
解答: PMON
164. 哪个后台进程刷新 materialized views?
解答:The JobQueue Processes.
165. 如何判断哪个 session 正在连结以及它们等待的资源?
解答:V$SESSION /V$SESSION_WAIT
166. 描述什么是 redo logs
解答:Redo Logs 是用于存放数据库数据改动状况的物理和逻辑结构。可以用来修复数据库
167. 如何进行强制 LOG SWITCH?
解答:ALTERSYSTEM SWITCH LOGFILE;
168. 举出两个判断 DDL 改动的方法?
解答:你可以使用Logminer 或 Streams
169. Coalescing 做了什么?
解答:Coalescing 针对于字典管理的 tablespace 进行碎片整理,将临近的小 extents 合并成单个的
大 extent.
170. TEMPORARY tablespace 和 PERMANENT tablespace 的区别是?
解答:temporarytablespace 用于临时对象例如排序结构而permanent tablespaces 用来存储那些'
真实'的对象(例如表,回滚段等)
171. 创建数据库时自动建立的 tablespace 名称?
解答:SYSTEMtablespace.
172. 创建用户时,需要赋予新用户什么权限才能使它联上数据库。
解答:CONNECT
173. 如何在 tablespace 里增加数据文件?
解答:ALTERTABLESPACE &tablespace_name& ADD DATAFILE &datafile_name& SIZE&size&
174. 如何变动数据文件的大小?
解答:ALTERDATABASE DATAFILE &datafile_name& RESIZE &new_size&;
175. 哪个 VIEW 用来检查数据文件的大小?
解答:DBA_DATA_FILES
176. 哪个 VIEW 用来判断tablespace 的剩余空间
解答:DBA_FREE_SPACE
177. 如何判断谁往表里增加了一条纪录?
解答:auditing
178. 如何重构索引?
解答: ALTERINDEX &index_name& REBUILD;
179. 解释什么是 Partitioning(分区)以及它的优点。
解答:Partition 将大表和索引分割成更小,易于管理的分区。
180. 你刚刚编译了一个 PL/SQL Package 但是有错误报道,如何显示出错信息?
解答:SHOW ERRORS
181. 如何搜集表的各种状态数据?
解答: ANALYZE
The ANALYZE command.
182. 如何启动 SESSION 级别的 TRACE
解答:DBMS_SESSION.SET_SQL_TRACE
ALTER SESSION SET SQL_TRACE = TRUE;
183.IMPORT 和 SQL*LOADER 这 2 个工具的不同点
解答:这两个 ORACLE 工具都是用来将数据导入数据库的。
区别是:IMPORT 工具只能处理由另一个 ORACLE 工具 EXPORT 生成
的数据。而SQL*LOADER 可以导入不同的 ASCII 格式的数据源
184.用于网络连接的 2 个文件?
解答:TNSNAMES.ORA and SQLNET.ORA
185. 说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别?
解答:&& Servlet 被服务器实例化后,&&&&&&& 容器运行其 init 方法,请求到达时运行其 service 方法,service
方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候
调用其 destroy 方法。
与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可
以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销
毁,所以效率上低于servlet。
186、JAVA 中常用的 XML 解析技术有哪些?区别是什么?
解答: DOM、SAX 两种方式。
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的数结构所造成的,这结构占用的
内存较多,而且 DOM 必须在解析文件之前把整个文档载入内存,适合对 XML 的随机访问
SAX:不同于 DOM,SAX 是事件驱动型的 XML 解析方法。它顺序读取 XML 文件,不需要一次全部装载整
个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过
在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问。
187、XML 文档定义有几种形式?有何本质区别?
解答:两种形式 dtd 和 schema,区别:
a.Schema 是标准的 XML 文件,而 DTD 则使用自己的特殊语法,因此,只需要知道 XML 的语法规则就可以
编写 Schema 了,不需要再学习其它语法规则。
b.Schema 利用命名空间将文件中特殊的节点与 Schema 说明相联系,一个 XML 文件可以有多个对应的
Schema;而一个 XML 文件只能有一个相对应的DTD 文件。
c.Schema 的内容模型是开放的,可以随意扩充,而 DTD 则无法解读扩充的内容.DTD 只能把文件类型定
义为一个字符串,而 XML&&&&&&&&&& Schema&& 却允许把文件类型定义为整数,浮点数,字符串,布尔值或其他各
各数据类型,而无须重新定义。
188.MVC 的各个部分都有哪些技术来实现?如何实现?
解答:MVC 是 Model-View-Controller 的缩写,Model 代表的是应用的业务逻辑(通过 JavaBean,EJB
组件实现)&&& ,View 是应用的表示面(由 JSP 页面产生)Controller 是通过应用的处理过程控制,&&&&& (一
般是一个 servert)通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些
组件可以进行交互和重用。
189 什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序有足
够的可用内存吗?
解答:垃圾回收(GC)是 Java 语言的一个重要特性,作用是释放不再被使用的内存。垃圾回收由系统
进行管理。在系统认为需要的时候自动启动一个线程进行处理。
尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。
垃圾回收机制无法保证有足够的内存。
190.什么是混淆(obfuscate)?有什么好处?有哪些工具可以混淆 jar 文件?
解答:混淆是指通过对class 文件中的变量名和部分方法名进行处理,来提高代码反编译的难度。
好处主要有 2 个:1、提高反编译以后代码阅读的难度 2、降低 class 文件的大小。
常见的混淆器有Proguard 和 RetroGuard 两种。
191.什么是状态机?游戏开发中有那些地方能用到状态机?
解答:状态机(StateMachine)是根据对应状态进行处理的一种机制,在游戏开发中最典型的应用是
游戏人工智能(AI)等地方。
192. 请根据你的知识,对以下计算机名词进行尽量简单的描述
1)J2ME 是一种使用 Java 语言进行嵌入式设备开发的技术。
2) Python 是一种语法简单的面对对象的程序设计语言
3)Ant 是 Java 的生成工具。
4)Javac 是 Java 语言的编译程序
5)Subversion 是新一代的版本工具
6)OpenGL 是一套开发的图形界面开发库标准
193.J2EE,EJB,JDBC 是一回事吗,它们之间有什么关系?
解答:不是一回事,J2EE(Java 2 Platform,Enterprise Edition)是一套全然不同于传统应用开发
的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与
再用价值。J2EE 核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共
通的标准及规格,让各种依循J2EE 架构的不同平台之间,存在良好的兼容性。其中,EJB 和 JDBC 都
属于 J2EE 的一部分。
194.什么是数据库系统?
解答:数据库系统是储存、管理、处理和维护数据的软件系统,它由数据库、数据库管理员和有关软
件组成。数据库系统的结构框架由外部层(单个用户的视图)&&&&&&&&&&& 、概念层(全体用户的公共视图)和内
部层(存储视图)组成。
195.试述数据库完整保护的主要任务和措施。
解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容:实体完
整性规则,参照物完整性规则以及用户定义完整性规则。
&&&&&&前两个是有 DBMS 自动处理。
&&&&&&&实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要
求,主关键字和元组的唯一性对应。
&&&&&&参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基
表中必存在元组。
用户定义的完整性规则针对具体的数据环境由用户具体设置的规则,它反应了具体应用中的语义要
&&&&&&&一个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检查以及
完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也可以做完整性的
保护,但触发器大量用于主动性领域。
196. 请写出十种以上你知道的 java 开源软件,并用一句话说明功能。
Ibatis:持久层框架
Hibernate:持久层框架,它对 JDBC 进行了非常轻量级的对象封装
Struts:是一个基于 Sun J2EE 平台的 MVC 框架
Spring:是一个解决了许多在 J2EE 开发中常见的问题的强大框架
Tomcat:实现了 servlet、struts 框架的 web 服务器
WebWork:组件化和代码重用的拉出式 MVC 模式 J2EE Web 框架
Rose:系统分析和设计的工具
JUnit:用于单元测试
ANT:用于辅助开发
Eclipse:IDE 集成开发工具
197. 部署一个 web 应用的步骤是什么?
解答:1.将 web 应用放到 Tomcat 服务器的 Webapps 包下,
2.启动服务器
3.在地址栏中输入 http://localhost:8080/应用名/
198. 什么是 UDDI、SOAP、WSDL?
解答:UDDI 是一套基于 Web 的、分布式的、为 Web Service 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service 注册,以使别的企业能够发现的访问协议的实现标准。 SOAP 即简单对象访问协议(SimpleObject Access Protocol),它是用于交换 XML 编码信息的轻量级协议。WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
199. Java 数据库编程包含哪些类?Java 数据库编程的基本过程是什么?
解答:用到的类:Connection、ResultSet、PreparedStatement、Statement
&&&Java 中访问数据库的步骤如下:
&&& 1)注册驱动;
&&& 2)建立连接;
&&& 3)创建 Statement;
&&& 4)执行 sql 语句;
&&& 5)处理结果集(若 sql 语句为查询语句)&&&&&& ;
&&& 6)关闭连接。
200. 什么是 B/S 结构,C/S 结构?
解答:C/S 是 Client/Server 的缩写。服务器通常采用高性能的 PC、工作站或小型机,并采用大型数据库系统,如 Oracle、Sybase、Informix 或 SQL Server。客户端需要安装专用的客户端软件。
B/S 是 Brower/Server 的缩写,客户机上只要安装一个浏览器(Browser),如 Netscape Navigator 或Internet Explorer,服务器安装 Oracle、Sybase、Informix 或 SQL Server 等数据库。在这种结构下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过 Web Server 同数据库进行数据交互。
201. 什么是 AJAX 和 AOP?
解答: Ajax 的全称是:AsynchronousJavaScript And XML。Ajax 不是一个技术,它实际上是几种技术,& 每种技术都有其独特这处合在一起就成了一个功能强大的新技术。&&&&&&&&&&&&& Ajax 包括: XHTML 和 CSS 使用文档对象模型(Document Object Model)作动态显示和交互使用 XML 和 XSLT 做数据交互和操作 使用 XMLHttpRequest 进行异步数据接收 使用 JavaScript 将它们绑定在一起 。
&AOP 是 OOP 的延续,是 Aspect Oriented Programming 的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP 实际是 GoF 设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。
202. 简要说明 JVM、JSP、Servlet、Web Server、Web Browser 之间的关系。
解答:当用户在 JSP 页面上提交了需要服务器处理的数据后,通过 Web Browser 发送到服务器端,Servlet 会根据用户的请求产生必要的相应,如果需要还会通过 JVM 或 Web Server 来获取资源,最后把服务器端的相应结果返回给用户。
203. 说说对开源项目 apache 的了解,说出其中你使用过的项目并给以评价
解答:Apache HTTPServer(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行由于其多平台和安全性被广泛使用,&&&&&&&&&&&& 是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编译到服务器中。
Apache 起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,ApacheHttpd被开放源代码团体的成员不断的发展和加强。Apache Http 网站服务器拥有牢靠可信的美誉,已经在全球超过半数的网站中被使用,特别是几乎所有最热门和访问量最大的网站。
Apache 支持许多特性大部分通过编译的模块实现这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持 Perl,Python, Tcl,和 PHP。流行的认证模块包括 mod_access,mod_auth 和 mod_digest。 其他的例子有 SSL 和 TLS 支持&&&&& (mod_ssl) 代理服务器 (proxy) 模块,很有用的 URL 重写(由mod_rewrite 实现)&&&& ,定制日志文件(mod_log_config)&&& ,以及过滤支持
(mod_include 和 mod_ext_filter)。Apache 日志可以通过网页浏览器使用免费的脚本 AWStats 或Visitors 来进行分析。
204. EJB 与 JAVA BEAN 的区别?
解答:Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat)的,所以 Java Bean应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。Java Bean 实际上相当于微软 COM 模型中的本地进程内 COM 组件,它是不能被跨进程访问的。Enterprise Java Bean
相当于 DCOM,即分布式组件。它是基于 Java 的远程方法调用(RMI)技术的,所以 EJB 可以被远程访问(跨进程、跨计算机)。但 EJB 必须被布署在诸如 Webspere、WebLogic 这样的容器中,EJB 客户从不直接访问真正的 EJB 组件,而是通过其容器访问。EJB 容器是 EJB 组件的代理,EJB 组件由容器所创建和管理。客户通过容器来访问真正的 EJB 组件。
205. spring 有几种事务管理,spring 的事务管理接口是什么?
解答:Spring 提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码
量大,存在重复的代码比较多;而声明式的比编程式的更灵活方便。
接口:其中最重要的三个接口:TransactionDefinition、
PlatformTransactionManager 、 TransactionStatus 。 在&&&& Spring 中,事务是通过
TransactionDefinition 接口来定义的。该接口包含与事务属性有关的方法,&&&&&&&&&&& TransactionDefinition接口中定义了五个表示隔离级别的常量、代表传播行为的常量,TransactionDefinition 中以 int的 值来 表 示 超 时 时 间 , PlatformTransactionManager.getTransaction( ,, ) 方法 返 回 一 个TransactionStatus 对象。&&返回的 TransactionStatus对象可能代表一个新的或已经存在的事务(如果在当前调用堆栈有一个符合条件的事务)。TransactionStatus
接口提供了一个简单的控制事务执行和查询事务状态的方法。
206. 介绍一下 springMVC 的工作原理、为什么用 spring?
解答:springMVC 工作原理:
1).spring mvc 请所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
2).DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller.
3).DispatcherServlet 请请求提交到目标 Controller
4).Controller 进行业务逻辑处理后,会返回一个 ModelAndView
5).Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到ModelAndView 对象指定的视图对象
6).视图对象负责渲染返回给客户端。为什么用 spring:
AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务(比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置 所表明的,IOC 就像反过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)
Spring 既是一个 。AOP 框架,也是一 IOC 容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。
207. 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 的默认方法。
208. 请简单画出 struts 技术构建 mvc 的流程图
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&模型
&&&&&&&&&&&&&&&&&&&&& Struts-config.xml
&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&ActionForm
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1.初始化
&&&&&&&&&2.HTTP 请求
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&业务功能类
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 3.填写 Form
&&&&&&&&&&&&&&&&&&&&&&& Struts 框架总控制器
& Client&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&JavaBean
&&&&&&&&&&&&& 7.转换 HTTP 请求&&&&&&&&&&&&&&&&&& 4.将请求交给
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&5.调用后台业务
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 具体的 Action 处理
&&&&&&&&&&&&& 到目标响应对象
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 6.返回目标响&&&&&&&&&&&&&&&&&&&&&&&& 功能类完成商业
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 应对象&&&&&&&&&&&&&&&&&&&&&&&&&&&& 逻辑
&&&&&&&&&&&&&&&& 视图
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&业务功能控制器
&&&&&&&&&&&&&&&&JSP
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Action
209. Jdo 是什么?
解答:JDO 是 Java 对象持久化的新的规范,为 java data object 的简称,也是一个用于存取某种数据
仓库中的对象的标准化 API。JDO 提供了透明的对象存储,因此对开发人员来说,存储数据对象完全
不需要额外的代码(如JDBC API 的使用)&&&&&&&&&&&&& 。这些繁琐的例行工作已经转移到 JDO 产品提供商身上,使
开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO 很灵活,因为它可以在任何数据
底层上运行。JDBC 只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比
如关系数据库、文件、XML 以及对象数据库(ODBMS)等等,使得应用可移植性更强。
210. 就 WEB2.0 相关信息做一下描述,谈谈

我要回帖

更多关于 java虚拟机apk下载 的文章

 

随机推荐