目 录
初级软件工程师(Java)笔试题-A卷(答案) 1
初级软件工程师(Java)笔试题-B卷(答案) 5
初级软件工程师(Java)笔试题-C卷(答案) 7
中级软件工程师(Java)笔试题-A卷(答案) 9
中级软件工程师(Java)笔试题-B卷(答案) 13
高级软件工程师(Java)笔试题-A卷(答案) 16
高级软件工程师(Java)笔试题-B卷(答案) 19

初级软件工程师(Java)笔试题-A卷(答案)

三、简答题(共3题,每题5分,共15分)

  1. Java语言的关键特性有哪些?(答对3个可满分)

参考答案:

  1. 简洁有效
  2. 面向对象
  3. 鲁棒性(健壮性)
  4. 安全性
  5. 可移植性、中立性
  6. 适合分布式计算
  7. 解释型、多线程并且是动态的

  8. Js判断数据类型有哪些方式?

参考答案:

  1. typeof

对于基本类型,除 null 以外,均可以返回正确的结果。
对于引用类型,除 function 以外,一律返回 object 类型。
对于 null ,返回 object 类型。
对于 function 返回 function 类型。

  1. instanceof

instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型

  1. constructor

当一个函数 F被定义时,JS引擎会为F添加 prototype 原型,然后再在 prototype上添加一个 constructor 属性,并让其指向 F 的引用
4、toString
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型

  1. 数据库事务是指什么和有哪几个特性?

参考答案:

  1. 数据库事务(Transaction)是一个操作序列,不可分割的工作单位,以BEGIN TRANSACTION开始,以ROLLBACK/COMMIT结束

数据库事务特性包括了原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
原子性(Atomicity):逻辑上是不可分割的操作单元,事务的所有操作要么全部提交成功,要么全部失败回滚(用回滚日志实现,反向执行日志中的操作);
一致性(Consistency):事务的执行必须使数据库保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的;
隔离性(Isolation):一个事务所做的修改在最终提交以前,对其它事务是不可见的(并发执行的事务之间不能相互影响);
持久性(Durability):一旦事务提交成功,对数据的修改是永久性
四、**编程题(共1题,共20分)**

  1. 从键盘上输入10个整数,并将其放入一个一维数组中,然后将其前5个元素与后5个元素对换,即:第1个元素与第10个元素互换,第2个元素与第9个元素互换…第5个元素与第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。

参考答案:
Jva试题2(带答案) - 图1
Jva试题2(带答案) - 图2
Jva试题2(带答案) - 图3

初级软件工程师(Java)笔试题-B卷(答案)

  1. 简答题(共3题,每题5分,共15分)
  2. switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

参考答案:switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。long、String都不能作用于switch。

  1. CSS水平垂直居中方式有哪些?

参考答案:
1、水平对齐+行高(text-align+line-height)
2、水平+垂直对齐(text-align+vertical-align)
3、margin + vertical-align
4、绝对定位
5、Flex

  1. 什么事乐观锁和悲观锁?

参考答案:悲观锁:认为数据随时会被修改,因此每次读取数据之前都会上锁,防止其它事务读取或修改数据;应用于数据更新比较频繁的场景;
乐观锁:操作数据时不会上锁,但是更新时会判断在此期间有没有别的事务更新这个数据,若被更新过,则失败重试;适用于读多写少的场景。乐观锁的实现方式有:

  • 加一个版本号或者时间戳字段,每次数据更新时同时更新这个字段;
  • 先读取想要更新的字段或者所有字段,更新的时候比较一下,只有字段没有变化才进行更新
  1. 编程题(共1题,共20分)
  2. 设计一个计算的方法,然后用该方法求的值。

参考答案:
Jva试题2(带答案) - 图4

初级软件工程师(Java)笔试题-C卷(答案)

三、简答题(共3题,每题5分,共15分)
1. 请说出String与StringBuffer的区别。
参考答案:String的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

  1. 使用jquery或者原生js获取到id为app的节点设置文本颜色为红色。

参考答案:

  1. $(“#app”).css(“color”,”red”);
  2. document.getElementById(“app”).style.color = “red”;

3. 请用mysql数据库查找最晚入职员工的所有信息?
CREATE TABLE employees
(emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no));

参考答案:
SELECT FROM employeesWHERE hire_date = (
SELECT MAX(hire_date)
FROM employees
);

SELECT
FROM employeesORDER BY hire_date DESCLIMIT 0, 1;

四、编程题(共1题,共20分)
1、请编写一个Singleton模式的程序。
参考答案:
Jva试题2(带答案) - 图5

中级软件工程师(Java)笔试题-A卷(答案)

三、简答题(共4题,每题5分,共20分)
1、char型变量中能不能存储一个汉字?为什么?
参考答案:char型变量能够存储一个中文。因为Java采用的是unicode编码,一个char占16个字节,而一个中文汉字只有两个字节,所以放一个汉字是没问题的。

  1. Connection类中提供了3种事务处理方法,请写出是哪些方法?

