IBM认证数据库考试试题

IBM认证数据库考试试题,第1张

(1)已知表T1中有2行数据,T2中有3行数据,执行SQL语句

“select a from T1 a,T2 b”后,返回的行数为______

A、2行

B、3行

C、5行

D、6行

多表查询没有指定连接条件,会导致笛卡尔积的出现,返回行数等于2张表的行数乘积,返回6行记录

考察:对多表连接、笛卡尔积的理解

答案:A

(2)、已知表T1和T2的字段定义完全相同,T1,T2中各有5条不同的数据,其中T1有2条数据存在于表T2中,语句“select from T1 union select from T2”

返回的行数为_______

A、8行

B、10行

C、3行

D、12行

第二题 UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

考察:UNION 的理解

答案: A

(3)、 已知表T1含有字段ID、CourseID和Score,且数据为

ID CourseID Score

3 1 90

2 1 85

2 2 90

3 2 80

则语句“select id,sum(ScorE) from T1 group by ID”的执行结果为_________

A、 ID sum(ScorE)

—– ———-

3 170

2 175

B、 ID sum(ScorE)

—– ———-

2 175

3 170

C、 ID sum(ScorE)

—– ———-

2 170

3 175

D、 ID sum(ScorE)

—– ———-

3 175

2 170

第三题 GROUP BY 对按照ID字段进行分组,同时对ID相同字段的ScorE进行求和,GROUP by 会自动对结果集进行排序所以答案选B

考察:group by 的理解

答案: B

(4)、电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法执行速度最慢的是_________

A、 select count() from t_phonebook where phoneno >= ‘321’ and phoneno < ‘321A’

B、 select count() from t_phonebook where phoneno like ‘321%’

C、 select count() from t_phonebook where substring(phoneno,1,3) = ‘321’

A>或者< *** 作符会采用索引查找

B:LIKE通配符在XXX%情况下会应用索引,如果在%xxx%等情况下不会应用索引

答案: C:采用函数处理的字段不能利用索引,例如substr() 这个题好像写成java的函数了

答案: C

(5)、已知表tbl中字段land_ID建有索引,字段cust_id建有唯一索引,下列语句查询逻辑相同,其中执行效率最优的是

A、 SELECT FROM tbl

WHERE land_id > 750

or (cust_id=180 or cust_id=560)

B、 SELECT FROM tbl

WHERE (cust_id=180 or cust_id=560)

or land_id > 750

C、 SELECT FROM tbl WHERE land_id > 750

UNION

SELECT FROM tbl WHERE cust_id = 180

UNION

SELECT FROM tbl WHERE cust_id = 560

D、 SELECT FROM tbl WHERE land_id > 750

UNION

( SELECT FROM tbl WHERE cust_id = 180

UNION ALL

SELECT FROM tbl WHERE cust_id = 560

)

C/D相比较而言,D的执行效率更高一些

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录

采用UNION ALL *** 作符替代UNION,因为UNION ALL *** 作只是简单的将两个结果合并后就返回。

(6)、员工技能表Staffskill结构如下,Staff和Skill字段建有唯一约束

staff VARCHAR2(10),

skill VARCHAR2(10)

哪条语句可以查询同时拥有技能A和技能B的员工

A、 select staff from Staffskill where skill=’A’ OR skill=’B’

B、 select staff from Staffskill where skill=’A’ AND skill=’B’

C、 select staff from Staffskill where skill=’A’ OR skill=’B’ group by staff

D、 select staff from Staffskill where skill=’A’ OR skill=’B’ group by staff having count()>1

答案:D

(7)员工表staff表结构如下

staffNo varchar2(10),

Email varchar2(50)

哪一个SQL语句查询出没有E_mail地址的员工号

A、select staffno from Staff where Email = NULL

B、select staffno from Staff where Email <> NULL

C、select staffno from Staff where Email is null

D、select staffno from Staff where Email is not null

答案: C

(8)Oracle数据库启动步骤的顺序为

1Mount 2Open 3Nomount

A、3-1-2

B、2-3-1

C、2-1-3

D、3-2-1

答案:A

(9)存在两个结构相同的数据库表T1(col1,col2,col3)、T2(col1,col2,col3),写出一SQL语句将所有T1数据导入到T2表

A、select col1,col2,col3 from T1 INTO T2 (col1,col2,col3)

