京东一面总结
总共时间持续时间约40分钟
1.你用过集合类里面哪些是线程安全的,哪些是线程不安全的?分别举两个例子?
线程安全: HashTable 以及 ConcurrentHashMap
非线程安全 :ArrayList 、 HashMap 等
2.实现线程安全的集合类都有哪些方法,如果是你要用线程安全的集合类,你会怎么选?为什么?
Collections.synchronizedMap(new HashMap<>())
ConcurrentHashMap ,锁的粒度更细,能实现更好的并发。
3. 说一下 ConcurrentHaspMap 的实现?
1.7 分段锁,每个 segment 相当于一把锁,每个 segment 管理一部分数组的位置;
1.8 粒度更细,数组的每个位置相当于一把锁,基于 CAS 和 synchronized 实现, get 方法不需要获取锁
4.ArrayList 容量不够了,怎么办?
介绍了一下 ArrayList 的初始化参数,默认容量是 10 ,扩容是扩 1.5 倍, newCap=oldCap+oldCap>>1; 扩容的过程是先申请一个 newCap 长度的空数组,再把之前 旧数组的值复制过来;
5.ThreadLocal 有了解吗?介绍一下
Threadlocal 为每个线程创建一个变量副本,每个线程操作自己的副本
6.AtomicLong 这种原子类的实现知道吗?
基于循环 CAS 实现的,介绍了一下 CAS
7. 要你动手实现一个从 Java 对象到 Json 的转换,你要怎么做?
不会,说了反射,但是面试官也没说话。
8. 微服务的调用主要基于 RPC 和 Rest 接口,说一下微服务调用的一个基本过程?
不会,扯了一下实习的微服务流程,然后就。。。下一个
9.MySql 数据库 InnoDB 存储引擎支持哪些隔离界别?其中可重复读底层是怎么实现的?
读未提交、读已提交、可重复读、可串行化
10.MySql 中 join 和 union 的区别是啥?
Join 是表连接 ( 横向 ) ,分为 leftjoin/innerjoin/rightjoin/fulljoin;
union 是表拼接 ( 合并表格 ) , UNION 内部的 SELECT 语句必须拥有相同数量的列。列也 必须拥有相似的数据类型
UNION 只选取记录,会选取不同的值;而 UNION ALL 会列出所有记录,包括重复的
11.Spring 里面创建 Bean ,在不指定 Scope 的情况下创建的 Bean 是单例吗?
是的
12.Spring 里面事务的传播级别?比如 A 方法有事务, B 方法没有事务,怎么整?
听不懂,过
13.Spring 框架里面 AOP 是啥?怎么个用法?
对已有方法进行功能的增强,不需要改变业务代码,常用于记录操作日志
14.时间差不多了,你还有什么问题问我?