JAVA认证 百分网手机站

java程序员面试考试题及答案(3)

时间:2018-03-17 10:03:51 JAVA认证 我要投稿

java程序员面试考试题及答案

  事务结束。

  当事务回滚到一保留点(具有SAVEPOINT)时,有下列情况:

  仅在该保留点之后执行的语句被撤消。

  该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除。

  自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持。

  该事务仍可继续。

  (3) 保留点

  保留点(savepoint)是在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的工作。在应用程序中经常使用保留点;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个保留点之后,该保持点之后所获得的数据封锁被释放。

  26. 视图在什么情况下可以对其,删除,修改操作:

  DML操作应遵循的原则:

  1).简单视图可以执行DML操作;

  2). 在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行;

  3).在视图不出现下列情况时可通过视图修改基表数据或插入数据:

  a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;

  b.使用表达式定义的列;

  c.ROWNUM伪列。

  d.基表中未在视图中选择的其他列定义为非空且无默认值。

  WITH CHECK OPTION 子句限定:

  通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,

  因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。

  视图的删除:

  DROP VIEW VIEW_NAME语句删除视图。

  删除视图的定义不影响基表中的数据。

  只有视图所有者和具备DROP VIEW权限的用户可以删除视图。

  视图被删除后,基于被删除视图的其他视图或应用将无效。

  27. oracle中各种连接的写法:

  内连接,外连接 ,左外连接,右外连接

  以上几种连接一般用于多表之间复杂的查询,

  下面先说说内连接,也即相等连接,如右两张表 dept ,employee,

  dept里有字段deptid,deptname,employee有字段empno,deptid,ename,sal,age等

  那连接查询语句如下:select A.* ,B.* from dept A,employee B where A.deptid=B.deptid

  一般出现这种情况的是一张是主表,另一张是子表,主表的主键作为子表的外键,显示结果按照子表的显示,内连接简单,这里就不多说了

  外连接在oralce里用(+)表示,先看例子

  select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where emp.deptno(+) =dept.deptno

  这是一个右连接

  看下面的例子

  select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where dept.no=emp.deptno(+)

  这是一个左连接

  两个查询显示的查询结果是一样的,刚开始学oracle的时候很多人都很难明白这个,现在有个笨办法,

  大家不防记下来,(+)出现查询条件的左边即右连接,出现在右边即左连接。(+)可以放在左边也可以

  放在右边,但是一定要放在缺少条件的那一边,如上面的例子中,如果公司最近准备成立一个新的部门,

  测试部门,但现在还没有招新员工,而现在Boss想知道公司有知道公司的员工在那个部门并且想知道

  没有员工的部门,我们可以用上面的查询语句实现。

  左外连接(left outer join)和右外连接(reght outer join)如同上面的外连接,查询的结果是一样的。

  左外连接:select empno,ename,sal,emp.deptno,dept.deptno from dept left outer join emp on (emp.deptno=dept.deptno)

  右外连接:select empno,ename,sal,emp.deptno,dept.deptno from emp reight outer join dept on (emp.deptno=dept.deptno)

  以上显示的结果和外连接查询出来的结果是一样的,只是写法不一样而已,实际工作中外连接用的比较多,没有必要都要去用它,但是概念大家一定要了解。

  全外关联 :FULL OUTER JOIN

  SELECT e.last_name, e.department_id, d.department_name

  FROM employees e

  FULL OUTER JOIN departments d

  ON (e.department_id = d.department_id);

  结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。

  28. 查询的优化

  1).根据查询条件建立合适的index

  2).因为SQL是从右向左解析,多表查询时,记录数少的表放在右边

  3).多个条件时,收敛快的条件放在右边。

  4).避免使用复杂的集合函数,象not in等。

  5).避免在条件中对字段进行函数操作

  6).尽量避免使用select *,应该写出需要查询的字段

  7).在java中尽量使用preparestatement执行sql,从而共享执行计划"

  29. 怎么看执行计划

  使用explain或者autotrace查看执行计划

  30. 如何强制一个SQL语句使用索引? 使用index hints

  31. Oracle中的PL/SQL块是否熟悉?Oracle中的内置函数是否熟悉?

  内置函数:ASCII,CHR,CONCAT, decode,to_date,to_char,to_number等等

  32. 如何取一个没有排序的查询结果中的前10条记录?

  select fielda from tablea where rownum<=10;

  33. 问:如何取一个有排序的查询结果中的前10条记录?

  select fielda from

  (select fielda from tablea order by fieldb )

  where rownum<=10;

  错误写法:select fielda from tablea where rownum<=10 order by fieldb;

  34. 如何取一个没有排序的查询结果中的第11条到第20条记录?

  select fielda from

  (select fielda,rownum rn from tablea where rownum<=20)

  where rn>=11;

  35. 如何取一个有排序的查询结果中的第11条到第20条记录?

  select fielda from

  (select fielda ,rownum rn from

  (select fielda from tablea order by fieldb )

  where rownum<=20

  ) where rn>=11;

  36. 数据库设计中,主键的作用?

  主键的作用保持数据表记录的唯一性,建立主键索引和作为外键使用.使用主键与外键的配对来表示实体间的连接.

  37. Oracle数据库设计中,建立外键的方法?

  (1)用Create table命令语句在设计数据库表时建立外键

  Create table Depart (

  DepNO Number(2),

  DepName varchar2(10),

  CONSTRAINT pk_dept PRIMARY KEY (DepNO)

  );

  Create table Emp (

  EmpNo Number(4),

  EmpName varchar2(20),

  DepNo CONSTRAINT fk_deptno References Depart(DepNo)

  );

  (2)用Alter table命令语句,为一个存在的表添加外键

  Create table Depart (

  DepNO Number(2),

  DepName varchar2(10),

  CONSTRAINT pk_dept PRIMARY KEY (DepNO)

  );

  Create table Emp(

  EmpNo Number(4),

  EmpName varchar2(20),

  DepNo Number(2)

  );

  Alter table Emp

  ADD CONSTRAINT fk_deptno Foreign key(DepNo) References Depart(DepNo);

  JAVA

  38. jsp内置对象

  1).HttpServletRequest类的Request对象

  2).HttpServletResponse类的Respone对象

  3).JspWriter类的out对象

  4).HttpSession类的session对象

  5).ServletContex类的application对象

  6).PageContext类的PageContext对象

  7).ServletConfig类的Config对象

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

  9)Exception

  39. Servlet中的主要方法有哪些?各有什么作用?

  init方法初始化Servlet

  service方法是Servlet中的业务方法,根据请求方式调用不同的doXXX(doGet方法或doPost方法等)响应请求

  destroy方法释放Servlet资源

  40. 接口Interface有什么作用?使用接口主要有什么好处?

  1) .接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现;

  2).利用接口可达到实现多继承的目的;

  3).可以在不暴露对象的类的前提下,暴露对象的编程接口.

  41. static和final修饰类,修饰方法和修饰属性时表示什么?

  static可以修饰类,方法,属性,分别表示静态类,静态方法,静态属性

  final修饰类表示类是最终类,不可再被继承

  final修饰方法表示方法不可被子类重写(override)

  final修饰属性表示属性是常量

  42. 自定义标签有什么作用?

  方便JSP页面代码的维护,代码重用

  43. 数据库连接对象使用以后在何处释放?

  try{}catch(){}finally{} 在finally{}中释放数据库连接对象

  44. 异常对象如何分级捕获?

  最底层的异常对象(子类异常)放在最前面,越高层的异常对象(父类异常)越放在后面

  45. 重载(overload)和重写(override)是什么?

  重载(overload)为类似功能的方法提供了统一的名称,但是根据参数列型态的不同,而自动呼叫对应的方法

  重写(override)是子类继承父类的方法,但是在子类中有不同的方法实现

  46. 工作中使用过哪些设计模式?请举2至3个例子并说明使用场景.

  工厂模式,单态模式,Facade模式等等

  47. 什么时候释放connection

  应该在finally{}语句块里释放connection;

  finally{

  if (conn != null)

  conn.close();

  }

  48. 异常处理,如何处理多个异常?

  异常处理的语句是try{}catch(){}finally{}

  当有多个catch()语句,来处理多个异常的话,强调(如果一个异常是另个异常的子类的话,在并行处理的时候子类的异常不会抓到);

  49. 可以在try语句模块里释放connection吗?可以.

  50. jsp标签的作用和好处

  答:主要用来显示结果数据,用来沟通表示层和业务逻辑层,把页面美工工作和程序编写分开。

  51. statement对象有多少种,以及作用和用法

  答:三种,分别为statement,PreparedStatement,CallableStatement

  作用是:建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句.

  1).PreparedStatement对象有可能比 Statement 对象的效率更高,因为它已被预编译过并存放在那以供将来使用。

  2).由方法 prepareCall 所创建。CallableStatement 对象用于执行 SQL

  储存程序 ─ 一组可通过名称来调用(就象函数的调用那样)的SQL 语句。CallableStatement 对象PreparedStatement 中继承了用于处理 IN 参数的方法,而且还增加了用于处理 OUT 参数和INOUT 参数的方法。

  特别强调:如果数据库支持已存储过程,则可从 JDBC 中调用它们,CallableStatement可调用存储过程语法为:

  {call procedure_name[(?, ?, . . .)]}

  52. Final,finalizer,finally区别和各自的用法