B、INSERT T1 (col1,col2,col3) INTO T2(col1,col2,col3)

C、insert into T2 (col1,col2,col3) AS select col1,col2,col3 from T1;

D、insert into T2 (col1,col2,col3) select col1,col2,col3 from T1;

答案: D

10)一个表的字段为varchar2,如果建表时没有指定长度,则默认长度为:

A、1

B、25

C、38

D、255

E、4000

F、建表时varchar2类型字段必须指定长度

答案:F

(11)用TRUNCATE和DELETE语句删除表中数据的区别

A、TRUNCATE命令不记录日志

B、TRUNCATE命令记录日志

C、DELETE命令不记录日志

答案:A

(12)如下查询语句SELECT id_number,100/quantity from inventory如果quantity为空,则查询语句的第二个字段将返回

A、 a space

B、 a null value

C、 a value of 0

D、 a value of 100

E、 the keywork null

答案:B

(13)如下语句:SELECT iid_number,mid_number FROM inventory i,manufacturer m

WHERE imanufacturer_id = mid_number

Order by inventorydescription

执行时是错误的,请问以下措施哪个能够改正这个错误

A 在order by的子句中使用表的别名

B 在where子句中去掉表的别名

C 在where子句中用表名代替表的别名

D 在order by子句中去掉表名,只要字段名称即可

(如果2张表中,不同时存在字段名为description的话,D答案也是正确的)

答案:A

14)A表字段a 类型int中有100条记录,值分别为1至100。如下语句

SELECT a FROM A

WHERE A BETWEEN 1 AND 50

OR (A IN (25,70,95)

AND A BETWEEN 25 AND 75)

则如下哪个值在这个sql语句返回的结果集中

A、30 B、51 C、75 D、95

答案:A

15) 变量v_time = ‘23-MAY-00’,如下那条语句返回值为‘01-JAN-00’

A SELECT ROUND(V_TIME,’DAY’) FROM DUAL;

B SELECT ROUND(V_TIME,’YEAR’) FROM DUAL;

C SELECT ROUND(V_TIME,’MONTH’) FROM DUAL;

D SELECT ROUND(TO_CHAR(V_TIME,’YYYY’)) FROM DUAL;

答案:B

16)关于索引(index)的说法哪些是错误

A、创建索引能提高数据插入的性能

B、索引应该根据具体的检索需求来创建,在选择性好的列上创建索引

C、索引并非越多越好

D、建立索引可使检索 *** 作更迅速

答案: A

(17)指出下面sql语句的错误之处:

select id_number “Part Number”,sum(price) “price” from inventory

where price > 50

group by “Part Number”

order by 2;

A、order by 2

B、from inventory

C、 where price > 50

D、group by “Part Number”

答案:D

(18)如下语句

if v_num > 5 then

v_example := 1;

elsif v_num > 10 then

v_example := 2;

elsif v_num < 20 then

v_example := 3;

elsif v_num < 39 then

v_example := 4;

else v_example := 5;

如果v_num = 37,则v_example的值是多少

A、1 B、2 C、3 D、4 E、5

答案:A

计算机科学系是第一个考四级全国统考,复试科目:1 081 201计算机系统结构,数据库40%2,软件工程30%3,Java语言的30%,“数据库系统(第2版)原理”李建中王珊电子工业出版社协会于2004年9月,“软件工程与应用”滨东北大学出版社,2007年“Java编程思想(第4版)”(美)埃克尔着,陈昊鹏机械工业出版社6月1日的翻译,2007年081202计算机软件与理论1,两个数据库,软件工程,30%3,Java语言的30%,“数据库系统原理(第2版)”李建中王珊电子工业出版社2004年9月,“软件工程40%与应用“宾东北大学出版社,2007年”Java编程思想(第4版)“(美)埃克尔着,陈昊鹏机械工业出版社,2007年6月1日081 203计算机应用技术1,翻译的两个数据库,软件工程40% 30%3,Java语言的30%,“数据库系统原理(第2版)”李建中王珊电子工业出版社2004年9月,“软件工程与应用”滨东北大学出版社,2007年“Java编程思想(第4版)“(美)埃克尔着,陈昊鹏机械工业出版社,2007年6月1日翻译

答案:

