软通动力一面
Linux
-
进入目录命令
-
创建文件、创建文件夹
-
查询日志,实时日志?历史日志
-
启动jar包 && 后台运行 && 打印日志到指定文件命令
-
还了解什么高阶的命令
线程池
- 线程池核心参数有几个?
- 线程提交任务流程
- 线程池任务抛异常了怎么办?
- 核心线程和非核心线程的区别?
集合
-
常见的集合类型有哪些?
-
ArrayList 和 LinkList的区别?
-
hashmap线程安全吗?如果并发使用会有问题吗?
Java基础
-
== 和 equals 的区别?
-
StringBuilder 和 StringBuffer的区别?
MySQL
-
MySQL 的索引是什么数据结构?为什么默认数据机构是B+树?
-
hash索引有什么特点?
-
索引失效场景有哪些?
-
为什么不等于符号也会导致索引失效?
答案
Linux
nohup java -jar 'jar包名' > '日志文件名' &
线程池
- 七个:核心线程、最大线程、空闲时间、时间单位、工作队列、线程工厂、拒绝策略
- 就是有三个容器:核心线程、等待队列(如果满了)、扩张线程池到最大线程数量)
- 一,在可能抛出异常的时候,让调用方能够感知到 二,如果线程没有被处理,线程被回收
- 这个没有绝对的区别,无非就是创建早晚的区别,当有异常时,会被回收,然后线程池创建一个新的线程来替换,线程池本身只会保证创建的线程的数量复合我们的配置,对管理的线程不会有底层区分,所以并没有本质区别
集合
-
常见的集合类型分为两块,一是Collection,分为List、Set、Queen ,二是Map,map又分为hashtable、hashmap、treemap、ConcurrentHashMap
-
ArrayList 和 LinkList的区别?
- 不安全,并发使用会产生
fail-fast
机制,抛出异常,解决方法:比较简单的一个方法可以使用hashtable
,本质就是给每个方法来了一个syncronized
锁,效率比较低; 或者就是使用ConcurrentHashMap
(它是乐观锁 + syncronized 来保证线程安全的)
Java基础
-
== 和 equals 的区别?
-
StringBuilder 和 StringBuffer的区别? 链接直达
MySQL
-
索引的数据结构是
B+
树,还有hash索引
, 但是一般业务开发中使用的大多是B+
树,因为实际业务中经常有分组查询、批量查询需求,B+树叶子结点存储了所有数据,使用双向链表链接叶子结点,更加适合业务场景 -
hash数据结构
==> (k,v) ==> 查询快 =多快?=> 正常时间复杂度为O(1), 平均速度O(logn) -
四种失效场景:左模糊查询、使用函数、or 查询、不等于符号
-
因为使用不等于符号涉及到MySQL底层的一个优化器策略:会根据索引过滤的数据量进行判断,如果查询出来的数据很多(索引被过滤掉的数据很少),造成了索引失效的效果,但其实这是MySQL底层做的一个优化器策略