周测——前端+数据库+面向对象+单例

目录

 

基础题:

(1)检索计算机系的全体学生的学号,姓名和性别

(2)检索学习课程号为C2的学生学号与姓名

(3)检索选修课程名为“DS”的学生学号与姓名

(4)检索选修课程号为C2或C4的学生学号

(5)检索至少选修课程号为C2和C4的学生学号

(6)检索不学C2课的学生姓名和年龄

(7)检索学习全部课程的学生姓名

(8)查询所学课程包含学生S3所学课程的学生学号

简答题:

1.何为范式,有几种,试列举并简要描述?

2.Tomcat如何修改端口号,如何清除项目缓存,默认并发量是多少?

3.谈谈你对MVC的理解?

4.GET和POST请求的区别?

5.&和&&有什么区别?

综合题:

1.请以任何语言实现1+2+3+…+100

2.以下代码输出true个数,为什么?

3.写出两种单例模式实现?


基础题:

(1)检索计算机系的全体学生的学号,姓名和性别

SELECT SNO "学号",SNAME "姓名",SEX "性别" FROM S WHERE SDEPT = "计算机系";

(2)检索学习课程号为C2的学生学号与姓名

SELECT S.SNO "学号",S.SNAME "姓名" FROM S INNER JOIN SC ON S.SNO = SC.SNO AND SC.CNO = "C2";

(3)检索选修课程名为“DS”的学生学号与姓名

SELECT S.SNO "学号",S.SNAME "姓名" FROM S INNER JOIN SC ON S.SNO = SC.SNO INNER JOIN C ON C.CNO = SC.CNO AND C.CNAME = "DS";

(4)检索选修课程号为C2或C4的学生学号

SELECT S.SNO "学号" FROM S INNER JOIN SC ON S.SNO = SC.SNO WHERE SC.CNO = "C2" OR SC.CNO = "C4";

(5)检索至少选修课程号为C2和C4的学生学号

SELECT SC1.SNO "学号" FROM SC as SC1 INNER JOIN SC as SC2 ON SC1.SNO = SC2.SNO where SC1.CNO = "C2" and SC2.CNO = "C4";

(6)检索不学C2课的学生姓名和年龄

SELECT SNAME "姓名",AGE "年龄" FROM S WHERE SNO NOT IN(SELECT SNO FROM SC WHERE CNO = "C2");

(7)检索学习全部课程的学生姓名

SELECT S.SNAME "姓名" from S INNER JOIN SC ON SC.SNO = S.SNO GROUP BY SC.SNO HAVING COUNT(SC.CNO) = (SELECT COUNT(CNO) FROM C);

(8)查询所学课程包含学生S3所学课程的学生学号

SELECT SNO FROM SC WHERE CNO IN (SELECT CNO FROM SC WHERE SNO = "S3") AND SNO != "S3";

简答题:

1.何为范式,有几种,试列举并简要描述?

- 范式可以简单地理解为,做某些事情的一种公认的规范,模范,模式。数据库的设计范式,就是按照“数据库规范

化”对表进行设计,其目的就是减少数据库中的数据冗余,以增加数据的一致性。

一般的数据库满足第三范式即可,因此常说的就是三大范式:

- 第一范式:强调的是列的原子性,数据库表中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体

中的某个属性不能有多个值或者不能有重复的属性。

- 第二范式:首先要满足第一范式,其次每一个非主属性要完全函数依赖于候选键,或者是主键。也就是说,每个非主

属性是由整个主键函数决定的,而不能有主键的一部分来决定。

- 第三范式:在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范

式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据

库表应该不存在如下依赖关系:

关键字段 → 非关键字段x → 非关键字段y

此外还有:

- 第四范式:要求把同一表内的多对多关系删除。

- 第五范式:从最终结构重新建立原始结构。

- BC范式(BCNF):符合第三范式,并且,主属性不依赖于主属性。若关系模式R属于第一范式,且每个属性都不传递依

赖于键码,则R属于BC范式。

2.Tomcat如何修改端口号,如何清除项目缓存,默认并发量是多少?

