Java T3 面试

1 线程阻塞、运行状态、就绪、可以由什么状态变成什么状态的,由这个状态变成那个状态需要满足什么条件

进程状态转换

2 线程都是建立在cpu资源消耗上 看线程那种是消耗资源最大的 非什么请求式和请求式那个占用内存是最大的?

3 死锁问题?

当线程 A 持有独占锁a1,并尝试去获取独占锁 b1 的同时,线程 B 持有独占锁 b1,并尝试获取独占锁 a1 的情况下,就会发生 AB 两个线程由于互相持有对方需要的锁,而发生的阻塞现象,我们称为死锁。

怎么防止死锁?
1)尽量使用 tryLock(long timeout, TimeUnit unit)的方法(ReentrantLock、
ReentrantReadWriteLock),设置超时时间,超时可以退出防止死锁。
2)尽量使用 Java. util. concurrent 并发类代替自己手写锁。
3)尽量降低锁的使用粒度,不要几个功能用同一把锁。
4)尽量减少同步的代码块。

4 数据库 子查询 自己多写点查询语句 熟悉表的关系

数据库2019-03-19 practice

-- 查询员工工资大于本部门的平均工资的员工信息?

解析:条件则是员工工资大于平均工资

SELECT *   -- 主查询
from employee e1
WHERE salary > 
      (
           SELECT avg(salary)
             FROM employees e2
             WHERE e2.department_id=e1.department_id
        )  ;
查询各部门的人数在5人以下的员工信息?

解析:需要对各部门人数进行筛选,并且是5人以下

SELECT *
FROM employees
WHERE department_id in
     (
           SELECT e1.department_id
             FROM employees e1 join departments d1 
                     on e1.department_id=d1.department_id
             GROUP BY d1.department_id
             HAVING count(*)<5
         );
查询各部门的平均工资大于总的平均工资的各部门的平均工资?

(解析:查询的是各部门的平均工资,所以对各部门进行筛选)

SELECT department_id,avg(salary)
from employees
GROUP BY department_id
having avg(salary) > 
       (
             SELECT avg(salary)
             from employees
             );
-- 5:查询和'Machael'同一个工作城市的员工信息
SELECT *
from employees  e 
     join departments d
               on e.department_id=d.department_id
         join locations l
                    on d.location_id=l.location_id
where l.city in
    (
            SELECT l.city
            from employees e
            join departments d
                 on e.department_id=d.department_id
          join locations l
                 on d.location_id=l.location_id
WHERE e.first_name='Michael'
        )  ;

5 动力节点 线程视频 看!、

6 collection 下边的几个接口 哪些是实现了 哪些没有 除了list、set、map、vector、还有一个从来没见过的东西。

7 jsp,html标签长啥样,引入函数怎么引,<%! 函数声明 %> bold加粗、<% @ 引入包%> 查!!

使用<%!  %>标签可以自定义函数
<%! 
String hello(){ 
    return "您好,朋友,欢迎进入JSP世界,^_^"; 
} 
%>
首先需要导入一个jar包:
jstl.jar(WebRoot\WEB-INF\lib目录下)
然后在需要引入jstl的标签中加入下面语句:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
即可。

8 测试,白盒测试的条件覆盖和判定覆盖, 条件覆盖覆盖得多还是判定覆盖覆盖得多?给你一段代码,那个测出来是判定覆盖,查!!

逻辑覆盖率:语句覆盖<条件覆盖<判定覆盖(分支覆盖)<条件-判定覆盖<组合覆盖<路径覆盖
1、语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句
至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误。

2、判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结
果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能发现每个条件的
错误。
3、条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有
可能结果至少出现一次,但未必能覆盖全部分支。

4、判定/条件覆盖是使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的
所有可能结果也至少出现一次。

5、条件组合覆盖是使每个判定中条件结果的所有可能组合至少出现一次,因此判定本身的
所有可能解说也至少出现一次,同时也是每个条件的所有可能结果至少出现一次。

6、路径覆盖是每条可能执行到的路径至少执行一次。

    其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆
盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆
盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能
代替条件覆盖和条件组合覆盖。 

8 反射机制?

反射

9 单例模式!!

1、懒汉式,线程不安全
public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
  
    public static Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}
2、懒汉式,线程安全
public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
    public static synchronized Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}

3、饿汉式
是否 Lazy 初始化:否

是否多线程安全:是

实现难度:易

描述:这种方式比较常用,但容易产生垃圾对象。
优点:没有加锁,执行效率会提高。
缺点:类加载时就初始化,浪费内存。
它基于 classloader 机制避免了多线程的同步问题,不过,instance 在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中大多数都是调用 getInstance 方法, 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化 instance 显然没有达到 lazy loading 的效果。

实例
public class Singleton {  
    private static Singleton instance = new Singleton();  
    private Singleton (){}  
    public static Singleton getInstance() {  
    return instance;  
    }  
}

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
eureka注册中心他就是登记一下,然后你就去找他,但是有一天你找不见他了,这个时候你又来注册中心找,谁能给你提供这个服务,例如生活委员张艺涵突然找不到了,生活方面突然解决不了了,然后你再去注册中心看看谁可以给你解决这个问题,结果发现李松可以解决这个问题。没有调用不调用这个问题,是别人主动向他发起的,我发起,我要去找你注册中心;就是我告诉注册中心,说我来了,然后eureka说你登记一下,登记一下他就存有这个地址,另外一个,他来注册中心干嘛,他也注册了,注册了以后他可能调别的服务,调别的服务完成别的功能,就去注册中心找,看看有没有我想要的东西,如果有,注册中心就告诉他谁谁可以,如果没有就告诉他我也没有。

跟hr沟通,我大致理解一下,你是不是这个意思,然后我就把我的意思给他说一下,你看看我的理解对不对,然后我把我的意思很清晰的表达一下。

10 Springmvc底层原理 以及分页的内容 redis token。

11 内部类 静态类

12 加载速度

加载速度