每日一刷与题解:Java基础知识+sql

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一刷与题解:Java基础知识+sql相关的知识,希望对你有一定的参考价值。

JAVA基础知识题

在这里插入图片描述
答案:D
题解:

修饰符类中同包不同包的子类不同包非子类
publicYYYY
protectedYYYN
defaultYYNN
privateYNNN

在这里插入图片描述
答案:A
题解:java中类是单继承,接口才是多继承

在这里插入图片描述
答案:D
题解:捕获到的异常不仅可以在当前方法中处理,还可以将异常抛给调用它的上一级方法来处理。

在这里插入图片描述
答案:B
题解:看第一题。public>protected>默认(包访问权限)>private

在这里插入图片描述
答案:C
题解:A、volatile只能修饰变量;synchronized能修饰方法和代码块
B、多线程访问volatile不会发生阻塞,而synchronized会出现阻塞
D、关键字volatile解决的下变量在多线程之间的可见性,没有原子性

在这里插入图片描述
答案:A
题解:在继承中代码的执行顺序为:
1.父类静态对象,父类静态代码块
2.子类静态对象,子类静态代码块
3.父类非静态对象,父类非静态代码块
4.父类构造函数
5.子类非静态对象,子类非静态代码块
6.子类构造函数
对于本题来说:在只想new Sub(5)的时候,父类先初始化了int flag = 1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test() flag=1,接着执行子类构造函数Sub(5)flag赋值为5,因此输出结果Sub.Sub() flag=5

在这里插入图片描述
答案:A、B
题解:

  • 标识符可以由字母、数字、下划线_ 、美元符号$组成

  • 标识符开头不能是数字

  • 标识符中的字符大小写敏感

  • 标识符的长度没有限制

  • 标识符不能使用java中的关键字或保留字

在这里插入图片描述
答案:A、B、C、D
题解:这题考的是单例模式。定义: 确保一个类只有一个实例,并提供该实例的全局访问点。
这样做的好处是:有些实例,全局只需要一个就够了,使用单例模式就可以避免一个全局使用的类,频繁的创建与销毁,耗费系统资源。
单例模式中只有懒汉式是线程不安全的,但是也可以改成线程安全的。

在这里插入图片描述
答案:BF
题解:A、Error和Exception都是集成Throwable,其中Exception又被IOException和RuntimeException继承
B、其实B严格来说是错的,因为如果try catch中有System.exit(0)的话,就会提前退出。
C、java中有基本数据类型
D、因为程序中的其他线程的优先级远远高于执行finalize()函数线程的优先级,所以Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize()不一定会得到执行。
E、只与平台无关并不意味着版本无关
F、Synchroized修饰非静态方法,是对调用该方法的对象加锁,Synchroized修饰静态方法,是对类加锁

在这里插入图片描述
答案:BCD
题解:B、在java中线程是有分优先等级的所以优先级不能相同
C、Thread实现了Runnable接口是一个类不是接口
D、实现多线程的三种方式。一种是继承Thread类使用此方式就不能继承其他的类了,还有两种是实现Runnable接口或者实现Callable接口

SQL语句题

SQL7:查找薪水记录超过15次的员工号

//分组查询
select emp_no,count(salary) t
from salaries
group by emp_no
having count(salary) > 15;

SQL8:所有员工具体的薪水salary情况

//distinct+order by
select distinct salary
from salaries
where to_date = '9999-01-01'
order by salary desc;

//大表用distinct效率很低,所以一般都是用分组,再排序
select salary
from salaries
where to_date = '9999-01-01'
group by salary
order by salary desc;

SQL10:找出所有非部门领导的员工emp_no

//子查询
select emp_no
from employees 
where emp_no not in (
    select emp_no
    from dept_manager
);

//左外连接
select e.emp_no
from employees e
left outer join dept_manager d
on e.emp_no = d.emp_no
where d.dept_no is null;

SQL11:获取所有的员工和员工对应的经理

//左外连接
select e.emp_no, m.emp_no manager
from dept_emp e 
left outer join dept_manager m
on e.dept_no = m.dept_no
where e.to_date = "9999-01-01" 
and m.to_date = "9999-01-01" 
and e.emp_no != m.emp_no;

SQL12:获取每个部门中当前员工薪水最高的相关信息

//这题比较复杂,所以我们分步来查询
//1、先查询每个部门的最大工资
select d.dept_no,max(s.salary) maxSalary 
from dept_emp d,salaries s
where d.emp_no = s.emp_no
and d.to_date = '9999-01-01' 
and s.to_date = '9999-01-01'
group by d.dept_no

//2、将1中的结果当作表来查询,三表连接
select r.dept_no,ss.emp_no,r.maxSalary 
from (
    select d.dept_no,max(s.salary) maxSalary 
    from dept_emp d,salaries s
    where d.emp_no = s.emp_no
    and d.to_date = '9999-01-01' 
    and s.to_date = '9999-01-01'
    group by d.dept_no
)as r,salaries ss,dept_emp dd
where r.maxSalary=ss.salary
and r.dept_no=dd.dept_no
and dd.emp_no=ss.emp_no
and ss.to_date='9999-01-01'
and dd.to_date='9999-01-01'
order by r.dept_no;

以上是关于每日一刷与题解:Java基础知识+sql的主要内容,如果未能解决你的问题,请参考以下文章

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql