JAVA考试题
一、 填空题:(15个×2)
1、 面向对象的特征有(至少写出三个): 封装、继承、多态
2、 Map采用 哈希算法 机制放置数据。
3、 c执行下列代码之后,st1.i和st2.i的值分别是: C里面没有这种语法
class Test {
static int I=47;
}
Test st1 = new StaticTest();
Test st2 = new StaticTest();
Test.i++;
4、 Java语言中,有一个类是所有类和接口的父类,该类为: Object
5、 Java基本数据类型的大小是否会根据编译环境的不同而改变? 不会
6、 boolean型实例变量的默认初始值是: false Boolean型实例变量的默认初始值是: null
7、 Jsp页面显示到浏览器,过程是 jsp页面被翻译成servlet、调用编译器进行编译生成class文件,响应客户端请求 。 。
8、 开发管理工作流程分为五个过程: 、 、 、 、 。
9、 Struts中action执行excute()方法返回 ActionForward 对象。
10、 Collection的四种主要接口是 List ,Set , SortedSet、 BeanContext ;
11、 Select region,avg(log_size) from Location group by region having region != ‘sydney’ 请修改上述SQL语句,避免使用having子句,用where子句替换:
Select region,avg(log_size) from Location where region!=’sydney’ group by region
12、 表Emp(id varchar(12),name varchar(20), deptNo varchar(12)),Select id,name,deptno from Emp where name=’110’ or deptno=’911’, 用union语句替换 or 策略:
Select id,name,deptno from Emp where name=’110’ union deptno=’911’
13、 现在常用jsp网站的开发技术,列举两种 Servlet 、 struts
14、 3.14%2.5= 0.6400000000000001 ;
15、 Class Base{int x=1; void point(){System.out.println(“base”);}}
Class Derive extends Base{int x=2; void point(){System.out.println(“derive”);}}
Public class confusions{
public static void main(String [] orgs){
Base obj = new Derive();
obj.point();
System.out.println(obj.x);}
}输出结果为: derive 1
二、 选择题:(10个×3)
1、int a = 'A',请问System.out.println(a)打印出什么?A
A、65 B、A C、a D、97
2、下面的代码段中,执行之后i 和j 的值是什么? C
int i = 1;
int j;
j = i++;
A、1,1 B、1,2 C、2,1 D、2,2
3、已知表达式int m[] = {0, 1, 2, 3, 4, 5, 6 };下面哪个表达式的值与数组下标量总数相等? A
A、m.length()
B、m.length
C、m.length()+1
D、m.length+1
4、已知如下的命令执行 java MyTest a b c, 请问哪个语句是正确的?C
A、args[0] = "MyTest a b c"
B、args[0] = "MyTest"
C、args[0] = "a"
D、args[1]= 'a'
5、已知如下代码:C
public class Test{
long a[] = new long[10];
public static void main ( String arg[] ) {
System.out.println ( a[6] );
}
}
请问哪个语句是正确的?
A、Output is null.
B、Output is 0.
C、When compile, some error will occur.
D、When running, some error will occur.
6、下面哪几个函数是public void example(){...}的重载函数?ABD
A、 public void example( int m){...} B、public int example(){...}
C、public void example2(){...} D、 public int example ( int m, float f){...}
7、已知如下定义:String s = "story";下面哪个表达式是合法的?A D
A、 s += "books"; B、char c = s[1]; C、int len = s.length; D、String t = s.toLowerCase();
8、Which methods can be used by any threads in any times? D
A、notify() B、wait() C、notifyAll() D、sleep() E、yield() F、synchronized(this)
9、以下哪个方法用于定义线程的执行体? C
A、 start() B、init() C、run() D、main() E、synchronized()
10、Consider the following code: CD
Integer s = new Integer(9);
Integer t = new Integer(9);
Long u = new Long(9);
Which test would return true?
A、(s==u)
B、(s==t)
C、(s.equals(t))
D、(s.equals(9))
E、(s.equals(new Integer(9))
三、 简答题:(3个 )
1. 简述String以及StringBuffer的区别(6`)
回答:(1)String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承
(2)StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
2. Servlet的生命周期(6`)
(1) 加载实例化
Servlet容器负责加载和实例化Servlet。
(2) 初始化
在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。
(3) 请求处理
Servlet容器调用Servlet的service()方法对请求进行处理。
(4) 服务终止
当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。
3. 简述Struts流程。(8`)
采用Struts框架的web应用,在web应用启动时就会加载并初始化ActionServlet,ActionServlet从struts- config.xml文件中读取配置信息,把它们存放到各个配置对象中,例如Action的映射信息存放在ActionMapping对象中。
当ActionServlet接收到一个客户请求时,将执行如下流程:
(1).检索和用户请求相匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效信息。
(2).如ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
(3).根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的Validate()方法。
(4).如果ActionForm的Validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。
(5).ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
(6).Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
(7).ActionForward对象指向的JSP组件生成动态网页,返回给客户。
四、 编程题:(3个)
1. 请编写程序打印下列图案: ********* (5`)
*******
*****
***
*
程序如下:
/**
* 倒三角形类
* @author wangen
*
*/
public class Daosanjiao{
public static void main(String[] args){
//打印倒三角形
new Daosanjiao().daosanjiao(9);
}
/**
* 打印倒三角形
* @param n
*/
public void daosanjiao(int n){
int i=0;
for(i=n;i>=1;i-=2){
//控制空格符的输出
for(int k=(n-i)/2;k>=1;k--)
System.out.print(" ");
//控制星号的输出
for(int j=i;j>=1;j--)
System.out.print("*");
System.out.println ();
}
}
}
2. 自定义一个字符串函数,其功能是随机产生一个由字母和数字组成的任意位数的字符串。(5`)
程序如下:
import java.util.Random;
/**
* 随机串类(测试使用,故串的长度被限制在100之内)
* @author wangen
*
*/
public class RanStr {
public static void main(String[] args){
System.out.println(new RanStr().ranStr());
}
public String ranStr(){
//随机串构成的字母集合
final String strs="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//随机串的数字构成集合
final String nums="0123456789";
Random r1 = new Random();
while(true){
//数字串的Buffer。
StringBuffer ranStr=new StringBuffer();
//声明随机串的构成标志,sf代表字母标志,nf代表数字标志
boolean sf=false;
boolean nf=false;
//控制随机串的长度不能超过100
int n=r1.nextInt(100);
//如果随机串的长度不能大于2,也就是不能由字母和数组组成,故退出此次循环
if(n<2) continue;
//for循环,以生成随机串
for(int i=0;i<n;i++){
//随机生成标志,1为字母,2为数字
int flag=r1.nextInt(2);
//如果为1,则在ranStr追加一个字母
if(flag==1){
//将随机字母追加在ranStr
int randNum = r1.nextInt(strs.length());
ranStr.append(strs.substring(randNum, randNum+1));
sf=true;
//如果为0,则在ranStr追加一个数字
}else{
//将随机数字追加在ranStr
int randNum = r1.nextInt(nums.length());
ranStr.append(nums.substring(randNum, randNum+1));
nf=true;
}
}
//如果ranStr是字母和数组构成,则返回该串。
if(sf&&nf){
return ranStr.toString();
}else{
continue;
}
}
}
}
3. 简单写个机器人控制程序,一个控制器加两部机器人(类似就行,或者写出算法也可以。)(10`)