首页 > 代码库 > JAVA软件工程师笔试试题

JAVA软件工程师笔试试题

JAVA软件工程师笔试试题

(考试时间:120分钟 试卷分值:150分 )

一、 逻辑推理题【10分】

 1、甲、乙、丙、丁四位同学中有一位同学为海啸灾区捐款1000元,当老师询问时,他们分别这样回答:

  甲:这1000元不是我捐的 

  乙:这1000元是丁捐的 

  丙:这1000元是乙捐的 

  丁:这1000元不是我捐的 

  这四人中只有一个人说了真话,由此可见这1000元是谁捐的( )。【2分】 

  A.甲 B.乙 C.丙 D.丁

2 甲、乙、丙三人是同一家公司的员工,他们的未婚妻ABC也都是这家公司的职员。知情者介绍说:“A的未婚夫是乙的好友,并在三个男子中最年轻;丙的年龄比C的未婚夫大。”依据该知情者提供的情况,我们可以推出三对组合分别是( )。 【3分】

  A.甲—A,乙—B,丙—

  B.甲—B,乙—A,丙—

  C甲—C乙—B丙—

  D.甲—A,乙—C,丙—B

3甲乙丙丁四人的车分别为白色、银色、蓝色和红色。在问到他们各自车的颜色时,

甲说:“乙的车不是白色。” 

乙说:“丙的车是红色的。”

丙说:“丁的车不是蓝色的。” ,

丁说:“甲、 乙、丙三人中有一个人的车是红色的,而且只有这个人说的是实话。”

如果丁说的是实话,那么以下说法正确的是(): 【2分】

A.甲的车是白色的,乙的车是银色的 B.乙的车是蓝色的,丙的车是红色的 

C.丙的车是白色的,丁的车是蓝色的 D.丁的车是银色的,甲的车是红色的

二、 基础理论题【20分】

1. Java是一种先___编译____后_ 解释_____运行的语言。(提示:填编译或者解释)1分】

2. 栈是____先进后出_________的线性表,队列是____先进先出_______的线性表。【2分】

3. 面向对象的基本特征___封装_____,__继承_______,___多态_______。【3分】

4. 事务包含4个基本特征,即ACID,它们分别指__原子性________,__一致性____,___隔离性_______,__持久性________2分】

5. Math.round(11.5)等于__12____。 Math.round(-11.5)等于__-11____。【2分】

6. Java中数据类型包括__基本数据类型_______引用数据类型________。【1分】

7. Java程序控制语句中的循环语法分___for_____while______do while___三种。【3分】

8. 构造方法__protected________ ( 能或者不能)publicprivateprotected修饰。【1分】

9. Java的访问控制有四种: __public___protected___friendly___private___2分】

10. AJAX的核心对象是__xmlHttpRequest____。【1分】

 

三、 JAVA基础题【45分】

  1. 下列选项中不属于java关键字的有 (         ) 【1分】

[A] TRUE  [B] sizeof

[C] const  [D] super  [E] void

  1. 下面哪些是合法的标识符 (         ) 【1分】

[A] $persons  [B] TwoUsers

[C] *point  [D] this  [E] _endline

  1. 下列选项中不是原始数据类型的有? (         ) 【1分】

[A]. short [B]. Boolean

[C]. Unit [D]. float

  1. 下列选项中那些语句片段会发生异常 【1分】

[A]  String s = "Gone with the wind";

String t = "good "; String k = s + t;

[B]  String s = "Gone with the wind";

String t; t = s[3] + "one";

[C]   String s = "Gone with the wind";

String standard = s.toUpperCase();

[D]   String s = "home directory";

String t = s - "directory";

  1. 以下选项中,合法的赋值语句是(       )【1分】
    1. a == 1;
    2. ++i;
    3. a = a + 1 = 5;
    4. y = (int)I;
  2. 以下选项中,代码执行完毕后输出结果是(       )【1分】

boolean bool = true;

if(bool = false) {

System.out.println(“a”);

} else if (bool) {

System.out.println(“b”);

} else if (!bool) {

System.out.println(“c”);

} else {

System.out.println(“d”);

}

  1. a
  2. b
  3. c
  4. d
  5. Compilation fails
  6. 以下选项中,正确的是(       )【1分】

