面试题day19

华为

7.28一面

  • 线程的创建方式

    继承thread、实现runnable、实现callable

  • 创建一个线程一般用哪种方式

    callable

  • 线程池用过哪些

    固定线程池、单线程池 队列太长

    定时线程池、缓存线程池 核心线程多

  • 线程池的七大参数

    核心线程数、最大线程数、阻塞队列、线程存活时间、存活时间单位、线程工厂、拒绝策略

  • 线程池的工作流程

    核心线程数>阻塞队列>最大线程数>拒绝策略

  • sleep和wait的区别

    调用时机、所属类、是否释放锁

  • spring的IOC和AOP的理解

    • Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。 IOC 容器负责创建对象,将对象连接在一起,配置这些对象,并从创建中处理这些对象的整个生命周期,直到它们被完全销毁。
    • Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理。
  • spring中的bean的单例和多例,以及为什么用多例,什么情况下使用多例

    多例保证线程安全

  • 单例模式怎么保证线程安全,volatile是防止指令重排

    双重校验锁

  • MySQL一条语句查询慢是什么原因以及如何排查,他想问explain

    • 发现慢SQL

      • show processlist查询当前慢sql的语句
      • 开启慢日志 set global slow_query_log=1;
    • 优化慢SQL

      • explain sql语句的方式查看慢sql的执行计划

      • 分析该SQL语句索引使用情况,全表扫描情况

8.10 二面

  • spring和springboot区别

    自动配置

  • mybatis的取参方式,传参方式

    匿名(传参顺序)、@param指定、map、实体

    {}、${}

  • bean的注入方式

    set方法注入、构造器注入、静态工厂注入、实例工厂注入

  • spring 的两大思想IOC和AOP,AOP实现方式

  • spring mvc的执行流程

    • 请求传入dispatcherservlet
    • 传入处理器映射器,转换为controller,返回执行链
    • 传入处理器适配器,调用底层的方法,返回ModelAndView
    • 传入视图解析器,返回View
    • 解析View,返回响应
  • 序列化和反射是什么,序列化接口实现

    反射是把java类中各个成分映射成一个个java对象也就是Class类对象;对象转换为字节序列的过程称为对象的序列化、字节序列恢复为对象的过程称为对象的反序列化

    Serializable、Externalizable

  • 三大特性

    封装继承多态

  • list set map区别

    list 有顺序可重复

    set 无序不重复

    map 键值对

  • 接口和抽象类区别,JDK1.7和1.8接口的改变

    默认方法

  • redis的五大基本数据类型

    string 缓存 session共享 分布式锁

    list 消息队列

    hash 存储对象

    set 集合

    zset 排行榜

  • redis的两种持久化方式,redis的默认持久化方式

    aof 命令

    rdb 快照 默认

  • redis中的删除策略

    定时删除、惰性删除、定期删除

  • ACID四大特性

    一致性、原子性、隔离性、持久性

  • 四个隔离级别,mysql的默认隔离级别

    ru、rc、rr、s

  • 聚簇索引和非聚簇索引区别

    数据存储方式、二级索引查询

  • left join和inner join

    对左表记录不做要求、对双表记录都有要求

  • 线程和进程的区别

    进程是操作系统分配资源的单位

    线程是调度的基本单位,线程之间共享进程资源

  • 线程的几种状态

    创建、死亡、运行、就绪、阻塞

  • 线程池的实现方式

    • 通过 ThreadPoolExecutor 手动创建线程池。
      • 定长线程池、单线程池、定时线程池、缓存线程池
    • 通过 Executors 执行器自动创建线程池。
      • 自定义线程池
  • 线程池的拒绝处理策略

    直接抛出、最早抛出、抛出异常、发起者执行

  • MQ了解吗

  • linux了解吗

    chmod 授权

    ps -ef | grep 查看进程

    kill -9 杀死进程

    tail -f 实时读取日志

    netstat -anp | grep 查看端口号

    ping 测试地址

    mkdir rmdir touch rm mv cp cat

posted @ 2022-08-03 22:42  Faetbwac  阅读(28)  评论(0编辑  收藏  举报