收藏 分享(赏)

2012最新java面试题.doc

上传人:精品资料 文档编号:11007896 上传时间:2020-01-31 格式:DOC 页数:48 大小:324.46KB
下载 相关 举报
2012最新java面试题.doc_第1页
第1页 / 共48页
2012最新java面试题.doc_第2页
第2页 / 共48页
2012最新java面试题.doc_第3页
第3页 / 共48页
2012最新java面试题.doc_第4页
第4页 / 共48页
2012最新java面试题.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、面试题和笔试题:1. 对 java 面向对象的理解;面向对象的程序设计很接近于我们人类自然的思维,相对于面向过程的程序设计,它具有更好的可扩展性和可维护性,使我们编写的代码更健壮! 面向对象主要有四大特性:封装、抽象、继承和多态。各自定义: 封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类.抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。继承:在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用; 多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为,多态可为程序提

2、供更好的可扩展性,同样也可以代码重用。2. 对 ssh 的理解;struts 的功能,就在于搭架框架,形成 jspform,actrion(即 control,其应用service,service 又应用了 dao)jsp,即 mvc。struts 的 action 部分又转给 spring 去处理。spring 则简化了事务处理。hibernate 的作用在于简 化了 sql 代码的处理。spring不单要在 struts 的 action 中起作用,也要为 hibernate 产生数据源和 SessionFactory。 3. 说一下 mvc 的模式的理解;MVC 英文即 Model-Vi

3、ew-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller 的方式进行分离,这样一个应用被分成三个层 模型层、视图层、控制层。4. Xml 的解析方法,区别是什么;有 DOM,SAX,STAX 等DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的树结构所造成的,这种结构占用的内存较多,而且 DOM 必须在解析文件之前把整个文档装入内存,适合对XML 的随机访问 SAX:不现于 DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取 XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结

4、束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问5. Webservice 的了解;1,什么是 Web Service ? Web Service 就是一个网络组件(一个可以通过网络访问的程序)。它有一个或多个端口(Port),这些端口用于接收客户端的请求,并返回响应 请求和响应的 都是一种基于 XML 的消息。 不过这种消息遵循特定的格式(SOAP )。 2,怎样调用 Web Service? 每个 Web Service 都有一个描述文件(WSDL ), 它描述 一个 Web Service 的如下方面: (1)服务的端口(接收 S

5、OAP 消息的端口) (2)服务提供的操作 (3)操作的输入输出格式的定义(通过 XMLSchema 定义输入输出格式) 有了 Web Service 的描述文件(WSDL ),我们就知道怎样调用这个 Web Service 中定义的操作了。 (1)通过服务提供的操作找到你想调用的操作 (2)找到这个操作的输入格式的定义(XMLSchema ),按照这种输入格式构造一个 SOAP 消息 (3)将这个 SOAP 消息发送到服务的指定端口 (4)准备接收一个从 Web Service 服务器返回的 SOAP 响应吧 ! 3,Web Service 服务器 一个 Web Service 服务器,本质

6、上和一个 Web 服务器是相同的。 它主要做下面这些事: 监听网络端口(监听服务端口) 接收客户端请求(接收 SOAP 请求) 解析客户端请求(解析 SOAP 消息,将 SOAP 消息转换为数据对象) 调用业务逻辑 (调用 Web Service 实现类的特定操作,参数是由SOAP 消息 转换而来的数据对象) 生成响应 (将返回值转换为 SOAP 消息) 返回响应 (返回 SOAP 响应)6. Struts 的工作原理;1、初始化,读取 struts-config.xml、web.xml 等配置文件(所有配置文件的初始化)2、发送 HTTP 请求,客户端发送以 .do 结尾的请求3、填充 Fo

