【每日一刷Java基础+sql】2021-5-18

前言

昨天进行了某公司的笔试,感觉到基础知识的薄弱,所以打算刷一些java基础知识题来提高一下自己对基础知识的掌握熟练度。但是光刷题不复习或者不更正自己的错题那么效率也是很低的,所以打算把我的题解写在博客上,达到巩固复习的作用。
(我是用牛客网来刷题的,因为牛客网有个专门刷基础题的功能,这里面不仅能刷java还能刷其他的,比如c、c++、数据库什么的,反正内容是非常的多,基本上所有的都涵盖了。
网站链接:https://www.nowcoder.com/intelligentTest)
基础知识题每天会刷10题,同时还会刷一下sql语句的题目,也是在牛客网,在leetcode也有,等把牛客网的全部刷完再刷leetcode,因为leetcode好像是要会员的,到时候开个会员再刷
牛客sql刷题网址:https://www.nowcoder.com/activity/oj?tab=1
Leetcode sql刷题网址:https://leetcode-cn.com/problemset/database/

JAVA基础知识题

【每日一刷Java基础+sql】2021-5-18_第1张图片
答案:B
题解:C、接口之间是可以相互继承的
D、接口是多继承,而类是单继承。一个类可以继承多个接口,一个类只能继承一个类。

【每日一刷Java基础+sql】2021-5-18_第2张图片
答案:B
题解:这题不是很熟悉,所以看了一下下面的解释。
javac.exe是编译功能javaCompiler
java.exe是执行程序,用于执行编译好的.class文件
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof.exe是剖析工具

【每日一刷Java基础+sql】2021-5-18_第3张图片
答案:B
题解:权限修饰符还是要记一下,找规律记

修饰符 类中 同包 不同包的子类 不同包非子类
public Y Y Y Y
protected Y Y Y N
default Y Y N N
private Y N N N

【每日一刷Java基础+sql】2021-5-18_第4张图片
答案:D
题解:这题大意了,当时心里面想着两个负数相除应该是个正数,结果余数和这个没关系。

System.out.println((-3)%2);//-1
System.out.println(4%3);//1
System.out.println((-3)%(-2));//-1
System.out.println(4%(-3));//1

我们可以发现:取模运算,余数的符号跟被除数符号相同。

【每日一刷Java基础+sql】2021-5-18_第5张图片
答案:C
题解:这题咋一看感觉不会,后面才发现只是单纯的导包,虽然我们用ide会自动给我们导包,但是还是要了解一下。

【每日一刷Java基础+sql】2021-5-18_第6张图片
答案:D
题解:对线程的内容还是不太熟悉。在Thread中,run方法是个空方法,没有具体实现。Bground继承了Thread,但是没有重写run方法,那么调用run方法肯定是无输出。

【每日一刷Java基础+sql】2021-5-18_第7张图片
答案:C
题解:我想吐槽一下这题,一刚开始我因为是单选,所以就选了个C,但是后面看着题目是多选,那么通过排除法肯定是选A、B结果他最后自己选了个单选C,哎,被题目给坑了,后面还会遇到很多这种题目。

【每日一刷Java基础+sql】2021-5-18_第8张图片
答案:A、B、C、D
题解:这题考的是JVM,还没复习到,之前学过一点点,感觉还是太菜了。

1、强引用:一个对象赋给一个引用就是强引用,比如new一个对象,一个对象被赋值一个对象。
2、软引用:一般不会轻易回收,只有内存不够才会回收。
3、弱引用:一旦垃圾回收已启动,就会回收。
4、虚引用:不能单独存在,必须和引用队列联合使用。主要作用是跟踪对象被回收的状态。

SQL语句题

SQL1:查找最晚入职员工的所有信息

//先按日期降序排序,然后再显示第一条就是最晚入职的员工
select * 
from employees 
order by hire_date desc 
limit 1;


//offset:起始的条目索引,默认从0开始;size:显示的条目数
select * 
from employees 
order by hire_date desc 
limit 1 offset 0;


//offset:起始的条目索引,默认从0开始;size:显示的条目数
select * 
from employees 
order by hire_date desc 
limit 0,1;


//使用子查询,最后一天的时间有多个员工信息
select * 
from employees
where hire_date = (
	select max(hire_date) 
	from employees
);

SQL2:查找入职员工时间排名倒数第三的员工

//子查询。能够找出同一时刻入职的所有人。
select *
from employees
where hire_date = (
    select distinct hire_date
    from employees
    order by hire_date desc
    limit 2,1
);

//分页
select *
from employees
order by hire_date desc
limit 1 offset 2;

SQL3:查找各个部门领导薪水详情以及其对应部门编号

//连接查询
select d.emp_no,salary,from_date,d.to_date,dept_no
from salaries s, dept_manager d
where s.emp_no = d.emp_no
and s.to_date = "9999-01-01"
and d.to_date = "9999-01-01"
order by s.emp_no;

//关于为什么一定要两个表格的时间都限制成规定时间(9999-01-01)呢?因为薪水表是按年发的,而题目要查找的是当前的薪水,所以要过滤掉以前,而dept_manager是因为有领导会离职,to_date时间不一定是9999-01-01,所以要过滤过离职的领导

SQL4:查找所有已经分配部门的员工的last_name和first_name以及dept_no

//sql92语法
select last_name, first_name, d.dept_no
from dept_emp d, employees e
where d.emp_no = e.emp_no;

//sql99(inner可以省略)
select last_name, first_name, d.dept_no
from dept_emp d
inner join employees e
on d.emp_no = e.emp_no;

SQL5:查找所有已经分配部门的员工的last_name和first_name以及dept_no

//左外连接
select last_name, first_name, d.dept_no
from employees e
left outer join dept_emp d
on e.emp_no = d.emp_no;

你可能感兴趣的:(#,牛客网,java,sql,jvm,数据库)