参考答案:
• setAutoCommit(BooleanautoCommit):设置是否自动提交事务,默认为自动提交事务,即为true,通过设置false禁止自动提交事务。
• commit():提交事务。
• rollback():回滚事务。

  1. 请描述一下cookie、sessionStorage和localStorage的区别?

参考答案:


Jva试题2(带答案) - 图6

4、请用mysql数据库查找最晚入职员工的所有信息?
CREATE TABLE employees
(emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no));
参考答案:
SELECT FROM employeesWHERE hire_date = (
SELECT MAX(hire_date)
FROM employees
);

SELECT
FROM employeesORDER BY hire_date DESCLIMIT 0, 1;

四、编程题(共1题,共30分)
1、给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628 800,N!的末尾有两个0。
Jva试题2(带答案) - 图7

中级软件工程师(Java)笔试题-B卷(答案)

三、简答题(共4题,每题5分,共20分)
1、请说出String与StringBuffer的区别?
参考答案:String的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

2、switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
参考答案:switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。long、String都不能作用于switch。

3、使用js实现任意一种排序?
参考答案:
1、冒泡排序
Jva试题2(带答案) - 图8

  1. 快速排序

Jva试题2(带答案) - 图9

4、请用mysql数据库查找最晚入职员工的所有信息?
CREATE TABLE employees
(emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no));
参考答案:
SELECT FROM employeesWHERE hire_date = (
SELECT MAX(hire_date)
FROM employees
);

SELECT
FROM employeesORDER BY hire_date DESCLIMIT 0, 1;

三、编程题(共1题,共30分)
1、有这样一类数字,它们顺着看和倒着看是相同的数,例如:121、656、2332等,这样的数字就称为回文数字。编写一个Java程序,判断从键盘接收的数字是否为回文数字。
参考答案:
Jva试题2(带答案) - 图10

高级软件工程师(Java)笔试题-A卷(答案)

  1. 简答题(共4题,每题5分,共20分)

1、根据给出程序(如下),试着写出运行结果,并写出解释说明。
Jva试题2(带答案) - 图11
参考答案:
a的值是144,转换成二进制数就是1001 0000,而b的值是26,转换成二进制数就是00010110。根据与运算符的运算规律,只有两个位都是1时,结果才是1,其余的则都是0,所以得出的结果就是00010000,即16。
Jva试题2(带答案) - 图12
2、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
参考答案:
short s1 = 1; s1 = s1 + 1;中s1+1运算结果是int型,需要强制转换类型。short s1 = 1; s1 += 1;可以正确编译。

  1. sleep()和wait()有什么区别?

参考答案:
sleep是线程类(Thread)的方法,导致此线程暂停执行指定的时间,将执行机会给其他线程,但是监控状态依然保持,到时候会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池。只有针对此对象发出notify方法(或notifyAll)后,本线程才进入对象锁定池准备获得对象锁进入运行状态。

  1. 请画出线程方法之间的关系图。

参考答案:
Jva试题2(带答案) - 图13

  1. 编程题(共1题,共30分)
  2. 一个简单的游戏,规则如下:玩家掷两个骰子,点数为1~6,如果第一次点数和为7或11,则玩家胜,如果点数和为2、3或12,则玩家输,如果和为其他点数,则记录第一次的点数和,然后继续掷骰,直至点数和等于第一次掷出的点数和,则玩家胜,如果在这之前掷出了点数和为7,则玩家输。请编程实现。

参考答案:
Jva试题2(带答案) - 图14

高级软件工程师(Java)笔试题-B卷(答案)

  1. 简答题(共4题,每题5分,共20分)
  2. 请说明重载和重写的区别。重载的方法是否可以改变返回值的类型。

参考答案:方法的重写和重载是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。如果在子类中定义某方法与其父类具有相同的名称和参数,我们说该方法被重写。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们有不同的参数个数、参数类型和参数顺序,则称为方法的重载。重载的方法可以改变返回值的类型。

  1. 请简单地描述一下heap和stack有什么区别。

参考答案:栈是一种线性集合,是自动分配变量以及函数调用时所使用的一些空间。地址是由高向低减少的。其添加和删除元素的操作应同步完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素,它是由malloc之类函数分配的空间所在地。地址是由低向高增长的。

  1. 抽象方法是否可同时为static,是否可同时为native,是否可同时为synchronized?请解析说明。

解析:首先static的方法只能被子类里static的方法所覆盖,不能表现出多态,因为多态性是通过引用来实现的,所以abstract和static不可以同时使用。native的方法是通过引入C/C++或其他本地语言来实现的,而在static块或方法里,无法引入不同的实现,所以也不能同时使用abstract和native。synchronized和abstract也不能混合使用,因为synchronize同步的是同一对象,而不是不同实现的不同对象。
参考答案:都不能

  1. 请画出线程方法之间的关系图。

参考答案:
Jva试题2(带答案) - 图15

  1. 编程题(共1题,共30分)
  2. 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后一阶也不剩。请问该阶梯至少有多少阶。编写一个Java程序解决该问题。

参考答案:
Jva试题2(带答案) - 图16