JAVA软件工程师面试笔试试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA软件工程师笔试试题
(考试时间:120分钟试卷分值:150分)
一、逻辑推理题【10分】
1、甲、乙、丙、丁四位同学中有一位同学为海啸灾区捐款1000元,当老师询问时,他们分别这样回答:
甲:这1000元不是我捐的
乙:这1000元是丁捐的
丙:这1000元是乙捐的
丁:这1000元不是我捐的
这四人中只有一个人说了真话,由此可见这1000元是谁捐的( A)。
【2分】
A.甲 B.乙 C.丙 D.丁
2、甲、乙、丙三人是同一家公司的员工,他们的未婚妻A、B、C也都是这家公司的职员。
知情者介绍说:“A的未婚夫是乙的好友,并在三个男子中最年轻;丙的年龄比C的未婚夫大。
”依据该知情者提供的情况,我们可以推出三对组合分别是(D )。
【3分】A.甲—A,乙—B,丙—C
B.甲—B,乙—A,丙—C
C.甲—C,乙—B,丙—A
D.甲—A,乙—C,丙—B
3、甲乙丙丁四人的车分别为白色、银色、蓝色和红色。
在问到他们各自车的颜色时,
甲说:“乙的车不是白色。
”
乙说:“丙的车是红色的。
”
丙说:“丁的车不是蓝色的。
”,
丁说:“甲、乙、丙三人中有一个人的车是红色的,而且只有这个人说的是实话。
”
如果丁说的是实话,那么以下说法正确的是(B):【2分】
A.甲的车是白色的,乙的车是银色的 B.乙的车是蓝色的,丙的车是红色的
C.丙的车是白色的,丁的车是蓝色的 D.丁的车是银色的,甲的车是红色的
二、基础理论题【20分】
1. Java是一种先__编译______后__解释_____运行的语言。
(提示:填编译或者解释)【1分】
2. 栈是____________先进后出_____的线性表,队列是__先进先出__________的线性表。
【2分】
3. 面向对象的基本特征____封装____,_继承________,__多肽________。
【3分】
4. 事务包含4个基本特征,即ACID,它们分别指__________,__________,__________,__________【2分】
5. Math.round(11.5)等于_12.0_____。
Math.round(-11.5)等于_-11.0_____。
【2分】
6. Java中数据类型包括_______简单数据类型______和__引用数据类型____________。
【1分】
7. Java程序控制语句中的循环语法分____for____,__while______和__do_while______三种。
【3分】
8. 构造方法____不能______ ( 能或者不能)被public、private、protected修饰。
【1分】
9. Java的访问控制有四种:public ______、_protected_____、_friendly_____、___private___。
【2分】
10. AJAX的核心对象是_____________。
【1分】
三、JAVA基础题【45分】
1.下列选项中不属于java关键字的有 ( AB )【1分】
[A] TRUE [B] sizeof
[C] const [D] super [E] void
2.下面哪些是合法的标识符 ( ABE )【1分】
[A] $persons [B] TwoUsers
[C] *point [D] this [E] _endline
3.下列选项中不是原始数据类型的有? ( c )【1分】
[A]. short [B]. Boolean
[C]. Unit [D]. float
4.下列选项中那些语句片段会发生异常【1分】BD
[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";
5.以下选项中,合法的赋值语句是( bd )【1分】
A. a == 1;
B. ++i;
C. a = a + 1 = 5;
D. y = (int)I;
6.以下选项中,代码执行完毕后输出结果是( c )【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”);
}
A. a
B. b
C. c
D. d
E. Compilation fails
7.以下选项中,正确的是( B )【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 );
}
}
A. 000000000
B. 0123456789
C. Compilation fails.
D. The code runs with no output.
E. The code enters an infinite loop.
F. An exception is thrown at runtime.
8.以下代码片段执行后,正确输出的结果是( )【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’);
}
}
}
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
9.有以下代码片段
if (x>0) {
System.out.println("first");
}
else if (x>-3) {
System.out.println("second");
}
else {
System.out.println("third");
}
x的取值在什么范围内时将打印字符串"second"?D
A. x > 0
B. x > -3
C. x <= -3
D. x <= 0 & x > -3
10.有以下代码片段
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) } }
第十行加粗部分的声明将调用哪些方法? BD
[A] on line 2 [B] on line 3
[C] on line 6 [D] on line 7
11. 在// 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();
T eacher 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.
12. 下列程序在执行完循环后的结果为【1分】D
int i=1,j=10;
do{
if(i++>--j)
continue;
} while(i<5);
A. i = 6 j = 5
B. i = 5 j = 5
C. i = 6 j = 4
D. i = 5 j = 6
13. 判断下列声明是否正确,如果正确请标记(√),错误请标记(×)【1分】
1.接口是可以继承接口(√)
2.接口可以实现接口(√)
3.接口可以声明为私有的(X )
4. 是否可以继承String类( X)
5.抽象类可以实现接口(√)
6.抽象类可以继承实体类(√)
14. 下列哪种定义接口的方式是正确的【1分】B
A. public interface A{ int a(); }
B. public interface A implement B{}
C. interface C { int a; }
D. private interface D{}
E. abstract interface E{}
15. 下列说法正确的有【1分】B
A. 类中的构造函数不可省略
B. 构造函数必须与class同名,但方法不能与class同名
C. 构造函数在一个对象被new时执行
D. 一个class只能定义一个构造函数
四、问答题【30分】
1.说说数据连接池的工作机制是什么【3分】
2.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制。
【3分】
3.forward 和redirect的区别。
【3分】
4.MVC的各个部分都有那些技术来实现?如何实现?【3分】
5.页面间对象传递的方法有哪几种? 【3分】
6.说说jsp中动态INCLUDE与静态INCLUDE的区别?【3分】
7.jsp有哪些动作?作用分别是什么?【3分】
8.抽象类abstract class和接口interface有什么区别?【3分】
用abstract修饰的类是抽象类,声明方法存在,却不实现
Interface 所有的方法都是抽象的没有程序题
9.异常处理经常用到的throws,throw,try,catch,finally分别代表什么?【3分】 Throws 捕获异常,但是需要在方法调用时,增加try catch
Throw 在程序体直接抛出一个异常,后面的程序不能够继续运行
Try catch 捕获异常,这个直接在程序体里面写,用的要比throws多
Finally 是最终一定会执行。
10.方法的重写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分】
2)查询所有学生的姓名、课程号、成绩【5分】
3)在成绩表中查询平均成绩超过80分的学生学号、平均成绩. 【5分】
4)查出‘计算机系’教师所教课程的成绩表【5分】
5)查询所有任课教师的姓名和所在系【5分】
题目二
假设有四个样表:
雇员表: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,显示“奖金不错”,如果平均奖金100到300,显示“奖金一般”,如果平均奖金小于100,显示“基本没有奖金”,按部门编号降序,平均工资降序排列【选做】
六、JAVA编程题【20分】
1.编写一个简单的实现冒泡排序的算法【10分】
Public class Button(){
Public void main(String [] args){
Int []ss={10,20,30,40,50,24};
For(i=0;i<ss.length-1;i++){
For(j=0;j<ss.length-1-I;j++){
交换
}
}
For 输出数组
}
}
2.写一个或一组实现Singleton[单例]。
【10分】。