- 修改端口号:

修改配置文件:/conf/server.xml 中的 port

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

- 项目缓存:删除work文件夹下的文件

- 默认并发量:150

maxThreads="150"

3.谈谈你对MVC的理解?

MVC:是一个框架设计模式,其中M(模型)、V(视图)、C(控制器),也可称为一种软件设计典范,用一种业务逻

辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

视图:视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。如:jsp、html等

模型:表示业务数据和业务处理。属于数据模型,如:entity、jdbc、hibernate、mybatis等

控制器:接收、响应用户请求,servlet、action、controller等,起到桥梁的作用,来控制V层和M层通信以此来达到

分离视图显示和业务逻辑层。

4.GET和POST请求的区别?

GET:

1:从服务器上获取数据,一般不能使用在写操作接口

2:由URL所限制,GET方式传输的数据大小有所限制,传送的数据量不超过2KB

3:请求的数据会附加在URL之后,以?分隔URL和传输数据,多个参数用&连接

4:安全性差

POST:

1:向服务器提交数据,一般处理写业务

2:POST方式传送的数据量比较大,一般被默认为没有限制

3:安全性高

4:请的求的数据内容放置在HTML HEADER中

5.&和&&有什么区别?

&按位与:

1.a&b是把a和b都转换成二进制数然后再进行与的运算

2.不管前面的条件是否正确,后面都执行

&&逻辑与(短路功能):

1.a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;

2.前面条件正确时,才执行后面,不正确时,就不执行,效率高

综合题:

1.请以任何语言实现1+2+3+…+100

int sum = 0;
int n = 100; 
for (int i = 1; i <= n; i++) {
        sum += i; 
}
System.out.println("1+2+3+...+100的和为:" + sum);
​
​
n = 100 
print("1+2+3+...+100的和为:%d" %((1+n)*n/2))

2.以下代码输出true个数,为什么?

class A{}

class B extends A{}

class C extends A{}

class D extends B{}

A obj = new D();

System.out.println(obj instanceof B);

System.out.println(obj instanceof C);

System.out.println(obj instanceof D);

System.out.println(obj instanceof A);

 

3个true。

原因如下:

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

boolean result = obj instanceof Class

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者

是其接口的实现类,结果result 都返回 true,否则返回false。

System.out.println(obj instanceof B); 结果为true,obj是D的实例化对象,而D继承自B

System.out.println(obj instanceof C); 结果为false,obj是D的实例化对象,D和C不存在继承关系

System.out.println(obj instanceof D); 结果为true,obj是D的实例化对象

System.out.println(obj instanceof A); 结果为true,obj是D的实例化对象,而D继承自B,B继承自A

 

3.写出两种单例模式实现?

1、懒汉式,线程不安全 
​
是否 Lazy 初始化:是 
​
是否多线程安全:否 
​
实现难度:易 
​
描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严 
​
格意义上它并不算单例模式。 
​
这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。 
​
public class Singleton { 
​
private static Singleton instance; 
​
private Singleton (){} 
​
public static Singleton getInstance() { 
​
if (instance == null) { 
​
instance = new Singleton(); 
​
}
​
return instance; 
​
}
​
}
​
2、饿汉式 
​
是否 Lazy 初始化:否 
​
是否多线程安全:是 
​
实现难度:易 
​
描述:这种方式比较常用,但容易产生垃圾对象。 
​
优点:没有加锁,执行效率会提高。 
​
缺点:类加载时就初始化,浪费内存。 
​
它基于 classloader 机制避免了多线程的同步问题,不过,instance 在类装载时就实例化,虽然导致类装载的原因 
​
有很多种,在单例模式中大多数都是调用 getInstance 方法, 但是也不能确定有其他的方式(或者其他的静态方法) 
​
导致类装载,这时候初始化 instance 显然没有达到 lazy loading 的效果。 
​
public class Singleton { 
​
private static Singleton instance = new Singleton(); 
​
private Singleton (){} 
​
public static Singleton getInstance() { 
​
return instance; 
​
} 
​
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值