JAVA软件工程师笔试试题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA软件工程师笔试试题相关的知识,希望对你有一定的参考价值。
JAVA软件工程师笔试试题
(考试时间:120分钟 试卷分值:150分 )
一、 逻辑推理题【10分】
1、甲、乙、丙、丁四位同学中有一位同学为海啸灾区捐款1000元,当老师询问时,他们分别这样回答:
甲:这1000元不是我捐的
乙:这1000元是丁捐的
丙:这1000元是乙捐的
丁:这1000元不是我捐的
这四人中只有一个人说了真话,由此可见这1000元是谁捐的( )。【2分】
A.甲 B.乙 C.丙 D.丁
2、 甲、乙、丙三人是同一家公司的员工,他们的未婚妻A、B、C也都是这家公司的职员。知情者介绍说:“A的未婚夫是乙的好友,并在三个男子中最年轻;丙的年龄比C的未婚夫大。”依据该知情者提供的情况,我们可以推出三对组合分别是( )。 【3分】
A.甲—A,乙—B,丙—C
B.甲—B,乙—A,丙—C
C.甲—C,乙—B,丙—A
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________ ( 能或者不能)被public、private、protected修饰。【1分】
9. Java的访问控制有四种: __public__、_protected_、__friendly__、_private___。【2分】
10. AJAX的核心对象是__xmlHttpRequest____。【1分】
三、 JAVA基础题【45分】
- 下列选项中不属于java关键字的有 ( ) 【1分】
[A] TRUE [B] sizeof
[C] const [D] super [E] void
- 下面哪些是合法的标识符 ( ) 【1分】
[A] $persons [B] TwoUsers
[C] *point [D] this [E] _endline
- 下列选项中不是原始数据类型的有? ( ) 【1分】
[A]. short [B]. Boolean
[C]. Unit [D]. float
- 下列选项中那些语句片段会发生异常 【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分】
- a == 1;
- ++i;
- a = a + 1 = 5;
- y = (int)I;
- 以下选项中,代码执行完毕后输出结果是( )【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
- b
- c
- d
- Compilation fails
- 以下选项中,正确的是( )【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 );
}
}
- 000000000
- 0123456789
- Compilation fails.
- The code runs with no output.
- The code enters an infinite loop.
- An exception is thrown at runtime.
- 以下代码片段执行后,正确输出的结果是( )【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’);
}
}
}
- ABDCBDCB
- ABCDABCD
- Compilation fails.
- An exception is thrown at runtime.
- 有以下代码片段
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) 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
- 在// 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分】
int i=1,j=10;
do{
if(i++>--j)
continue;
} while(i<5);
- i = 6 j = 5
- i = 5 j = 5
- i = 6 j = 4
- i = 5 j = 6
- 判断下列声明是否正确,如果正确请标记(√),错误请标记(×)【1分】
1.接口是可以继承接口 ( ) 2.接口可以实现接口 ( )
3.接口可以声明为私有的( ) 4. 是否可以继承String类( )
5.抽象类可以实现接口 ( ) 6.抽象类可以继承实体类( )
- 下列哪种定义接口的方式是正确的【1分】
- public interface A{ int a(); }
- public interface A implement B{}
- interface C { int a; }
- private interface D{}
- abstract interface E{}
- 下列说法正确的有【1分】
- 类中的构造函数不可省略
- 构造函数必须与class同名,但方法不能与class同名
- 构造函数在一个对象被new时执行
- 一个class只能定义一个构造函数
四、 问答题【30分】
- 说说数据连接池的工作机制是什么【3分】
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。
调用:客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为 忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。
释放:当使用的池连接调用完成后,池驱动程序将此连接表记为空闲, 其他调用就可以使用这个连接。
- 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制。【3分】
可以,但是只有一个类的访问修饰类型是public,且类名和文件名一样。
- forward 和redirect的区别。【3分】
forward是转发,浏览器地址不变,可以在request中存数据,效率高。
redirect是重定向,浏览器地址会变化,效率低。
- MVC的各个部分都有那些技术来实现?如何实现? 【3分】
M:model,模型,dao,JavaBean
V:view,视图,jsp
C:control,控制,servlet
- 页面间对象传递的方法有哪几种? 【3分】
放在request中,放在session中,放在application中。
- 说说jsp中动态INCLUDE与静态INCLUDE的区别?【3分】
动态include总是会检查页面的变化,可以带参数。
静态include只是包含页面,不会检查变化。
- jsp有哪些动作?作用分别是什么?【3分】
<jsp:include>在页面被请求的时候引入一个文件。
<jsp:forward>把请求转到一个新的页面
<jsp:useBean>寻找或者实例化一个JavaBean
<jsp:setProperty>设置javabean 的属性
<jsp:getProperty>输出某个JavaBean的属性。
<jsp:plugin>生成插件。
- 抽象类abstract class和接口interface有什么区别? 【3分】
抽象类可以有构造方法,接口中不能由构造方法。
抽象类中可以有非抽象的方法,interface中的方法都是抽象的,并且默认是public abstract。
抽象类中可以有普通的成员变量,interface中没有普通成员变量。
抽象类中可以包含静态方法,接口中不能包含静态方法。
一个类可以实现多个接口,但只能继承一个抽象类。
抽象类中可以有静态的成员变量,它的访问类型可以是任意的,但接口中只能是public static final类型,默认也是这样。
- 异常处理经常用到的throws,throw,try,catch,finally分别代表什么? 【3分】
try{}里面是需要被检测的代码,catch{}里面是处理异常的代码,finally{}里面是一定会执行的语句。
在功能(方法)上通过throws关键字来声明改功能可能会出现异常。
throw是指抛出一个具体的异常类型。
- 方法的重写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,显示“奖金不错”,如果平均奖金100到300,显示“奖金一般”,如果平均奖金小于100,显示“基本没有奖金”,按部门编号降序,平均工资降序排列【选做】
六、 JAVA编程题【20分】
- 编写一个简单的实现冒泡排序的算法【10分】
- 写一个或一组实现Singleton[单例]。【10分】
以上是关于JAVA软件工程师笔试试题的主要内容,如果未能解决你的问题,请参考以下文章
2021最新秋招Java软件工程师面试笔试必备面试题及答案汇总