java基础试题答案.docx
《java基础试题答案.docx》由会员分享,可在线阅读,更多相关《java基础试题答案.docx(20页珍藏版)》请在冰豆网上搜索。
java基础试题答案
Java试题
一、选择题(单选每题2分共20分)
1.下列有关Java语言的叙述中,正确的是
A、Java是不区分大小写的
B、源文件名与public类型的类名必须相同
C、源文件名其扩展名为.jar
D、源文件中public类的数目不限
2.下列关于栈的叙述正确的是
A)栈是非线性结构 B)栈是一种树状结构
C)栈具有先进先出的特征 D)栈具有后进先出的特征
3.在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送
A、调用语句B、命令C、口令D、消息
4.下列语句执行后,k的值为()
Inti=6,j=8,k=10,m=7;
if(!
(i>j|m>k++))k++;
A、12B、11C、10D、9
5.关于下列程序段的输出结果,说法正确的是
publicclassMyClass{
staticinti;
publicstaticvoidmain(Stringargv[]){
System.out.println(i);
}
}
A、有错误,变量i没有初始化。
B、null
C、1
D、0
6.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?
AArrayListmyList=newObject();
BListmyList=newArrayList();
CArrayListmyList=newList();
DListmyList=newList();
7.下列赋值语句中错误的是
A、floatf=11.1f
B、doubled=5.3E12;
C、charc='\r';
D、bytebb=433;范围是-128到127之间
8.下列哪个类声明是正确的?
A)abstractfinalclassHI{···}B)abstractprivatemove(){···}
C)protectedprivatenumber;D)publicabstractclassCar{···}
9.下列叙述中,错误的是
A、接口与类的层次无关
B、通过接口说明类所实现的方法
C、通过接口可了解对象的交互界面
D、接口与存储空间有关
10.下列代码的执行结果是:
publicclassTest5{
publicstaticvoidmain(Stringargs[]){
Strings1=newString("hello");
Strings2=newString("hello");
System.out.print(s1==s2);
System.out.print(",");
System.out.println(s1.equals(s2));
}
}
A、true,false
B、true,true
C、false,true
D、false,false
二、填空(每空2分共12分)
1Java语言中____________是所有类的根。
object
2下面程序对数组中每个元素赋值,然后按逆序输出.请在横线处填入适当内容,使程序能正常运行.
importjava.io.*;
publicclassArrayTest{
publicstaticvoidmain(Stringargs[]){
inti;
inta[]=newint[5];
for(i=0;i<5;i++)
a[i]=i;
for(____i=4____;i>=0;i--)
System.out.println("a["+i+"]="+a[i]);
}
}
3.__final____类型数据不可以做类型转换。
4.每个Java应用程序可以包括许多方法,但必须有且只能有一个___主方法____方法。
5.在一个MVC用户界面中,存在三个通讯对象,它们分别是:
模型、__视图______和控件。
6.以下程序的输出结果是_sum=45_________________
publicclassko6_9
{
publicstaticvoidmain(Stringargs[])
{
intsum=0;
intko[][]={{1,2,3},{4,5,6},{7,8,9}};
for(intn=0;n<3;n++)
for(intm=0;m<3;m++)
sum+=ko[n][m];
System.out.println("sum="+sum);
}
}
三、问答题(每题3分共21分)
1.&和&&的区别?
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作
2.说出ArrayList,Vector,LinkedList的存储性能和特性?
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
LinkedList也是线程不安全的,LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。
ArrayList和vector都是数组形式的存储方式访问性能好
LinkedList是双向链表对数据的操作效率高
3.抽象类和接口的区别?
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4.抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为publicabstract类型。
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是publicstaticfinal类型,并且默认即为publicstaticfinal类型。
7.一个类可以实现多个接口,但只能继承一个抽象类。
定义的关键字不同,
抽象类中可以有非抽象方法,抽象方法必须的有方法体。
继承抽象类的非抽象子类比需重写抽象方法。
接口中定义的方法不可以有方法体,实现改接口的类必须实现该接口中的方法。
4.什么是类的返射机制?
Java反射机制是Java语言被视为准动态语言的关键性质。
Java反射机制的核心就是允许在运行时通过JavaReflectionAPIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。
实现的功能
1.在运行时判断任意一个对象所属的类2.在运行时构造任意一个类的对象3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)4.在运行时调用任意一个对象的方法(*****注意:
前提都是在运行时,而不是在编译时)
5.JSP中有哪些内置对象?
pagecontext,request,response,session,application,out,page,config,exception
6.hibernate的核心配置文件是什么及其作用?
Hibernate-config.xml
作用是配置数据源信息,管理数据库表映射文件
7.在struts中如何通过一个url找到一个action,它的核心配置文件是什么?
Struts1中的核心文件是Struts-config.xml文件中定义了action的相应配置包括映射url,返回地址,formbean等
Struts2中的文件时struts.xml文件中也是定义了相应配置包括请求的路径通过filterDispatcher将相应的路径解析出来调用相应action
四、程序编写(7分)
编写一个程序,测试求和公式:
n*(n+1)/2=1+2+3+.....+n
产生一个0--100之间的随机整数,把所有1--n的整数累加,计算公式n*(n+1)/2的值,然后把这两个值打印
出来看它们是否相等。
输出形式如下:
n=14(随机产生的)
sum=105
n*(n+1)/2=105
publicclassTest(){
publicvoidstaticmain(String[]args){
intn=(int)Math.Ceil(Math.random()*100);
System.out.println(“n=”+n);
Int[]list=newint[n]();
Intsum=0;
For(inti=1;i<=n;i++){
List[i-1]=i;
Sum+=I;
}
System.out.println(“sum=”+sum);
System.out.println(“n*(n+1)/2=”+n+(n+1)/2);
}}
Oracle试题
一、选择题(单选每题2分共8分)
1.SQL语句中修改表结构的命令是______。
A、MODIFYTABLEB、MODIFYSTRUCTUREC、ALTERTABLED、ALTERSTRUCTURE
2.从数据库中删除表的命令是______。
A、DROPTABLEB、ALTERTABLEC、DELETETABLED、USE
3.设有图书管理数据库:
图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))
读者(借书证号C(4),单位C(8),姓名C(6),性别C
(2),职称C(6),地址C(20))
借阅(借书证号C(4),总编号C(6),借书日期D(8))
对于图书管理数据库,查询0001号借书证的读者姓名和所借图书的书名。
SQL语句正确的是______。
SELECT姓名,书名FROM借阅,图书,读者WHERE;
借阅.借书证号="0001"AND;
______
______
A、图书.总编号=借阅.总编号AND;
读者.借书证号=借阅.借书证号
B、图书.分类号=借阅.分类号AND;
读者.借书证号=借阅.借书证号
C、读者.总编号=借阅.总编号AND;
读者.借书证号=借阅.借书证号
D、图书.总编号=借阅.总编号AND;
读者.书名=借阅.书名
4.设有图书管理数据库:
图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))
读者(借书证号C(4),单位C(8),姓名C(6),性别C
(2),职称C(6),地址C(20))
借阅(借书证号C(4),总编号C(6),借书日期D(8))
对于图书管理数据库,分别求出各个单位当前借阅图书的读者人次。
下面的SQL语句正确的是______。
SELECT单位,______FROM借阅,读者WHERE;
借阅.借书证号=读者.借书证号______
A、COUNT(借阅.借书证号)GROUPBY单位B、SUM(借阅.借书证号)GROUPBY单位
C、COUNT(借阅.借书证号)ORDERBY单位D、COUNT(借阅.借书证号)HAVING单位
二、问答题(每题4分共16分)
1.比较truncate和delete命令?
1、TRUNCATE在各种表上无论是大的还是小的都非常快。
如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
3、TRUNCATE将重新设置高水平线和所有的索引。
在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
4、TRUNCATE不能触发任何DELETE触发器。
5、不能授予任何人清空他人的表的权限。
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
7、不能清空父表。
2.使用索引的理由?
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
3.触发器分为事前触发和事后触发,这两种触发有和区别。
语句级触发和行级触发有何区别?
事前触发:
发生在触发事件发生之前
事后触发:
发生在触发事件发生之后
语句级触发:
在执行语句前或后执行
行级触发:
每当触发器影响数据库表中一行记录后就发生一次
4.存储过程和函数的区别?
存储过程是用户自定义的针对特定表的语句集合它涉及到特定表与对象之间的关系,用户可以调用
函数是数据库中已经写好的方法一定有返回值不涉及用户特定表
三、查询语句(每题4分共8分)
1.设有图书管理数据库:
图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))
1)检索书价在15元至25元(含15元和25元)之间的图书的书名、作者、书价和分类号,结果按分类号升序排序。
Select*from图书where单价between15and25orderby分类号asc
2)为图书表建立一个视图.
2.已知一个表(students)的结构为:
姓名 科目 成绩
张三 语文 20
张三 数学 30
张三 英语 50
李四 语文 70
李四 数学 60
李四 英语 90
怎样通过select语句把他变成以下结构:
姓名 语文 数学 英语
张三 20 30 50
李四 70 60 90
Select姓名,
sum(selecta.成绩fromstudentsawhere科目=‘语文’anda.姓名=students.姓名)as语文,
sum(selectb.成绩fromstudentsbwhere科目=’数学’andb.姓名=students.姓名)as数学,
sum(selectc.成绩fromstudentscwhere科目=‘英语’andc.姓名=students.姓名)as英语
Fromstudentsgroupby姓名
Java开发基础试题(一共20个小题,每题5分20*5=100)
1.如何将String转换为Integer?
如何将Integer转换为String?
Integer.ParseInt(String)Integer.toString()
2.如何获得当前时间?
格式为yyyy-MM-ddHH:
mm:
ss?
Datedate=newDate();
SimpleDateFormatesdf=newSimpleDateFormate(“yyyy-MM-ddHH:
mm:
ss”);
Sdf.parse(date);
3.作用域public,private,protected有什么区别?
作用域当前类同一package子孙类其他package
public√√√√
protected√√√×
private√×××
4.阐述一下什么是MVC?
M模型层v视图层c控制器层
通过控制器层将数据访问层和视图层分离开实现了解耦合提高了程序的可维护性和可扩展性。
5.JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:
include动作实现 includepage="included.jsp"flush="true"/>它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@includefile="included.htm"%>
试题一(两个小题,每个10分10*2=20分)
请回答下述数据库设计问题.
试题一:
请回答下述SQL语言问题.(六个小题,每题5分6*5=30分)
问题描述:
为管理岗位业务培训信息,建立3个表:
S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN分别代表课程编号,课程名称
SC(S#,C#,G)S#,C#,G分别代表学号,所选修的课程编号,学习成绩
1,使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
SELECTS.S#,S.SNFROMSWHERES.S#IN(SELECTSC.S#FROMC,SCWHEREC.CN=’税收基础’ANDSC.C#=C.C#)
2,使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
SELECTS.SN,S.SDFROMSWHERES.S#IN(SELECTSC.S#FROMSC,CWHEREC.C#=’C2’ANDC.C#=SC.C#)
3,使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
SELECTS.SN,S.SDFROMSWHERES.S#NOTIN(SELECTSC.S#FROMSC,WHEREC.C#=’C5’ANDC.C#=SC.C#)
4,使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
SELECTS.SN,S.SDFROMSWHERES.S#IN(SELECTSC.S#,COUNT(*)FROMSC,CWHERESC.C#=C.C#GROUPBYSC.S#HAVINGCOUNT(*)=(SELECTCOUNT(*)FROMC))
5,查询选修了课程的学员人数
SELECTCOUNT(*)FROMSWHERES.S#IN(SELECTSC.S#FROMSC,CWHERESC.C#=C.C#GROUPBYSC.S#)
6,查询选修课程超过5门的学员学号和所属单位
SELECTS.SN,S.SDFROMSWHERES.S#IN(SELECTSC.S#,COUNT(*)FROMSCGROUPBYSC.S#HAVINGCOUNT(*)>5)
试题二:
请回答下述存储过程问题(两个小题,每题5分5*2=10分)
问题1:
写一个存储过程,用游标来作,声明是在begin后还是在前?
用完后是否要关闭?
问题2:
存储过程和函数的区别
他俩最大的区别就是存储过程可以没有返回值,而函数必须有返回值
存储过程是用户自定义的针对某个表操作的语句集合,它涉及特定用户表及对象之间的关系他可以被用户调用。
函数是数据库已定义好的方法必须有返回值他不涉及特定用户表
JAVA部分
一、选择题(每小题3分,共18分)
1、以下哪个Hibernate主键生成策略是实现主键按数值顺序递增的?
(3分)
A.increment
B.identity
C.sequence
D.native
2、请说明下面的程序执行后,输出哪个结果是正确的?
(3分)
publicclassQ{
publicstaticvoidmain(Stringargv[]){
intanar[]=newint[5];
System.out.println(anar[0]);
}
}
1)Error:
anarisreferencedbeforeitisinitialized
2)null
3)0
4)5
3、在jsp中,page指令的()属性用来引入需要的包或类。
A.extends
B.import
C.language
D.contentType
4、在下面程序的第6行补充上下列哪个方法,会导致在编译过程中发生错误?
1)classSuper{
2)publicfloatgetNum(){
3)return3.0f;
4)}
5)publicclassSubextendsSuper{
6)
7)}
A.publicfloatgetNum(){return4.0f;}
B.publicvoidgetNum(){}
C.publicvoidgetNum(doubled){}
D.publicdoublegetNum(floatd){return4.0d;}
5、执行下面的代码,输出结果是什么?
inti=1;
switch(i){
case0:
System.out.println("zero");
break;
case1:
System.out.println("one");
case2:
System.out.println("two");
default:
System.out.println("default");
}
1)one
2)one,default
3)one,two,default
4)default