7、rmBean(实例化、复位、填充数据、校验、保存)4、将请求转发到 Action(调用 Action 的 execute()方法)5、处理业务(可以调用后台类,返回 ActionForward 对象)6、返回目标响应对象(从 Action 返回到 ActionServlet)7、转换 Http 请求到目标响应对象(查找响应,根据返回的 Forward keyword)8、Http 响应,返回到 Jsp 页面7. Decode 函数的作用;DECODE 函数的作用:它可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值.。例子:select decode(sal,800,八百,100

8、0,一千,其他金额)from emp where empno=7788;8. 如何删除一个表中重复的数据;delete from tablename where id not in(select max(id) from tablename group by filedname);79. 对事物的理解;通常的观念认为,事务仅与数据库相关,事务必须服从 ISO/IEC 所制定的 ACID 原则,ACID 是: 原子性(atomicity:事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。 一致性(consistency):一致性表示当事务执行失败时,所有被该事务影响的数据都

9、应该恢复到事务执行前的状态。 隔离性(isolation):隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。 持久性(durability):持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。Java 事务的类型有三种:JDBC 事务、JTA(Java Transaction API)事务、容器事务。10.你觉得代码规范重要吗;重要。规范可以尽量避免 bugs 的数量,和减轻开发 leader 去复查代码花费的精力。11.在没有主键的情况下,如何删除表中重复的数据,请举例说明;Delete from emp where rowed not in (selec

10、t max(rowid) from emp group by empno ); 12.Ajax 的工作流程;Ajax 的工作原理相当于在用户和服务器之间加了个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像些数据验证和数据处理等都交给 Ajax 引擎自己来做 , 只有确定需要从服务器读取新数据时再由 Ajax 引擎代为向服务器提交请求。Ajax 其核心只有JavaScript、XMLHTTPRequest 和 DOM。13.String 和 StringBuffer 的区别;String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的

11、 String 对象的修改都是重新创建一个新的对象 ,然后把新的值保存进去.String 是 final 类,即不能被继承.StringBuffer:是一个可变对象,当对他进行修改的时候不会像 String 那样重新建立对象它只能通过构造函数来建立, :不能通过付值符号对他进行付值 .。字符串连接操作中StringBuffer 的效率要比 String 高:14.Java 中的异常有哪些,怎么处理;算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArra

12、yException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异常:SecturityException文件已结束异常:EOFException文件未找到异常:FileNotFoundException字符串转换为数字异常:NumberFormatException操作数据库异常:SQLException输入输出异常:IOException方法未找到异常:NoSuchMethodExceptionJava 的异常处理是通过 5 个关键字来实现的:try,catch,throw,throws,finally。15.接口和继承的区别;继承是减少代码的

13、冗余度,接口是实现相应方法的模板16.表单里面 get 和 post 有什么不同;1.get 是从服务器上获取数据,post 是向服务器传送数据。 2.get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中,值和表单内各个字段一一对应,在 URL 中可以看到。post 是通过 HTTPpost机制,将表单内各个字段与其内容放置在 HTML HEADER 内一起传送到ACTION 属性所指的 URL 地址。用户看不到这个过程。 3.对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form

14、 获取提交的数据。 4.get 传送的数据量较小,不能大于 2KB。post 传送的数据量较大,一般被默认为不受限制。但理论上,IIS4 中最大量为 80KB,IIS5 中为100KB。 5.get 安全性非常低,post 安全性较高。17.请求转发和重定向的不同;重定向与转发的区别:1.重定向访问服务器两次,转发只访问服务器一次。2.重定向可以看见目标页面的 URL,转发只能看见第一次访问的页面 URL,以后的工作都是有服务器来做的。3.重定向跳转后必须加上 return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。4.在 request

15、 级别使用信息共享,使用重定向必然出错!18.Jsp 里面的 Application 相当于什么;相当于 ServletContext 服务器的启动和关闭决定了 application 对象的生命。它是 ServletContext 的一个实例19.JDK 的配置;配置 JDK:(1)右击【我的电脑】-【属性】- 【高级】-【环境变量】(2)JDK 安装路径:D:/Java/jdk1.5.0_04(根据个人情况,我自己装在 D 盘)这里我们首先了解在环境变量中两个符号的用途:. 表示在当前目录下寻找;表示不同路径的分隔符%JAVA_HOME%表示名称为 JAVA_HOME 的路径方式一:【系统

16、变量】-【新建】 变量名:JAVA_HOME 变量值:D:/Java/jdk1.5.0_04(安装路径)【系统变量】-【新建】 变量名:path 变量值:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin在系统变量中如果已有 classpath 不用新建,在变量值的最前面加入.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar;方式二:path = D:/Java/jdk1.5.0_04/bin;D:/Java/jdk1.5.0_04/jre/binclasspath= D:/Java/jdk1.5.0_04/lib/dt.j

17、ar;D:/Java/jdk1.5.0_04/lib/tools.jar; *PATH 里面的路径应尽量放在最前面,例如安装了 ORACLE 后自带的 JDK1.3.1 会在最前面导致启动 IDE 出错!【运行】-CMD:输入 JAVAC -VERSION 得到当前版本。20.服务器的配置;21.抽象类与接口的区别;含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。含有 abstract 方法的类必须定义为 abstract class,abstract class 类中的方法不必是抽象的。abstract class 类中定义抽象方法必须在具体

18、(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static final。下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法

19、。4. 抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然eclipse 下不报错,但应该也不行) ,但接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类型。7. 一个类可以实现多个接口,但只能继承一个抽象类。下面接着再说说两者在应用上的区别:接

20、口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有 Servlet 类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的 Servlet 都继承这个抽象基类,在抽象基类的 service 方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码22.重写和重载的区别;方法的重写(Overriding)和重载(Overloading)是 Java 多态性的不同表现。重写(Overridin

21、g)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽“了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载。23.字符集编码的处理;24.会写 PL/SQL 吗;25.分组查询的作用;26.Oracle 中有哪些聚合函数;Max() min

22、() count() sum() avg() variance() stddev()27.Jsp 中的内置对象;request 用户端请求,此请求会包含来自 GET/POST 请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet 的构架部件 page JSP 网页本身 exception 针对错误网页,未捕捉的例外28.查询表中的数据时,如何去除表中的 Null 值;update tname set

23、Column=nvl(Column,0.0);29.存储过程与函数的区别;1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。 4. 当存储过程和函数被执行的时候,SQL Manager 会到 procedure cache 中去取相应的查询语句,如果在 procedure cache 里没有相应的查询语句,SQL Manager 就会对

24、存储过程和函数进行编译。 Procedure cache 中保存的是执行计划 (execution plan) ,当编译好之后就执行procedure cache 中的 execution plan,之后 SQL SERVER 会根据每个 execution plan 的实际情况来考虑是否要在 cache 中保存这个 plan,评判的标准一个是这个 execution plan可能被使用的频率;其次是生成这个 plan 的代价,也就是编译的耗时。保存在 cache中的 plan 在下次执行时就不用再编译了。30.事务的几个特性;原子性、一致性、分离性、持久性(1) 原子性事务的原子性指的是,事

25、务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原子性。假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新。前者称事务已提交,后者称事务撤消(或流产)。DBMS 必须确保由成功提交的事务完成的所有操纵在数据库内有完全的反映,而失败的事务对数据库完全没有影响。(2) 一致性事务的一致性指的是在一个事务执行之前和执行之后数据库都必须

26、处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。一致性处理数据库中对所有语义约束的保护。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。例如,当数据库处于一致性状态 S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态 S2。(3) 分离性分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。分离性是 DBMS 针对并发事务间的冲突提供的安全保证。 DBMS 可以通过加锁在并发执行的事务间提供不同级别的分离。假如

27、并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。DBMS 可以在并发执行的事务间提供不同级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较高的冲突和较多的事务流产。流产的事务要消耗资源,这些资源必须要重新被访问。因此,确保高分离级别的 DBMS 需要更多的开销。(4)持久性持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS 保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持久性通过数据库备份和恢复来保证。持久性意味着当系统或介质发生故障时,确保已提交事务的更新

28、不能丢失。即对已提交事务的更新能恢复。一旦一个事务被提交,DBMS 必须保证提供适当的冗余,使其耐得住系统的故障。所以,持久性主要在于 DBMS 的恢复性能。31.在一张表中插入一个字段;alter table tablename add column cloumnname;32.Cms 是什么;CMS 是 Content Management System 的缩写,意为“内容管理系统”。CMS 具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS 的功能并不只限于文本处理,它也可以处理图片、 Flash 动画、声像流、图像甚至电子邮件档案。CMS 其实是一个很广泛的称呼

29、,从一般的博客程序,新闻发布程序,到综合性的网站管理程序都可以被称为内容管理系统。根据不同的需求,CMS 有几种不同的分类方法。比如,根据应用层面的不同,可以被划分为: 重视后台管理的 CMS 重视风格设计的 CMS 重视前台发布的 CMS 等33.项目组的测试工具;功能测试:1. WinRunner/QuickTest Pro2. QARun3. Rational Robot/Functional Tester性能/负载/压力测试:1. LoadRunne2. WebLoad3. E-Test Suite4. QALoad5. Benchmark Factory6. JMeter7. WAS

30、8. ACT9. OpenSTA10. PureLoad安全测试工具:Acunetix Web Vulnerability Scan链接测试工具:1. HTML Link Validator2. Xenu Link Sleuth3. Web Link Validator测试管理1. TestDirector MI 的测试管理工具,可以与 winrunner、Loadrunner、QuickTestPro 进行集成。除了可以跟踪 Bug 外,还可以编写测试用例、管理测试进度等等,是测试管理的首选软件。 2. TestManager Rational Testsuite 中的一员,可以用来编写测试

31、用例、生成 Datapool、生成报表、管理缺陷以及日志等等。是一个企业级的强大测试管理工具。缺点是必须和其它组件一起使用,测试成本比较高。 3. TrackRecord 一款擅长于 Bug 管理的工具,与 TestDirecotr 和 Testmanager 比较起来是很light 的。 4. TestTrack/Bugzilla TestTrack 为 Seapine 公司的产品,在国内应该是应用比较多的一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的 Bug 跟踪体系,包括报告、查询并产生报表、处理解决等几个部分。它的主要特点为:基于 Web 方式,安装简单;有利于缺陷的清楚传达;

32、系统灵活,可配置性很强;自动发送 Email。Bugzilla 为开源缺陷记录和跟踪工具,最大好处是免费。 5. Jira 是一个 Bug 管理工具,自带一个 Tomcat 4;同时有简单的工作流编辑,可用来定制流程;数据存储在 HSQL 数据引擎中,因此只要安装了 JDK 这个工具就可以使用。相比较 Bugzilla 来说有不少自身的特点,不过可惜它并不是开源工具,有 Lisence 限制。34.索引(数据库中如何创建,什么时候创建,在哪些字段类型上创建)create index i_sidCard on student(sidCard);索引对于性能而言重要:在执行包含 where 子句的

33、任何 sql 语句时, oracle 必须确定要选择或修改的行,第二种可以使用索引情况是排序。第三种情况:有助于提高性能是在联接时。不过此时,Oracle 仍会根据表的大小和可用的内存资源做出选择:将表扫描到内存中并在那里将它们联接在一起可能比使用索引的速度更快。嵌套循环联接(nested loop join)技术使用另一个表上的索引遍历一个表来定位匹配行,这通常是一个“磁盘密集行操作”。哈希联接(hash join)技术将整个表读入内存,将其转换为哈希表,然后使用哈希法定位匹配的行,这是一个“内存和 CPU 更为密集型”的操作。排序合并联接(sort merge join)在联接列上排序表,

34、然后将它们合并在一起,这通常是磁盘、内存和 cpu 资源之间的折中。如果没有索引,oracle 将在可用的联接技术方面受到严重限制。1、表的主键、外键必须有索引; 2、数据量超过 300 的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在 Where 子句中的字段,特别是大表的字段,应该建立索引; 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合索引的几个字段是否经常

35、同时以 AND 方式出现在 Where 子句中?单字段查询是否 极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引; C、如果复合索引中包含的字段经常单独出现在 Where 子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过 3 个,那么仔细考虑其必要性,考虑减少复合的字段; E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引; 8、频繁进行数据操作的表,不要建立太多的索引; 9、删除无用的索引,避免对执行计划造成负面影响; 以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据

36、。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。 1,不要为大字段建立索引,会占用太多存储空间,影响性能,例如,int(4 字节),bigint(8 字节)2,不要为不常用或者重复记录多的字段建立索引3,索引尽量建立在定长字段上,尽量用数字型,不用字符串型,非用时候,用 char(数字),char 是定长的,效率略高于 varchar,nvarchar,

37、这两个节省了空间4,经常增删改的表,不要建立太多索引5,删除无用的索引 6.将列定义为 not null, 这样处理更快,节省空间,不用字段检查是否存在 null35.创建用户语句;create user 用户名 identified by 密码36.存储过程中异常处理;37.数据库使用工具;38.数据库实例的理解(用户与数据库之间充当的什么角色) ;39.对游标的理解;游标分为显示游标和隐式游标。Oracle 游标是一种用于轻松的处理多行数据的机制。如果没有游标,Oracle 开发人员必须单独地、显式地取回并管理游标查询选择的每一条记录。游标的另一项功能是,它包含一个跟踪当前访问的记录的指针

38、,这使程序能够一次处理多条记录。40.给一个表加了一个列;alter table Tablename add(columnname varchar2(20);41.Oracle 连其他电脑的服务器改哪个文件;42.怎样理解 varchar 和 varchar2;1.varchar2 把所有字符都占两字节处理( 一般情况下 ),varchar 只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;2.VARCHAR2 把空串等同于 null 处理,而 varchar 仍按照空串处理;3.VARCHAR2 字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用 varchar2

39、类型,可以保证更好的兼容性。43.理解表空间;一个表空间就是一片磁盘区域,他又一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等 每个表空间又一个预制的打一磁盘区域称为初始区间(initial extent)用完这个区间厚在用下一个,知道用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件44.你的优势是什么;45.哪些操作有事务;操作数据库跟事务有关。46.对 SAG 的理解;Sag 是一个 CouchDB 的 PHP 客户端库,其设计目的是使用最简单的方法提供最强大的CouchDB 操作,Sag 库可以使用 PHP 内置的数据结构(字符串,数组,对象

40、等)作为数据操作媒介,让数据操作更简单。47.简述你最近做过的项目,说说你的收获;48.你们是如何对源代码进行管理的;1. 彻底抛弃 VSS! 2. 没有进入版本库,它就不存在3. 尽早提交,尽快提交,经常提交 4. 在提交前检查你的更改5. 认真填写“commit messages”6. 你必须自己提交代码,而不是让别人代劳7. 数据库的版本控制是必须的49.说说常用的集合,各个集合之间的区别;List/Set/Map1ArrayList: 元素单个,效率高,多用于查询2Vector: 元素单个,线程安全,多用于查询3LinkedList:元素单个,多用于插入和删除4HashMap: 元素成

41、对,元素可为空5HashTable: 元素成对,线程安全,元素不可为空50.说说 java 中的 static;static 可以修饰成员变量、方法、游离块、内部类。a) 类中的 static 变量在类加载时首先被初始化,且只能初始化一次 .b) 所有对象共享类中的 static 变量.c) 在创建子类的对象时,先初始化父类的 static 变量,再初始化子类的 static.61.jsp 中和 的区别前者是指令元素、后者是行为元素。jsp:include 动作和 include 指令之间的根本性的不同在于它们被调用的时间。jsp:include 动作在请求期间被激活,而include 指令在

