记录一下面试时问的那些问题:
1.java基础
hashmap的数据结构和扩容原理,jdk1.7和1.8的区别
concurrentHashmap的数据结构和扩容原理,jdk1.7和1.8的区别
CopyOnWriteArrayList的原理
ThreadLocal原理
stringbuffer和stringbuilder的区别
arraylist和linkedlist的区别
volatile关键字
synchronized关键字
lock和synchronized的区别
reentrantlock可重入锁的实现原理(sync,公平锁和非公平锁)
jdk1.8的lambda表达式
Java的8种数据类型字节数和取值范围
深拷贝和浅拷贝
java中用什么数据类型存储数据:BigDecimal存储或者直接以分为单位存储int型
子类和父类之间的静态代码块、静态方法、非静态代码块、构造函数之间的执行关系
序列化
Java值引用和类型引用
红黑树和二叉平衡树区别
悲观锁和乐观锁,乐观锁出现的问题
2.多线程
线程的状态
线程的几种实现方式
线程和进程的区别
为什要用线程池
通过线程池创建线程的几种方式
线程池的核心参数,执行过程
拒绝策略
如何获取多线程返回的值FutureTask
CountDownLatch、CyclicBarrier、semaphore
java中多线程执行时,为何调用的是start()方法而不是run()方法
死锁
线程安全: volatile可见性和有序性,原子性要么加锁要么原子操作如atmoticInteger
线程间通信和进程间通信方式
3.设计模式(单例和动态代理最常问)
单例模式:饿汉式和饱汉式双double检查
代理模式:静态代理、动态代理(jdk动态代理和cglib代理实现原理)
策略模式
观察者模式
适配器模式
4.Spring相关
IOC
AOP
bean的生命周期
Spring怎么解决循环依赖的
Spring事务传播机制
springboot和Spring什么关系
springboot启动原理
springmvc执行过程、拦截器和过滤器分别在哪一步执行
5.mysql
innodb和myisam存储引擎的区别
索引的数据结构
索引的种类
覆盖索引
聚簇索引和非聚簇索引
B+ tree数据结构、和b tree的区别
建立索引的原则
联合索引、最左匹配原则
索引的优化
如果主从,怎么解决主从延迟
mysql的四个特性
mysql的隔离级别以及对应产生的三种问题
mysql怎么解决缓读的
select--from--where--group by--having--order by 关键字的执行顺序
6.redis
redis的五种数据结构以及适用场景
持久化方式
数据缓存一致性
string的底层原理
zset的实现原理(跳跃表)
redis的淘汰策略
redis的删除数据:立即删除和惰性删除
redis缓存雪崩和缓存穿透
redis为什么这么快
redis的集群和哨兵机制
7.jvm
数据运行时区域
垃圾回收算法
垃圾回收器:重点cms和g1
java内存溢出和泄漏
gcroot
fullgc和minor gc
类加载机制
四种引用类型
内存分配策略与回收策略
fullgc触发条件
双亲委派机制
Java内存模型
java调优(没有略)
一个对象从新生代进入老年代的过程
8.消息中间件rabbitmq或kfaka
我没用过,简历上没写,面试基本也就没问。
9.git
git常用命令
git rebase
git 回滚git reset和git revert区别
git开发时的流程
10.mybatis
#和&的区别,什么时候必须用&
mapper的实现原理
11.数据结构与算法
算法:七种排序:重点冒泡排序和快排
数据结构:字符串、数组、队列、栈、树、链表
剑指offer
112其他
秒杀:限流+缓存+队列方式实现。限流限制达到后端服务器的qps,常用限流算法;秒杀活动库存缓存在redis,通过redis原子递减防止库存超卖;redis缓存扣减成功,放入队列中,达到削峰的目的。
redis分布式锁:set(key,value,NX,PX,longtime)替代以前的setnx+expire,或者用redission的redLock;释放锁注意事项;如果执行过程过长,超过锁过期时间怎么办;
zookeeper分布式锁(不会,没用过zookeeper)
https原理
最近有没有在看一些技术
未来职业规划
下份工作的期待
原文:https://www.cnblogs.com/heqiyoujing/p/11875828.html