public class Alpha1 {

public static void main( String[] args ) {

        boolean flag; int i=0;

        do {

            flag = false;

            System.out.println( i++ );

            flag = i < 10;

            continue;

         } while ( (flag)? true:false );

     }

 }

  1. 000000000
  2. 0123456789
  3. Compilation fails.
  4. The code runs with no output.
  5. The code enters an infinite loop.
  6. An exception is thrown at runtime.
  7. 以下代码片段执行后,正确输出的结果是(       )【1分】

public class Delta {

static boolean foo(char c) {

System.out.print(c);

return true;

}

public static void main( String[] argv ) {

 int i =0;

for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’)){

i++ ;

 foo(‘D’);

}

}

}

  1. ABDCBDCB
  2. ABCDABCD
  3. Compilation fails.
  4. An exception is thrown at runtime. 
  1. 有以下代码片段

if (x>0) {

 System.out.println("first"); 

}

else if (x>-3) {

  System.out.println("second");

 }

else { 

System.out.println("third"); 

}

x的取值在什么范围内时将打印字符串"second"?

A. x > 0

B. x > -3

C. x <= -3

D. x <= 0 & x > -3

 

  1. 有以下代码片段

1) class Person {

2)  public void printValue(int i, int j) {/*…*/ }

3)  public void printValue(int i){/*...*/ }

4) }

5) public class Teacher extends Person {

6)  public void printValue() {/*...*/ }

7)  public void printValue(int i) {/*...*/}

8) public static void main(String args[]){

9)  Person t = new Teacher();

Teacher t1 = new (Teacher) Person();  

10)       t.printValue(10);

11) } }

第十行加粗部分的声明将调用哪些方法? 

[A] on line 2 [B] on line 3

[C] on line 6 [D] on line 7  

  1. // point x处的哪些申明是句法上合法的      )【1分】

class Person {

  private int a;

  public int change(int m){ return m; }

  }

  public class Teacher extends Person {

  public int b;

  public static void main(String arg[]){

  Person p = new Person();

  Teacher t = new Teacher();

  int i;

  // point x

  }

  }

[A] i = m;  [B] i = b; 

[C] i = p.a;  [D] i = p.change(30);  [E] i = t.b. 

  1. 下列程序在执行完循环后的结果为【1分】

int i=1,j=10; 

do{ 

if(i++>--j)

    continue;

 } while(i<5);

 

  1. i = 6  j = 5
  2. i = 5 j = 5
  3. i = 6 j = 4
  4. i = 5 j = 6

 

  1. 判断下列声明是否正确,如果正确请标记(),错误请标记(×)【1分】

1.接口是可以继承接口  ( )     2.接口可以实现接口   ( )

3.接口可以声明为私有的( )     4. 是否可以继承String( )

5.抽象类可以实现接口  ( )     6.抽象类可以继承实体类( )

 

  1. 下列哪种定义接口的方式是正确的【1分】
    1. public interface A{ int a(); }
    2. public interface A implement B{}
    3. interface C { int a; }
    4. private interface D{}
    5. abstract interface E{}

 

  1. 下列说法正确的有【1分】
    1. 类中的构造函数不可省略
    2. 构造函数必须与class同名,但方法不能与class同名
    3. 构造函数在一个对象被new时执行
    4. 一个class只能定义一个构造函数

 

四、 问答题【30分】

  1. 说说数据连接池的工作机制是什么【3分】

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。

 调用:客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为 忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。

释放:当使用的池连接调用完成后,池驱动程序将此连接表记为空闲, 其他调用就可以使用这个连接。

 

  1. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制。【3分】

可以,但是只有一个类的访问修饰类型是public,且类名和文件名一样。

 

  1. forward redirect的区别。【3分】

forward是转发,浏览器地址不变,可以在request中存数据,效率高。

redirect是重定向,浏览器地址会变化,效率低。

    

  1. MVC的各个部分都有那些技术来实现?如何实现? 【3分】

Mmodel,模型,daoJavaBean

Vview,视图,jsp

C:control,控制,servlet

 

  1. 页面间对象传递的方法有哪几种3分】

放在request中,放在session中,放在application中。

 

  1. 说说jsp中动态INCLUDE与静态INCLUDE的区别?【3分】

动态include总是会检查页面的变化,可以带参数。

静态include只是包含页面,不会检查变化。

 

  1. jsp有哪些动作?作用分别是什么?3分】

<jsp:include>在页面被请求的时候引入一个文件。

