一、选择题(单选 每题2分 共20分)
1.下列有关Java语言的叙述中,正确的是
A、Java是不区分大小写的
B、源文件名与public类型的类名必须相同
C、源文件名其扩展名为.jar
D、源文件中public类的数目不限
2. 下列关于栈的叙述正确的是
A)栈是非线性结构 B)栈是一种树状结构
C)栈具有先进先出的特征 D)栈具有后进先出的特征
3. 在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送
A、调用语句 B、命令 C、口令 D、消息
4. 下列语句执行后,k的值为()
Int i=6,j=8,k=10,m=7;
if(!(i>j | m>k++)) k++;
A、 12 B、11 C 、10 D、 9
5. 关于下列程序段的输出结果,说法正确的是
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
A、有错误,变量i没有初始化。
B、null
C、1
D、0
6.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ?
A ArrayList myList=new Object();
B List myList=new ArrayList();
C ArrayList myList=new List();
D List myList=new List();
7. 下列赋值语句中错误的是
A、float f=11.1f
B、double d=5.3E12;
C、char c='\\r';
D、byte bb=433; 范围 是-128 到127 之间
8. 下列哪个类声明是正确的?
A)abstract final class HI{···} B)abstract private move(){···}
C)protected private number; D)public abstract class Car{···}
9. 下列叙述中,错误的是
A、接口与类的层次无关
B、通过接口说明类所实现的方法
C、通过接口可了解对象的交互界面
D、接口与存储空间有关
10. 下列代码的执行结果是:
public class Test5{
public static void main(String args[]){
String s1=new String("hello");
String s2=new String("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分)
1 Java语言中____________ 是所有类的根。object
2下面程序对数组中每个元素赋值,然后按逆序输出.请在横线处填入适当内容,使程序能正常运行.
import java.io.*;
public class ArrayTest{
public static void main(String args[]){
int i;
int a[] = new int[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_________________
public class ko6_9
{
public static void main(String args[])
{
int sum=0;
int ko[][]={{1,2,3},{4,5,6},{7,8,9}};
for(int n=0;n<3;n++)
for(int m=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类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
定义的关键字不同,
抽象类中可以有非抽象方法,抽象方法必须的有方法体。继承抽象类的非抽象子类比需重写抽象方法。
接口中定义的方法不可以有方法体,实现改接口的类必须实现该接口中的方法。
4.什么是类的返射机制?
Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的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 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 public class Test(){ public void static main(String[] args){ int n=(int)Math.Ceil(Math.random()*100); System.out.println(“n=”+n); Int[] list=new int[n](); Int sum=0; For(int i=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、MODIFY TABLE B、MODIFY STRUCTURE C、ALTER TABLE D、ALTER STRUCTURE 2. 从数据库中删除表的命令是______。 A、DROP TABLE B、ALTER TABLE C、DELETE TABLE D、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(借阅.借书证号) GROUP BY 单位 B、SUM(借阅.借书证号) GROUP BY 单位 C、COUNT(借阅.借书证号) ORDER BY 单位 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 单价 between 15 and 25 order by 分类号 asc 2)为图书表建立一个视图. 2.已知一个表(students)的结构为: 姓名 科目 成绩 张三 语文 20 张三 数学 30 张三 英语 50 李四 语文 70 李四 数学 60 李四 英语 90 怎样通过select语句把他变成以下结构: 姓名 语文 数学 英语 张三 20 30 50 李四 70 60 90 Select 姓名 , sum(select a.成绩 from students a where 科目=‘语文’ and a.姓名=students.姓名) as 语文, sum(select b.成绩 from students b where 科目=’数学’ and b.姓名=students.姓名) as 数学, sum(select c.成绩 from students c where 科目=‘英语’ and c.姓名=students.姓名) as 英语 From students group by 姓名 Java 开发基础试题(一共20个小题,每题5分 20*5=100) 1.如何将String转换为Integer?如何将Integer转换为String? Integer.ParseInt(String) Integer.toString() 2.如何获得当前时间?格式为yyyy-MM-dd HH:mm:ss? Date date=new Date(); SimpleDateFormate sdf=new SimpleDateFormate(“yyyy-MM-dd HH: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动作实现 试题一(两个小题,每个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嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 SELECT S.S# , S.SN FROM S WHERE S.S# IN (SELECT SC.S# FROM C,SC WHERE C.CN=’税收基础’ AND SC.C#=C.C#) 2,使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位 SELECT S.SN , S.SD FROM S WHERE S.S# IN (SELECT SC.S# FROM SC , C WHERE C.C#=’C2’ AND C.C#=SC.C#) 3,使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位 SELECT S.SN,S.SD FROM S WHERE S.S# NOT IN (SELECT SC.S# FROM SC , WHERE C.C#=’C5’ AND C.C#=SC.C#) 4,使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 SELECT S.SN,S.SD FROM S WHERE S.S# IN ( SELECT SC.S#,COUNT(*) FROM SC,C WHERE SC.C#=C.C# GROUP BY SC.S# HAVING COUNT(*) =(SELECT COUNT(*) FROM C)) 5,查询选修了课程的学员人数 SELECT COUNT(*) FROM S WHERE S.S# IN (SELECT SC.S# FROM SC,C WHERE SC.C#=C.C# GROUP BY SC.S# ) 6,查询选修课程超过5门的学员学号和所属单位 SELECT S.SN,S.SD FROM S WHERE S.S# IN ( SELECT SC.S# ,COUNT(*) FROM SC GROUP BY SC.S# HAVING COUNT(*)>5) 试题二: 请回答下述存储过程问题(两个小题,每题5分 5*2=10分) 问题1:写一个存储过程,用游标来作,声明是在begin后还是在前?用完后是否要关闭? 问题2:存储过程和函数的区别 他俩最大的区别就是存储过程可以没有返回值,而函数必须有返回值 存储过程是用户自定义的针对某个表操作的语句集合,它涉及特定用户表及对象之间的关系他可以被用户调用。 函数是数据库已定义好的方法必须有返回值他不涉及特定用户表 JAVA部分 一、选择题(每小题3分,共18分) 1、以下哪个Hibernate主键生成策略是实现主键按数值顺序递增的?(3分) A.increment B.identity C.sequence D.native 2、请说明下面的程序执行后,输出哪个结果是正确的? (3分) public class Q { public static void main(String argv[]){ int anar[]=new int[5]; System.out.println(anar[0]); } } 1) Error: anar is referenced before it is initialized 2) null 3) 0 4) 5 3、在jsp中,page指令的()属性用来引入需要的包或类。 A.extends B.import C.language D.contentType 4、在下面程序的第6行补充上下列哪个方法,会导致在编译过程中发生错误? 1) class Super{ 2) public float getNum(){ 3) return 3.0f; 4) } 5) public class Sub extends Super{ 6) 7) } A.public float getNum(){return 4.0f;} B.public void getNum(){} C.public void getNum(double d){} D.public double getNum(float d){return 4.0d;} 5、执行下面的代码,输出结果是什么? int i=1; switch (i) { case 0: System.out.println("zero"); break; case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } 1) one 2) one, default 3) one, two, default 4) default 二、填空(每小题3分,共9分) 1、Struts采用_jsp______作为MVC的视图,由ActionServlet具体指定的___action________作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为____struts-config.xml____的配置文件设置。 2、请写出下列程序段的执行结果。 public class Pass{ static int j=20; public static void main(String argv[]){ int i=10; Pass p = new Pass(); p.amethod(i); System.out.println(i); System.out.println(j); } public void amethod(int x){ x=x*2; j=j*2; } } 1) Error: amethod parameter does not match variable 2) 20 and 40 3) 10 and 40 4) 10, and 20 三、判断(第1题3分,第2题9分,共12分) 1、在同一个目录下有下面几个文件,如果没有编译Basw.java的情况下,尝试编译运行Class1.java,会发生什么? //Base.java package Base; class Base{ protected void amethod(){ System.out.println("amethod"); }//End of amethod }//End of class base package Class1; //Class1.java public class Class1 extends Base{ public static void main(String argv[]){ Base b = new Base(); b.amethod(); }//End of main }//End of Class1 1) Compile Error: Methods in Base not found 2) Compile Error: Unable to access protected method in base class 3) Compilation followed by the output "amethod" 4)Compile error: Superclass Class1.Base of class Class1.Class1 not found 2、当被访问文件不存在的情况下,下面的代码执行结果将是什么?(共9分) import java.io.*; public class Mine { public static void main(String argv[]){ Mine m=new Mine(); System.out.println(m.amethod()); } public int amethod() { try { FileInputStream dis=new FileInputStream("Hello.txt"); }catch (FileNotFoundException fne) { System.out.println("No such file found"); return -1; }catch(IOException ioe) { } finally{ System.out.println("Doing finally"); } return 0; } } 1) No such file found 2 No such file found ,-1 3) No such file found, Doing finally, -1 4) 0 四、简答(共11分) 1、代码String str=new String(“xyz”) 是创建了几个String Object,str==”xyz”和str.equals(“xyz”)相同吗?(4分) 创建了两个对象 ,==的是即判断两个对象的地址也判断两个对象的值 equals是判断两个对象的值 2、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?(3分) 会执行 在return之前 3、请回答下面哪个结果是正确的?(4分) String s=new String("Bicycle"); int iBegin=1; char iEnd=3; System.out.println(s.substring(iBegin,iEnd)); 1) Bic 2) ic 3) icy 4) error: no method matching substring(int,char) 五、冒泡排序:依次比较相邻的两个数,将大数放在前面,小数放在后面。第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后放,相当于气泡往上升,所以称作冒泡排序。请用JAVA语言编写一个完成冒泡排序算法的程序。(10分) public void maopao(){ int [] list=new int[]{1,2,5,3,4}; for(int i=0;i if(list[i]>list[j]){ list[i]=list[j]; list[j]=temp; } } } } ORACLE部分 1、以下代码用于java访问本机Oracle数据库、取得记录并输出到界面,数据库名是dbtest,用户名和密码都是sa,请将代码补充完整。(10分) …… Class.forName("oracle.jdbc.driver.OracleDriver__ "); Connection conn=DriverManager.getConnection(“_jdbc:oracle:thin:@localhost:1521:dbtest__”,”_sa”,”___sa__”); Jdbc:oracle:thin:@localhost:1521:dbtest Statement stmt=conn.createStatement(); String str="select * from "; ResultSet rs=stmt.executeQuery(__str_____); While(rs.next()) { …… } rs.close(); stmt.close(); conn.close(); 啊啊啊啊