JAVA面试题(47)

210 阅读5分钟

    本文首发于cartoon的博客
    转载请注明出处:cartoonyu.github.io/cartoon-blo…

java

  1. java对象引用类型以及对象回收的策略
    1. 强引用
      1. 通过显式的new或反射生成对象
      2. 不会被回收
    2. 软引用
      1. 在内存不足的时候会回收
    3. 弱引用
      1. 无论内存是否足够,GC都会回收
    4. 虚引用
      1. 无论什么时候都会被回收
  2. java注解的作用
    1. 文档生成
    2. 编译检查
    3. 标识功能
  3. 乐观锁与悲观锁的区别
    1. 数据的修改认为上
      1. 乐观锁认为数据不会被修改
      2. 悲观锁认为数据总被修改
    2. 锁的种类上
      1. 乐观锁对写操作不加锁
      2. 悲观锁在读写操作都加锁
    3. 执行方法上
      1. 乐观锁通过版本号以及CAS算法实现
      2. 悲观锁通过锁的等待与释放实现
    4. 执行效率上
      1. 乐观锁比悲观锁的效率高
    5. 数据正确性上
      1. 悲观锁比乐观锁的要好
    6. 使用场景
      1. 悲观锁用于写操作频繁的场景
      2. 乐观锁用于读操作频繁的场景
  4. CAS与synchronized的使用场景
    1. CAS不断自旋更新选定的值,用于读操作频繁的场景
    2. synchronized通过锁的竞争以及释放进行互斥资源的访问,用于写操作频繁的场景

数据库

  1. 数据库select语句的执行流程(客户端到存储引擎)
    1. 客户端通过TCP三次握手与服务端进行连接
    2. 连接器判断账号信息是否有效
    3. 有效,则进入第三步
    4. 无效,连接器返回Access denied的错误
    5. 查询缓存中是否有执行的记录
      1. 不建议使用,可以通过query_cache_type关闭,MySQL 8.0去除了查询缓存的功能
      2. 有执行记录,则返回上次执行结果
      3. 没有执行记录,进入第四步
    6. 分析器进行词法分析,语法分析
      1. 词法分析
        1. 判断输入的SQL语句中的关键词的含义
      2. 语法分析
        1. 判断SQL是否合法
        2. 若合法,进入第五步
        3. 若不合法,返回 You have an error in your SQL syntax错误到客户端
    7. sql语句经过优化器选择最佳执行策略
      1. 多索引情况下的最佳索引的选择
      2. 多表关联时决定表的连接顺序
    8. sql语句交由执行器进行存储引擎的操作并返回结果
      1. 根据from找到需要查询的表,根据where形成有效的结果集合
      2. (如果有order by,对数据进行排序)select返回结果
  2. 数据库更新语句的执行流程(客户端到存储引擎)
    1. 客户端通过TCP三次握手与服务端进行连接
    2. 连接器判断账号信息是否有效
      1. 有效,则进入第三步
      2. 无效,连接器返回Access denied的错误
    3. 查询缓存中是否有执行的记录
      1. 不建议使用,可以通过query_cache_type关闭,MySQL 8.0去除了查询缓存的功能
      2. 有执行记录,则返回上次执行结果
      3. 没有执行记录,进入第四步
    4. 分析器进行词法分析,语法分析
      1. 词法分析
        1. 判断输入的SQL语句中的关键词的含义
      2. 语法分析
        1. 判断SQL是否合法
        2. 若合法,进入第五步
        3. 若不合法,返回 You have an error in your SQL syntax错误到客户端
    5. sql语句经过优化器选择最佳执行策略
    6. sql语句交由执行器进行存储引擎的操作并返回结果
    7. 两段式提交
      1. 检查并读入相关数据页到内存
      2. 将更新语句的操作行写入内存
        1. 写入操作记录到readlog中,处于prepare状态
        2. 写入操作记录到binlog中
        3. 事务提交,处于commit状态
  3. mysql执行计划的了解
    1. 指定场景
      1. server层中的分析器中
    2. 作用
      1. 得出最佳sql执行情况,加快访问速度以及减少资源的消耗
    3. 使用explain+sql语句进行计划的查看
    4. 相关概念
      1. type(连接的类型)
      2. possible_keys(可能使用到的索引)
      3. key(使用到的索引)
  4. Mysql中Text与Blob的区别
  5. 存储数据表现形式
  6. Text只能存储文本型数据
  7. Blob存储二进制的大数据
  8. 大小写敏感
  9. Text大小写不敏感
  10. Blob大小写敏感
  11. 使用场景
  12. Text存储大文本
  13. Blob存储小文件型数据

计网

  1. TCP滑动窗口的了解
    1. 滑动窗口是TCP发送进程控制数据发送的速度以及数据传输可靠性的重要保证
    2. 有关概念
      1. 从左到右是自定义指针p1,p2,p3
      2. p1左的数据都是已发送已收到确认的数据,p1就是发送进程的发送窗口的左边界
      3. p3右的数据当前时刻不允许发送的数据,p3是发送进程发送窗口的右边界
      4. p2在p1与p3之间
        1. p1至p2的数据,是已发送未确认的数据。收到确认后,p1进行右移;若出现丢失或者超时,重传p1与p2之间的数据
        2. p2至p3是允许发送未发送的数据区间。
    3. TCP的发送窗口根据服务器端回传的确认报文或者拥塞控制进行扩大或缩小。
  2. 对称加密与非对称加密的区别以及常见算法
  3. 区别
  4. 对称加密用同一密钥进行加密与解密
  5. 非对称加密用公钥进行加密,私钥进行解密
  6. 常见算法
  7. 对称加密
    1. DES
      1. AES
  8. 非对称加密
    1. DSA
      1. RSA

操作系统

  1. 用户态与内核态的区别
    1. 操作范围
      1. 用户态在内存中运行
      2. 内核态可以操作IO,外设等
    2. 执行指令
      1. 用户态只能执行非特权指令
      2. 内核态可以执行特权指令
    3. 抢夺处理机
      1. 用户态可以抢占处理机
      2. 内核态不可以抢占处理机
  2. 磁盘调度算法
    1. 先来先服务
    2. 最短距离优先
    3. 扫描算法
    4. 循环扫描算法

算法

  1. 学生出勤记录 I