1可能发生空指针异常。因为从session中取出key为“username”可能是null如果s是null那么slenght();会爆空指针异常。

2(1)加载JDBC驱动程序,通过javalangClass类的静态方法forName(String className)实现。

(2)提供JDBC连接的URL,一般可以从驱动包中找到。

(3)创建数据库的连接,需要向javasqlDriverManager请求并获得Connection对象。使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。

(4)创建一个Statement,要执行SQL语句,必须获得javasqlStatement实例。A执行静态SQL语句。B通常通过Statement实例实现。执行动态SQL语句。通常通过PreparedStatement实例实现。C执行数据库存储过程。通常通过CallableStatement实例实现。

(5)执行SQL语句Statement接口提供了三种执行SQL语句的方法:executeQuery executeUpdate

和execute

(6)处理结果:执行更新返回的是本次 *** 作影响到的记录数。执行查询返回的结果是一个ResultSet对象。

(7)关闭JDBC对象

3初始化阶段 调用init()方法

响应客户请求阶段调用service()方法

终止阶段调用destroy()方法

4MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的 *** 作

5sendRedirect()是跳转。

forward()是转发。

不同点:(1)sendRedirect(“目的地”) 是response 对象的方法,forward(request,response)是requestgetRequestDispatcher("目的地") 方法 返回的对象 requestDispatcher 的方法;

(2)sendRedirect() 在客户端运行,会产生新的请求,地址栏显示新地址,forward()在服务端运行,地址栏的地址不变;

(3)sendRedirect() 跳转之后,不能获取request中的对象,而forward()可以获取;

(4)forward()速度更快。

相同点:都能实现页面跳转或者是服务器资源的跳转;

6错误。有不是成对出现的比如:<img src="" />

7JSP注释

<%----%> 是不输出到客户端的注释符。

<%!----%> 是输出到客户端的注释符。

指令元素

<%@ page contentType=”text/html” %> 设置指定页面内容类型

<%@ include %> 在翻译阶段引入一个文件

<%@ taglib %> 声明一个页面使用的,包含自定义行为的标记库。

行为元素

<jsp:useBean> 使一个JavaBeans组件在该页中可用

<jsp:setProperty> 设置JavaBeans的属性值

<jsp:forward> 将对请求的处理转交给一个servlet或JSP页面

脚本元素

<%this is a scriptlet%> 嵌入脚本代码

表达式元素

<%= this is an expression%> 嵌入java表达式

方法声明

<%! this is a declaration%> 用于在JSP页面的实现类中声明变量和方法

一下把200道都拿出来放到ArrayList,每次抽取10个200以内的随机数(最好取listsize())从list拿对应的题给出去。

另一种是用数据库,每个用户有自己的考试记录表,每做完10题提交一次记录到做过的题里再从数据库中随机取10个没做过的再记录到数据库,直到200题都做完。

两种方法思路基本一致。

区别就是在内存里搞还是在数据库里搞

一般需从三点入手。

一、程序本身支持高并发。

简单来说就是要优化我们的代码。

1、避免使用错误的方式,尽量不用instanceof做条件判断,不要将数组声明为:public static final 。

2、使用java中效率高的类,比如尽量使用HashMap 和ArrayList ,除非必要,否则不推荐使用HashTable和Vector ,后者由于使用同步机制,而导致了性能的开销。

3、尽量指定类的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如javalangString。为String类指定final防止了人们覆盖length()方法。另外,如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50% 。

4、尽量重用对象,避免频繁的使用new对象。对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于工具类可以使用静态方法的方式访问。

用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法。clone()方法不会调用任何类构造函数。

在使用设计模式(Design Pattern)的场合,如果用Factory模式创建对象,则改用clone()方法创建新的对象实

例非常简单。例如,

Java代码  收藏代码

下面是Factory模式的一个典型实现:   

public static Credit getNewCredit() {  

    return new Credit();  

}   

改进后的代码使用clone()方法,如下所示:  

private static Credit BaseCredit = new Credit();  

public static Credit getNewCredit() {  

    return (Credit) BaseCreditclone();  

}

上面的思路对于数组处理同样很有用。

5、特别是String 对象的使用中,出现字符串连接情况时应用StringBuffer 代替。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。

6、StringBuffer 的使用:StringBuffer表示了可变的、可写的字符串。

它有三个构造方法 :

