最近面试了一些公司,针对面试中遇到的问题在此记录,提升自己,造福大家
一、java源码相关
ArrayList创建和add等各种api使用原理
HashMap 的创建,put原理,和HashTable的区别,resize的原理
HashMap和HashTable在1.7版本之后的区别,针对创建时和put时处理的方式不同(红黑树,CAS、ABA处理)
各种IO交互(AIO/ NIO/ BIO)
二、 JVM相关
(bookname:深入理解java虚拟机)
jvm分区
java文件加载到gc全流程
gc收集算法(标记计数算法,可达性算法)gc清理逻辑
G1/CMS收集器
堆栈溢出原因,处理
内存分配和回收策略
虚拟机贱虫和故障处理工具
jvm调优
web容器加载器架构实现(tomcat,jetty……)
线程安全,锁优化
三、多线程
线程池的创建有几种方式
submit和excute使用的区别,怎样避免死锁
线程的锁机制(lock和synchronized)
线程调度相关
四、数据库
mysql中innodb myisam 两种引擎区别,是否支持事物,索引实现(B+,Hash)复合索引/二叉树
group by和order by
数据库调优
大量数据下分库分表处理
跨多数据库查询
cap,CAP即,一致性(Consistency), 可用性(Availability), 分区容忍性(Partition tolerance);
redis有什么优点(单线程,分布式,持久化,事务,原子性)
redis的主从 、哨兵的实现原理
redis支持的数据操作类型,发布订阅,计数器
redis作为注册中心的优点,和zk的区别
五、Spring框架相关
ioc实现原理
aop具体实现,动态代理
工厂bean和bean工厂
反射使用
注解实现
六、分布式
dubbo具体调用原理(消费者&服务者)
多注册中心的使用场景
负载均衡策略
注册中心的注册原理(zk和redis注册中心有什么区别)
目前遇到的问题是这些,欢迎各位看官留言补充。BX