42、页面转换期间被激活。62.JAVA 中字符编码集处理63.说说游标本篇主要内容如下:4.1 游标概念4.1.1 处理显式游标4.1.2 处理隐式游标4.1.3 关于 NO_DATA_FOUND 和 %NOTFOUND 的区别4.1.4 使用游标更新和删除数据4.2 游标变量4.2.1 声明游标变量4.2.2 游标变量操作游标的使用在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现。4.1 游标概念在 PL/SQL 块中执行 SELECT、INSERT 、DELETE 和 UPDATE 语句时,ORACLE 会在内存中为其分配上下文区(Context Area),即缓冲区。游标是

43、指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。它为应用等量齐观提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式 SQL 语句的应用程序的常用编程方式。在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的 OPEN_CURSORS 参数定义。对于不同的 SQL 语句,游标的使用情况不同:SQL 语句 游标非查询语句 隐式的结果是单行的查询语句 隐式的或显示的结果是多行的查询语句 显示的4.1.1 处理显式游标1. 显式游标处理显式游标处理需四个 PL/SQL 步骤:l 定义/声明游标:就是定义一个游标

44、名,以及与其相对应的 SELECT 语句。格式:CURSOR cursor_name(parameter, parameter) RETURN datatypeIS select_statement;复制代码游标参数只能为输入参数,其格式为: parameter_name IN datatype := | DEFAULT expression在指定数据类型时,不能使用长度约束。如 NUMBER(4),CHAR(10) 等都是错误的。RETURN datatype是可选的,表示游标返回数据的数据。如果选择,则应该严格与 select_statement 中的选择列表在次序和数据类型上匹配。一般是