<jsp:forward>把请求转到一个新的页面

<jsp:useBean>寻找或者实例化一个JavaBean

<jsp:setProperty>设置javabean 的属性

<jsp:getProperty>输出某个JavaBean的属性。

<jsp:plugin>生成插件。

 

  1. 抽象类abstract class和接口interface有什么区别? 【3分】

抽象类可以有构造方法,接口中不能由构造方法。

抽象类中可以有非抽象的方法,interface中的方法都是抽象的,并且默认是public abstract

抽象类中可以有普通的成员变量,interface中没有普通成员变量。

抽象类中可以包含静态方法,接口中不能包含静态方法。

一个类可以实现多个接口,但只能继承一个抽象类。

抽象类中可以有静态的成员变量,它的访问类型可以是任意的,但接口中只能是public static final类型,默认也是这样。

 

  1. 异常处理经常用到的throws,throw,try,catch,finally分别代表什么? 【3分】

try{}里面是需要被检测的代码,catch{}里面是处理异常的代码,finally{}里面是一定会执行的语句。

在功能(方法)上通过throws关键字来声明改功能可能会出现异常。

throw是指抛出一个具体的异常类型。

 

  1. 方法的重写Overriding和重载Overloading的区别是什么?【3分】

方法的重写是方法名,返回类型和参数列表都是一样。

方法的重载是返回类型一样,方法名一样,但参数列表不一样。

  

五、 SQL基础题(任选一题)25分】

题目一

假设有四个样表:

学生表:students(学号:stuNO,姓名:stuName,性别:stuSex,出生日期:stuBirthday,班级:className

教师表:techers(教师号:techNo,姓名:techName,性别:techSex,出生日期:techBirthday,职称:title,系别:department

课程表:course(课程号:couNo,课程名:couName,教师号:techNo

成绩表:score(学号:stuNO,课程号:couNo,成绩:score

1) 在学生表中检索与学号为2012040326的同学同年同日出生的所有学生的学号、姓名、出生日期5分】

select stuNO,stuName,stuBirthday

from students

where stuBirthday=

(select stuBirthday from students where stuNO=‘2012040326‘);

 

2) 查询所有学生的姓名、课程号、成绩【5分】

select s1.stuName,c.couNo,s2.score

from students s1,course c,score s2 

where c.couNo=s2.couNo and s.stuNO=s2.stuNO;

 

 

3) 在成绩表中查询平均成绩超过80分的学生学号、平均成绩5分】

select avg(score) a,stuNo

from score

group by stuNo

having a>80;

 

4) 查出‘计算机系’教师所教课程的成绩表【5分】

select * from score

where couNo in(

select couNo from course

where techNo=(select techNo from techers where department=‘计算机‘)

)

 

5) 查询所有任课教师的姓名和所在系【5分】

selecet techName,department from techers;

  

题目二

假设有四个样表:

雇员表:EMP(编号:EMPNO,姓名:ENAME,工作职位:JOB,领导编号:MGR,雇佣日期:HIREDATE,月薪(工资)SAL,奖金:COMM,部门编号:DEPTNO

部门表:Dept(部门编号:DEPTNO,部门名称:DNAME,部门位置:LOC

工资等级表:Salgrade(等级名称:GRADE,此等级的最低工资:LOSAL,此等级的最低工资:HISAL

奖金表:Bonus(雇员姓名:ENAME,工作职位:JOB,雇员工资:SAL,雇员奖金:COMM

1) 查询在部门30中员工的所有信息【3分】 

2) 检索每个员工奖金和工资的总和【5分】 

3) 找出没有奖金或者奖金低于500的员工【5分】

4) 列出员工表中每个部门的员工数(员工数必须大于3),和部门名称【6分】 

5) 检索每个月工资总数最少的那个部门的部门编号,部门名称,部门位置【6分】 

6) 检索每个部门,,每个职位的平均工资和平均奖金(平均值包括没有奖金),如果平均奖金大于300,显示“奖金不错”,如果平均奖金100300,显示“奖金一般”,如果平均奖金小于100,显示“基本没有奖金”,按部门编号降序,平均工资降序排列【选做】

六、 JAVA编程题【20分】

  1. 编写一个简单的实现冒泡排序的算法【10分】 
  1. 写一个或一组实现Singleton[单例]。【10分】 

 

JAVA软件工程师笔试试题