个人测试六

一、单选题

1.分析一下程序,结果正确的是( B )

package com.gec;
public class Test4 {
    public static void main(String args[]) {
        Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.run();
        System.out.print("ping");
   }
   static void pong() {
       System.out.print("pong");
   }
}

A. 程序能编译运行,输出结果:pingpong
B. 程序能编译运行, 输出结果:pongping
C. 程序不能编译,产生异常
D. 以上都不对

2.以下不属于servlet的生命周期中的方法是( D )

A. init()
B. destroy()
C. service()
D. doGet()

  1. String a = “hello”;
    String b = “hel”;
    String c = “lo”;
    String d = b + c;
    String e = “hel”+“lo”;
    以下哪个表达式返回true?( C )

A. a == d
B. d == e
C. a == e
D. a == new String(“hello”)

4.关于hashcode()与equals()描述错误的是哪个( D )

A. hashcode()不等,equals()一定也不等
B. hashcode()相等,equals()可能相等,也可能不相等
C. equals()方法判断相等的两个对象,hashcode()一定相等
D. equals()方法判断不相等的两个对象,hashcode()一定不相等

5.执行下列语句后,变量i的值是:( D )
byte i = 127;
i += 1;

A. 128
B. 0
C. 1
D.-128

二、简答题

1.Java集合体系的接口有哪些?列举并解释

java集合总共有两大接口,Collection接口和Map接口。一个是元素集合,一个是键值对集合。其中List和Set是Collection接口的子接口,一个是有序可以重复的集合,一个是无序不可以重复的集合。其中ArrayList和LinkedList实现了List接口。HashSet实现了Set接口,这几个都比较常用;HashMap和HashTable都实现了Map接口,并且HashTable接口线程更安全,但是HashMap性能更好。

Collection 单列集合的根接口
List元素有序 可重复
ArrayList 类似一个长度可变的数组 线程不安全 增删慢 查询快
LinkedList 为双向循环链表 线程不安全 增删快 查询慢
Vector 底层通过数组实现 线程安全 增删慢 查询快
Set元素无序 不可重复
HashSet 根据对象的哈希值确定元素在集合中的位置
TreeSet 以二叉树的方式存储元素,完成了对集合中的元素排序
Map 双列集合的根接口 用来存储具有键(key) 值(value)对象关系映射的元素
HashMap 用来存储键值映射关系,不能出现重复的键(key)
TreeMap 用来存储键值映射关系,不能出现重复的键(key),以二叉树形式排列。

2.Spring Security和shiro有什么区别?

 1.Spring Security基于Spring开发,项目中如果使用Spring Security做权限更加
 方便。 而shiro需要和Spring进行整合开发。
 
 2.Spring Security功能比Shiro更加丰富,例如安全防护
 
 3.Spring Security社区资源比Shiro更加
 
 4.Shiro的配置更加简单,它是一个跨平台的框架,组件非常丰富、松散耦合,
 基本每个单独拿出来都可以使用。而Spring Security依赖于Spring容器

3.RPC和RestFul的区别是什么?

都是网络交互的协议规范。通常用于多个微服务之间的通信协议。

RPC也叫远程过程调用(Remote Procedure Call),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

Rest是一组架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或者设计就是RestFul。

1.RPC一般使用TCP通信协议,RestFul一般使用Http协议。
2.RPC性能高,而RestFul相对来说性能更低。
3.RPC灵活度低于RestFul。

4.什么是反射?有什么应用场景?

Java反射机制是在运行状态中,对于任意一个类,都能知道它所有的属性和方法;对于任意一个对象,都能够调用它的属性和方法,这种动态获取的信息以及动态的调用对象的方法的功能称为java的反射机制。

在Spring/Hibernate中用到了反射机制,还有动态代理的设计模式中也用到了反射。

5.抽象类和接口的区别?

抽象类:

1.抽象类可以有具体方法
2.抽象类中可以包含静态方法 
3.抽象类中可以定义构造器
4.抽象类中可以成员修饰符可以是任意的
5.一个类只能继承一个抽象类

接口:

1. 接口中不可以有具体方法
2. 接口中不能有静态方法
3. 接口中不能定义构造器
4. 接口中的成员变量修饰符只能是public
5. 一个类可以实现多个接口

6.什么是序列化?什么是持久化??

序列化,就是将Java对象转化为字节流的过程。

反序列化,就是将字节流转化为java对象的过程。

持久化,就是将数据保存到可永久保存的存储设备中如(磁盘)。持久化的主要作用就是将内存中的对象存储到关系型的数据库中,当然也可以存储到磁盘文件或XML数据文件中。
持久化就是将程序数据存储在持久态和瞬时态之间转换的机制,如若文件IO和JDBC。

7.简述hibernate和mybatis的区别?

Hibernate:

1.Hibernate是全表映射框架,只需要提供POJO和映射关系即可
2.Hibernate不需要编写大量的SQL,就可以完全映射,提供了日志、缓存、级联等特性,还提供HQL(命名查询方式)对POJO进行操作
3.Hibernate的Dao层比Mybatis的简单,Mybatis需要SQL维护和结果映射
4.Hibernate的移植性比Mybatis的好
5.Hibernate的门槛较高,不易掌握

Mybatis:

1.Mybatis是一个半ORM映射框架,需要手动的匹配POJO、SQL和映射关系
2.Mybatis的门槛低,容易学习
3.Mybatis的数据库移植性不好,不同数据库需要写不同SQL
4.Mybatis可以更细致的进行优化,减少查询字段

三、编程题

1.现有三张表,分别是部门表(DEPT)、员工表(EMP)、工资等级表(SALGRADE) ,表结构如下:

##部门表 CREATE TABLE DEPT( DEPTNO int PRIMARY KEY,##部门编号 DNAME VARCHAR( 14) , ##部门名称 LOC VARCHAR( 13) ##部门地址 ) ;

##员工表 CREATE TABLE EMP( EMPNO int PRIMARY KEY, #员工编号 ENAME VARCHAR( 10), #员工姓名 JOB VARCHAR( 9), #员工工作 MGR int, #员工直属领导编号 HIREDATE DATE, #入职时间 SAL double, #工资 COMM double, #奖金 DEPTNO int #对应dept表的外键 );
## 添加 部门 和 员工 之间的主外键关系 ALTER TABLE EMP ADD CONSTRAINT FOREIGN KEY EMP(DEPTNO) REFERENCES DEPT (DEPTNO);

#工资等级表 CREATE TABLE SALGRADE( GRADE int, #等级 LOSAL double, #最低工资 HISAL double ); #最高工资

1).找出奖金多于基本工资60%的员工信息。

select * from emp where comm > sal * 0.6;

2).找出奖金少于100或者没有获得奖金的员工的信息。

select * from emp where comm <100 or comm is null;

3).返回拥有员工的部门名和部门号。

## select distinct用来返回不同的值
select distinct d.dname,d.deptno from dept d,emp e where d.deptno=e.deptno;

4).返回工资多于张三的员工信息。

select * from emp where sal>(select sal from emp where ename='张三'); 

5).返回工资水平多于平均工资的员工信息。

select * from emp e where e.sal>(select avg(sal) from emp);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值