StringBuffer ();            //默认分配16个字符的空间  

StringBuffer (int size);  //分配size个字符的空间  

StringBuffer (String str);  //分配16个字符+strlength()个字符空间

你可以通过StringBuffer的构造函数来设定它的初始化容量,这样可以明显地提升性能。这里提到的构造函数是StringBuffer(int length),length参数表示当前的StringBuffer能保持的字符数量。你也可以使用ensureCapacity(int minimumcapacity)方法在StringBuffer对象创建之后设置它的容量。首先我们看看StringBuffer的缺省行为,然 后再找出一条更好的提升性能的途径。

StringBuffer在内部维护一个字符数组,当你使用缺省的构造函数来创建StringBuffer对象的时候,因为没有设置初始化字符长度,StringBuffer的容量被初始化为16个字符,也就是说缺省容量就是16个字符。当StringBuffer达到最大容量 的时候,它会将自身容量增加到当前的2倍再加2,也就是(2旧值+2)。如果你使用缺省值,初始化之后接着往里面追 加字符,在你追加到第16个字符的时候它会将容量增加到34(216+2),当追加到34个字符的时候就会将容量增加到 70(234+2)。无论何事只要StringBuffer到达它的最大容量它就不得不创建一个新的字符数组然后重新将旧字符和 新字符都拷贝一遍――这也太昂贵了点。所以总是给StringBuffer设置一个合理的初始化容量值是错不了的,这样会带来 立竿见影的性能增益。

StringBuffer初始化过程的调整的作用由此可见一斑。所以,使用一个合适的容量值来初始化StringBuffer永远都是一个最佳的建议。

7、尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化。请参见《尽可能使用堆栈变量》。

8、不要重复初始化变量  默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和double变量设置成00,逻辑值设置成false。当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键词创建一个对象时,构造函数链中的所有构造函数都会被自动调用。

9、在JAVA + ORACLE 的应用系统开发中,java中内嵌的SQL语句尽量使用大写的形式,以减轻ORACLE解析器的解析负担。

10、Java 编程过程中,进行数据库连接、I/O流 *** 作时务必小心,在使用完毕后,即使关闭以释放资源。因为对这些大对象的 *** 作会造成系统大的开销,稍有不慎,会导致严重的后果。

11、由于JVM的有其自身的GC机制,不需要程序开发者的过多考虑,从一定程度上减轻了开发者负担,但同时也遗漏了隐患,过分的创建对象会消耗系统的大量内存,严重时会导致内存泄露,因此,保证过期对象的及时回收具有重要意义。JVM回收垃圾的条件是:对象不在被引用;然而,JVM的GC并非十分的机智,即使对象满足了垃圾回收的条件也不一定会被立即回收。所以,建议我们在对象使用完毕,应手动置成null。

12、在使用同步机制时,应尽量使用方法同步代替代码块同步。

13、尽量减少对变量的重复计算

例如:

for(int i = 0;i < listsize; i ++) {  

            …  

}  

应替换为:  

for(int i = 0,int len = listsize();i < len; i ++) {  

            …  

}

14、尽量采用lazy loading 的策略,即在需要的时候才开始创建。

例如:    

String str = “aaa”;  

if(i == 1) {  

    listadd(str);  

}  

应替换为:  

if(i == 1) {  

    String str = “aaa”;  

    listadd(str);  

}

15、慎用异常

异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。

16、不要在循环中使用trycatch,应把其放置在最外层。

17、合理的使用Java类 javautilVector。

简单地说,一个Vector就是一个javalangObject实例的数组。Vector与数组相似,它的元素可以通过整数形式的索引访问。但是,Vector类型的对象在创建之后,对象的大小能够根据元素的增加或者删除而扩展、缩小。请考虑下面这个向Vector加入元素的例子:

Java代码  收藏代码

Object obj = new Object();  

Vector v = new Vector(100000);  

for(int I=0;  

I<100000; I++) { vadd(0,obj); }

以上就是关于IBM认证数据库考试试题全部的内容,包括:IBM认证数据库考试试题、求东北大学《软件工程及应用》《Java编程思想(第4版)》《数据库系统原理(第2版)》考试题目、Java web相关的几个问题,求解题,不要太啰嗦也不要太简洁,考试卷上能高分是重点,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9845491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存