网络阿里面试题 4/1
1. Java基本类型哪些,所占字节和范围
1 byte boolean
2 chat short
4 int float
8 long double
1. Set、List、Map的区别和联系
set 无序 不重复
有序 重复
map 不重复
1. 什么时候使用Hashmap
key唯一 无需保证实训
1. 什么时候使用Linkedhashmap、Concurrenthashmap、Weakhashmap
Linkedhashmap 需要保证顺序
Concurrenthashmap 并发
Weakhashmap threadlocal
1. 哪些集合类是线程安全的
concurrentHashMap CopyOnWriteArrayList Vector HashTable
1. 为什么Set、List、map不实现Cloneable和Serializable接口
我集合里存了个对象 你要怎么控制他能clone 只能做到浅拷贝
1. Concurrenthashmap的实现,1.7和1.8的实现
jdk7 数组+链表 头插法
jdk8 数组+链表+红黑树 尾插法 8个以上升级红黑树 6个以下降级链表
1. Arrays.sort的实现
快排
1. 什么时候使用CopyOnArrayList
并发安全 内部使用ReentrantLock Arrays.copyOf() 拷贝对象
1. volatile的使用
可见性(缓存一致性jvm lock 命令) 有序性 内存屏障
屏障类型 指令示例 说明
LoadLoad Barries Load1;LoadLoad;Load2 确保Load1数据的装载先于Load2以及后续装载指令的装载。
StoreStore Barries Store1;StoreStore;Store2 确保Store1数据刷新到内存先于Store2以及后续存储指令的存储。
LoadStore Barries Load1;LoadStore;Store2 确保Load1数据的装载先于Store2数据刷新到内存以及后续存储指令的存储。
StoreLoad Barries Store1;StoreLoad;Load2 确保Store1数据刷新到内存先于Load2数据的装载以及后续装载指令的装载。
1. synchronied的使用
1. reentrantlock的实现和Synchronied的区别
锁升级 AQS
1. CAS的实现原理以及问题
乐观锁 Compare And Swap 版本号
1. AQS的实现原理
源码 CAS实现 state值
1. 接口和抽象类的区别,什么时候使用
1. 类加载机制的步骤,每一步做了什么,static和final修改的成员变量的加载时机
加载 连接 初始化
连接时会初始化static final 对象 初始化赋予默认值
1. 双亲委派模型
1. 反射机制:反射动态擦除泛型、反射动态调用方法等
泛型是编译时期的规则 真真生成字节码会被擦除
1. 动态绑定:父类引用指向子类对象
1. JVM内存管理机制:有哪些区域,每个区域做了什么
不和你多bb
1. JVM垃圾回收机制:垃圾回收算法 垃圾回收器 垃圾回收策略
标记-清除 速度快 有内存碎片
标记-整理 相对慢 没内存碎片
标记-复制 相对快 没有内存碎片 需要两倍的空间
G1 region 可预期stw时间 stw一次
CMS 老年代 最短stw stw一次
1. jvm参数的设置和jvm调优
相同的堆内存 对于web项目 年轻代适量调大 减少进入老年代的次数
通过 jmap jstat 观察堆内存 如查看年轻代 gc次数 与老年代gc次数
1. 什么情况产生年轻代内存溢出、什么情况产生年老代内存溢出
老年代不够-担保不了 , 内存溢出或者 内存本身不够
1. 内部类:静态内部类和匿名内部类的使用和区别
静态内部类可当作一个正常的类进行创建
匿名内部类 比如runable使用lamba表达式创建匿名内部类 因为我们只使用一次避免显示的对象产生 减少代码量
1. Redis和memcached:什么时候选择redis,什么时候选择memcached,内存模型和存储策略是什么样的
memcached 多核 没有持久化 存储结构单一 cas保证并发修改
1. MySQL的基本操作 主从数据库一致性维护
binlog row statement mix
1. mysql的优化策略有哪些
索引 组合索引
避免索引失效
1. mysql索引的实现 B+树的实现原理
mysql b+树 只在叶子结点保存数据, 在叶子之间用链式连接 加快遍历
1. 什么情况索引不会命中,会造成全表扫描
索引条件被mysql判定为不如全表扫描
最左原则
1. java中bio nio aio的区别和联系
bio 面向流 阻塞io
nio 面向管道 buffer 非阻塞io
异步io
1. 为什么bio是阻塞的 nio是非阻塞的 nio是模型是什么样的
netty
1. Java io的整体架构和使用的设计模式
reactor