2020-11-03《java开发工程师》基础笔试题总结

1.题目:请对英文单词进行排序,apple,mango,banana,fruit,禁止直接调用排序方法,并输出排序后的结果。

注:

1.单词排序

2.禁止直接调用排序方法

2.题目:某航班信息管理模块包含两个表,定义如下:

乘客信息表(PASSENGER)
 FieldTypeComment
keypassengeridvarchar(16) NOT NULL乘客编号
 namevarchar(48) NULL姓名
 agedecimal(10,0) NULL年龄
航班记录表(FLIGHT)
 FieldTypeComment
keyserialnovarchar(16) NOT NULL流水号
 airplaneidvarchar(16) NULL客机编号
 passengeridvarchar(16) NULL乘客编号
 departtimevarchar(24) NULL出发时间

注:

1.航班记录表FLIGHT包括所有历史航班信息;

2.出发时间departtime的格式为yyyy-MM-dd hh24:mm:ss

解答下面的问题或书写sql:

1、阐述数据库事务的四大特性(ACID);

了解事务

1,      什么是数据库事务?

         数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
意思就是一连串的数据库操作,即一串增删查改的集合。


2,   数据库事务做了什么?

        它把数据库从一个一致的状态转换到另一个一致的状态,比如数据库操作前是一个点,数据库操作后是一个点,
我们只管这两个点的状态,而两点之间的连线上的状态我们不管因为他们可能对我们想要的结果产生影响。

事务四大特性

3,   第一个特性 原子性(Atomicity)

        假如我们有个方法中对一个属性进行了N次的更新,但是执行到一半的时候有一个语句有问题出现了异常,这样就可能使得我们上面所说的操作后的点与我们预先的点不同,这不是我们想要的,所以原子性要求你这个方法要么全部执行成功,要么你就别执行。

4,  第二个特性 一致性(Consistency)

        原子性中规定方法中的操作都执行或者都不执行,但并没有说要所有操作一起执行(一起更新那就乱套了,要哪个结果?),所以操作的执行也是有先后顺序的,那我们要是在执行一半时查询了数据库,那我们会得到中间的更新的属性?答案是不会的,一致性规定事务提交前后只存在两个状态,提交前的状态和提交后的状态,绝对不会出现中间的状态。

5,  第三个特性 隔离性(Isolation)

        事务的隔离性基于原子性和一致性,每一个事务可以并发执行,但是他们互不干扰,但是也有可能不同的事务会操作同一个资源,这个时候为了保持隔离性会用到锁方案。

6,   第四个特性 持久性(Durability)

        当一个事务提交了之后那这个数据库状态就发生了改变,哪怕是提交后刚写入一半数据到数据库中,数据库宕机(死机)了,那当你下次重启的时候数据库也会根据提交日志进行回滚,最终将全部的数据写入。

2、写出创建航班记录表FLIGHT的SQL语句,需要包含表和字段的注释;

Create Table

CREATE TABLE `flight` (
  `serialno` varchar(16) COLLATE utf8_croatian_ci NOT NULL COMMENT '流水号',
  `airplaneid` varchar(16) COLLATE utf8_croatian_ci DEFAULT NULL COMMENT '客机编号',
  `passengerid` varchar(16) COLLATE utf8_croatian_ci DEFAULT NULL COMMENT '乘客编号',
  `departtime` varchar(24) COLLATE utf8_croatian_ci DEFAULT NULL COMMENT '出发时间',
  PRIMARY KEY (`serialno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci

3、写SQL,查询乘客编号为P0001的乘客,输出姓名、年龄;

 

4、写SQL,查询姓赵的乘客所乘坐的所有航班,输出姓名,客机编号,出发时间;

 

5、写SQL,查询至少乘坐2次航班的乘客,输出姓名,乘机次数(字段标签为frequency);

 

 

 

 


Create Table

CREATE TABLE `passenger` (
  `passengerid` varchar(16) COLLATE utf8_croatian_ci NOT NULL COMMENT '乘客编号',
  `name` varchar(48) COLLATE utf8_croatian_ci DEFAULT NULL COMMENT '姓名',
  `age` decimal(10,0) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`passengerid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci

3.题目:已知下列以逗号分隔的时间记录

String date=“2019-1-10,,,2019-3-1,2018-12-5,,2019-6-13”;

A)将时间记录以Date类型置入list,计算并输出空置占比

B)将时间记录排序,将每个时间减去90天后,按yyyy-MM-dd格式输出,以空格分割。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值