45、记录数据类型或带“%ROWTYPE”的数据。l 打开游标:就是执行游标所对应的 SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有 FOR UPDATE 选项,OPEN 语句还将锁定数据库表中游标结果集合对应的数据行。格式:OPEN cursor_name(parameter = value, parameter = value);在向游标传递参数时,可以使用与函数参数相同的传值方法,即位置表示法和名称表示法。PL/SQL 程序不能用 OPEN 语句重复打开一个游标。l 提取游标数据:就是检索结果集合中的数据行,放入指定的输出变量中。

46、 格式:FETCH cursor_name INTO variable_list | record_variable ;执行 FETCH 语句时,每次返回一个数据行,然后自动将游标移动指向下一个数据行。当检索到最后一行数据时,如果再次执行 FETCH 语句,将操作失败,并将游标属性%NOTFOUND 置为 TRUE。所以每次执行完 FETCH 语句后,检查游标属性%NOTFOUND 就可以判断 FETCH 语句是否执行成功并返回一个数据行,以便确定是否给对应的变量赋了值。l 对该记录进行处理;l 继续处理,直到活动集合中没有记录;l 关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,

47、以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用 FETCH 语句取其中数据。关闭后的游标可以使用 OPEN 语句重新打开。格式:CLOSE cursor_name;注:定义的游标不能有 INTO 子句。例 1. 查询前 10 名员工的信息。DECLARECURSOR c_cursor IS SELECT first_name | last_name, Salary FROM EMPLOYEES WHERE rownum20);LOOPFETCH c3 INTO deptrec;EXIT WHEN c3%NOTFOUND;DBMS_OUTPUT.PUT_LINE(deptr

48、ec.DEPARTMENT_ID|-|deptrec.DEPARTMENT_NAME|-|deptrec.LOCATION_ID);END LOOP;CLOSE c3;END;复制代码2.游标属性Cursor_name%FOUND 布尔型属性,当最近一次提取游标操作 FETCH 成功则为 TRUE,否则为 FALSE;Cursor_name%NOTFOUND 布尔型属性,与%FOUND 相反;Cursor_name%ISOPEN 布尔型属性,当游标已打开时返回 TRUE;Cursor_name%ROWCOUNT 数字型属性,返回已从游标中读取的记录数。3. 游标的 FOR 循环PL/SQL 语

49、言提供了游标 FOR 循环语句,自动执行游标的 OPEN、FETCH、CLOSE语句和循环语句的功能;当进入循环时,游标 FOR 循环语句自动打开游标,并提取第一行游标数据,当程序处理完当前所提取的数据而进入下一次循环时,游标 FOR 循环语句自动提取下一行数据供程序处理,当提取完结果集合中的所有数据行后结束循环,并自动关闭游标。格式:FOR index_variable IN cursor_name(value, value) LOOP- 游标数据处理代码END LOOP;复制代码其中:index_variable 为游标 FOR 循环语句隐含声明的索引变量,该变量为记录变量,其结构与游标查询语句返回的结构集合的结构相同。在程序中可以通过引用该索引记录变量元素来读取所提取的游标数据,index_variable 中各元素的名称与游标查询语句选择列表中所制定的列名相同。如果在游标查询语句的选择列表中存在计算列,则必须为这些计算列指定别名后才能通过游标 FOR 循环语句中的索引变量来访问这些列数据。注:不要在程序中对游标进行人工操作;不要在程序中定义用于控制 FOR 循环的记录。例 8:DECL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报