一、选择题(每题2分,共10分)
1.以下对继承的描述错误的是()
A)Java中的继承允许一个子类承多个父类
B)父类更具有通用性,子类更具体
C)Java中的继承存在着传递性
D)当实例化子类时会递归调用父类中的构造方法
A
2.多态的表现形式有()
A)重写ww
B)抽象
C)继承
D)封装
A
3.以下代码,描述正确的有()
interface IDemo{
public static final string name; 1
void print(); 2
public void getlnfo(); 3
}
abstract class Person implements IDemo{ 4
public void print() {}
}
A)第1行错误,没有给变量赋值
B)第2行错误,方法没有修饰符头
C)第4行错误,没有实现接口的全部方法
D)第3行错误,没有方法的实现
A
4.在 try-catch-finally 语句块中,以下可以单独与finally一起使用的是()
A) catch
B) try
C) throws
D) throw
A
5. 一个栈的进栈序列是a、b、c、d、e,则栈的不可能的输出序列是()
A) edcba
B) decba
C) dceab
D) abcde
C
二、填空题(每题2分,共10分)
1.一颗二叉树的先序通历序列为ABCDEF,中序遍历序列为CBAEDF,则后序遍历序列为 。
CBEFDA
2.以下程序运行结果是 。
public class Test extends Father{
private String name = "test";
public static void main(String[] args){
Test test = new Test();
System.out.println(test.getName());
}
}
class Father{
private String name = "father";
public String getName(){
return name;
}
}
father
3.在Java中如果声明一个类为final,表示 。
该类不能被继承,是顶级类。
4. 面向对象程序设计的三个特征是 。
封装性
继承性
多态性
5. Java创建线程的两种方式分别为 和 。
方法一:继承Thread类,重写run()方法。
方法二:实现Runnable接口
三、问答题(每题10分,共50分)
1.什么是数据库的事务?事务有哪些特性?
1.事务一般是指将一系列sql操作封装在一个单元中,要么完全的执行,要么完全的不执行。
2.事务有四大特性:
- 原子性 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。
- 一致性 事务开始前和结束后,数据库的完整性约束没有被破坏 。
- 持久性 事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。
- 隔离性 同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰
2. left join和right join的区别。
left join和right join的区别为:基表不同、操作不同、结果不同。left join:left join以左数据表为基表。right join:right join以右数据表为基表。
操作不同
1、left join:left join会把左表中的全部信息输出,然后搜索右表中符合条件的记录。
2、right join:right join会把右表中的全部信息输出,然后左搜索表中符合条件的记录。
结果不同
1、left join:left join查出来的结果是左边的所有数据和与左边有交集部分的数据。
2、right join:right join查出来的结果是右边的所有数据和与右边有交集部分的数据。
3.简述链表和数组的区别。
数组静态分配内存,链表动态分配内存;
数组在内存中连续,链表不连续;
数组元素在栈区,链表元素在堆区;
数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。
4.简述浏览器解析URL 的过程。
浏览器向本地DNS服务器发送请求,如果本地没有缓存该域名的IP地址,就需要通过递归或迭代的方式向根域名服务器、顶级域名服务器、权威域名服务器发起查询请求,直至返回一个IP地址给浏览器。然后根据该IP地址建立TCP连接,客户端发送HTTP请求,服务器返回报文,关闭TCP连接,再由浏览器进行解析渲染页面,最后TCP四次挥手结束连接(404:服务器找不到请求的页面)
5.什么是微服务?微服务有哪些优势?有哪些常见的微服务框架?
微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。
=====================
- 独立开发: 小型的独立组件可由小型的独立团队构建。一个小组可以专门负责开发“Upload”服务,不用去管其他服务。每个组件的功能变得简单,这样一来,开发人员了解组件的时间大大减少,更容易开发新功能。
- 独立部署: 每个单独的组件都可以独立部署。这样一来发布新功能的速度就更快,风险也更小。假设“Streaming”组件修复了 bug 或者新增了功能,那么部署时并不会影响其他组件。
- 独立扩展: 每个组件可以独立地进行扩展。在新节目刚发布的繁忙时期,可以扩展“Download”组件,以支持增加的负载,而不必扩展所有组件,这样一来扩展更具弹性并且降低了成本。
- 可重用性: 每个组件各自实现一个小的、特定的功能。这意味着它们可以很容易地适用于其他系统、服务或者产品。“Transcode”组件可以被其他业务单元使用,甚至可以改写成一个新的业务,从而为其他组提供转码服务。
从以上细节层面可见,微服务模式相比整体式架构的好处显而易见。
========================
主流微服务架构有SpringCloud、ServiceComb、ZeroC ICE、Motan、Thrift
四、编程题(每题15分,共30分)
1.用Java实现:输入某年某月某日,判断这一天是这一年的第几天?
import java.util.*;
public class exercise11 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入年:");
int a1 = s.nextInt();
System.out.print("请输入月:");
int a2 = s.nextInt();
System.out.print("请输入日:");
int a3 = s.nextInt();
int sum=0;
for(int i=1;i<=a2-1;i++)
{
int day=0;
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
case 2:{
if((a1%400==0) || (a1%4==0 && a1%100!=0))
{
day=29;break;
}else {
day=28;break;
}
}
}
sum+=day;
}
sum+=a3;
System.out.println("这是这一年中第"+sum+"天");
}
}
2.已知学生、课程、成绩三张表,如下:
学生表student | |||
---|---|---|---|
id | name | birth | sex |
学生编号 | 学生姓名 | 出生年月 | 学生性别 |
课程表course | |||
id | name | ||
课程编号 | 课程名称 | ||
成绩表score | |||
s_id | c_id | score | |
学生编号 | 课程编号 | 分数 |
(1)查询20岁及以上的学生编号、姓名、年龄、性别。
select id,name,birth,sex
from student
where birth <= 2002
(2)查询90分以上的学生编号、姓名、年龄、性别。
select id,name,birth,sex
from student,score
where id = s_id and score > 90
(3)查询“数据结构”这门课分数低于平均分的学生编号、姓名、年龄、性别、分数。
Select s_id, name, birth, sex, score
from student, score, coure
where id = s_id and course_id = c_id and course_name = "数据结构" and