软通动力一面

Linux

  1. 进入目录命令

  2. 创建文件、创建文件夹

  3. 查询日志,实时日志?历史日志

  4. 启动jar包 && 后台运行 && 打印日志到指定文件命令

  5. 还了解什么高阶的命令

线程池

  1. 线程池核心参数有几个?
  2. 线程提交任务流程
  3. 线程池任务抛异常了怎么办?
  4. 核心线程和非核心线程的区别?

集合

  1. 常见的集合类型有哪些?

  2. ArrayList 和 LinkList的区别?

  3. hashmap线程安全吗?如果并发使用会有问题吗?

Java基础

  1. == 和 equals 的区别?

  2. StringBuilder 和 StringBuffer的区别?

MySQL

  1. MySQL 的索引是什么数据结构?为什么默认数据机构是B+树?

  2. hash索引有什么特点?

  3. 索引失效场景有哪些?

  4. 为什么不等于符号也会导致索引失效?

答案

Linux

  1. nohup java -jar 'jar包名' > '日志文件名' &

链接直达

线程池

  1. 七个:核心线程、最大线程、空闲时间、时间单位、工作队列、线程工厂、拒绝策略
  2. 就是有三个容器:核心线程、等待队列(如果满了)、扩张线程池到最大线程数量)
  3. 一,在可能抛出异常的时候,让调用方能够感知到 二,如果线程没有被处理,线程被回收
  4. 这个没有绝对的区别,无非就是创建早晚的区别,当有异常时,会被回收,然后线程池创建一个新的线程来替换,线程池本身只会保证创建的线程的数量复合我们的配置,对管理的线程不会有底层区分,所以并没有本质区别

集合

  1. 常见的集合类型分为两块,一是Collection,分为List、Set、Queen ,二是Map,map又分为hashtable、hashmap、treemap、ConcurrentHashMap

  2. ArrayList 和 LinkList的区别?

链接直达

  1. 不安全,并发使用会产生fail-fast机制,抛出异常,解决方法:比较简单的一个方法可以使用hashtable,本质就是给每个方法来了一个syncronized锁,效率比较低; 或者就是使用ConcurrentHashMap(它是乐观锁 + syncronized 来保证线程安全的)

Java基础

  1. == 和 equals 的区别?

  2. StringBuilder 和 StringBuffer的区别? 链接直达

MySQL

  1. 索引的数据结构是B+树,还有hash索引, 但是一般业务开发中使用的大多是B+树,因为实际业务中经常有分组查询、批量查询需求,B+树叶子结点存储了所有数据,使用双向链表链接叶子结点,更加适合业务场景

  2. hash数据结构 ==> (k,v) ==> 查询快 =多快?=> 正常时间复杂度为O(1), 平均速度O(logn)

  3. 四种失效场景:左模糊查询、使用函数、or 查询、不等于符号

  4. 因为使用不等于符号涉及到MySQL底层的一个优化器策略:会根据索引过滤的数据量进行判断,如果查询出来的数据很多(索引被过滤掉的数据很少),造成了索引失效的效果,但其实这是MySQL底层做的一个优化器策略