面试总结
Java基础
- ArrayList如何扩容?
- hashcode相关
- Map以对象为key可能会出现那些问题?
- hashMap底层是怎么实现的,怎么解决冲突问题?
- 手写常见的数组排序?
- 手写常见的数据的查找?
- a=a+b,a+=b有什么区别?
- 手写有序数组的2分查找?
- ArrayList和linkedList的区别(原理)?
- ConcurrentHashmap中分段加锁的实现原理?
- 内部类如何访问外部类的变量?使用场景是什么?
- 接口和抽象类的区别和用法的区别?
- final的使用场景?
- int和Integer区别?(五点区别)开发时候要用哪个?为什么?
- Try-catch-finally执行顺序(其实是问字节码指令的生成和执行顺序)特殊例子
- Object 对象中的方法,能 "." 出来的方法?
- final如何实现不可变?
- 拦截器和过滤器的区别?
- 集合下边的类 ?(单列集合collection、list、set、双列集合 map)
- 从request中能获哪些些信息?
JVM
- jvm在什么情况下会执行GC?
- 对象已死的算法?
- 常用的GC算法?
- 类加载的七个阶段(类加载流程)(类加载机制)?
- 类加载器(ClassLoader)的分类(四类)?
- JAVA类加载器的作用?
- 双亲委派模型?
- Jvm内存模型,每个区域作用?
- 怎么定位outomenryerror?
- 新生代老生代的默认比例?
- 本地缓存 软引的处理
- 跨代回收机制
- New 对象一定在堆上吗
Spring
- spring事务和redis事务如何保证一致?
- spring配置文件中常用的配置都要哪些?
- 自定义注解的原理,如何实现自定义注解?
- Spring里边常见的注解及作用?
- 注解@autowire和@resource注解的区别?
- Springmvc的执行过程?
- spring的事务传播机制?
- aop的源码实现?用到什么模式(工厂模式?)
- Spring AOP、IOC的底层实现原理?
- AOP 在项目开发开发中使用到的地方
- Spring如何用拦截器处理日志?
- 通过拦截器如何获取接口返回的参数?
- AOP的底层源码实现原理?
- SpringMvc中注解的实现原理?
- mybatis和Hibernate的区别?(5点)
- resultType和resultMap的区别?
- spring 事务的实现?
- MyBatis介绍,scan的作用?
- 如何在拦截器中实现日志的统一记录管理,在拦截器中记录到每个方法的日志?
- @bean作用
- @Transactional里边参数
- service 事务嵌套事务执行方式(衍生异常嵌套异常)?走默认传播机制,合并执行
- RestFull介绍下,有什么特点?
- springBoot
- springBoot相关面试题?
- Spring和spring boot区别 怎么把自己写的组件集成到spring中?
zookeeper
- zookeeper实现分布式锁,可能会出现哪些问题?
- zookeeper相关?节点问题,如果分布式锁使用的是临时节点,客户端断开后出出现什么问题?
- zookeeper选举机制?
redis
- redis实现分布式锁可能会出现哪些问题?
- redis集群中hash槽的概念?
- Redis常用的数据类型?适合存储什么类型的数据?
- 为什么项目要用redis
- redis成为瓶颈时怎么办
- redis缓存击穿的应对策略?项目中的具体实现?
- 缓存失效、缓存击穿、缓存雪崩的定义?如何解决?
- 缓存击穿的处理方法?
- 缓存失效时,并发访问如何让一个KEY只被加载一次,拦截其他的请求?
- Redis的命令 (字符串、Hash、List、Set、SortSet、发布订阅、事务、服务器)
- Redis过期机制?(共六种数据淘汰策略。(分三类))
- Redis 持久化方式 (aof、rdb)
- Redis集群怎么弄的
- Redis Slave怎么同步的 (三种情况:初始化同步、运行中、断线重连)
- setnx作用 操作时候服务器或客户端异常?(SET if Not eXists)
dubbo
- dubbo相关面试题?
- dubbo的结构?
- dubbo的负载策略 默认负载?
多线程
- synchronized的实现原理是什么?
- AQS理论
- synchronized和AQS锁的区别?
- threadLocal如何进行线程隔离?
- 线程死锁产生的必要条件,如何避免死锁?
- volitile如何在不用synchronized的情况下实现原子性?
- CAS和ABA问题?
- 分布式锁? (zk、redis)
- 线程安全的map及实现原理?
- concurrentHashMap如何实现线程安全?
- 线程池参数?线程池类型?工作原理?拒绝策略?创建和提交?
- 如何创建线程池?
- 一个固定线程池,最小是10个,最大是20个,线程池中的线程数不释放,第21个线程会怎么样?
- synchronized和volitied的区别?
- ThreadLocal变量的作用范围,应用场景?
- Synchronized和Lock锁的区别?
- 读写锁底层原理?
- 可重入锁底层原理?
- 线程的内存模型?
- Volitile关键字的原理?
- 为什么hashMap不是线程安全的集合,线程安全的集合有哪些?什么叫线程安全?
- 多线程同步除了Synchronized还有什么类似实现?
- CAS参数?(三个参数)
- ReadWriteLock, ReentrantLock,ReentrantLock.Condition的含义
- ReentrantLock和synchronized关键字的区别? (原生支持、API支持)
- ReentrantLock公平锁非公平锁的实现原理
- ReentrantLock和synchronized关键字的区别? (原生支持、API支持)
- AtomicReference,AtomicStampedReference(针对CAS的ABA问题要答出这个API)
- AtomicReference,AtomicStampedReference(针对CAS的ABA问题要答出这个API)、
- 线程池,cachedThreadPool能创建多少线程(不要说Integer.MAX_VALUE?)
- 进程和线程
- 进程和子进程
- 进程间通信
- Hashtable和concurrenthashmap 锁是怎么实现的
- Synchronized jvm是怎么实现的
- 逻辑地址、 线性地址、 物理地址(启动分段、启动分页)
- update库存问题
Mysql
- 数据库如何实现mvcc
- Mysql事物隔离级别,默认级别?
- MySQL索引建立原则?
- 创建索引的经验
- mysql的隔离级别,你们用的什么级别
- 什么是事务的传播机制
- mysql索引的分类及实现原理?
- 手写groupby分组,考察by的字段必须出现在查询列表中?
- mysql查询语句如何做优化?
- 如何分析一次慢查询?
- mysql如何走组合索引?a=1,b=1,c=1;等组合,只有a在前边了才会走索引
- 表中设置的索引是a,b组合索引,如果查询语句为:select * from table where b,a 是否会走索引?
- MySQL的几种架构 一主多从 (同步机制)、会出现的问题、怎么解决?
- 主键索引和唯一索引的区别
- 分表怎么设计查询
- Hash分表查询问题
- Mysql 怎么看一条sql用了什么锁
- mysql explan type indexMerge 还有slow log别忘了 数据量少时即使没用到索引也不会触发slow log
- MySQL怎么实现有这条数据就更新没有就插入(on duplicate key update)
- 数据库分库分表如何实现,常见的分库分表的方法,主从复制原理,读写分离原理,如何实现?
设计模式
- 如何实现策略模式
- 手写性能最优的单利模式?
- 常见的设计模式?手写单利模式
- 数据结构
- 红黑树原理?结构图?
- 单链表翻转
- 怎么看单链表有环
队列
网络协议
- http和https的区别?
- GET和POST区别 (三方面:1、原理2、安全性3、数据传输量)
- GET的数据是在哪里传递的?保存的格式?
- 403什么意思?如何处理项目中的403
- TCP三次握手和四次挥手?
- 输入url到页面加载都发生了什么事情?
- TCP三次握手过程
RPC
- https调用时对参数是加密的么
- 为什么会产生跨域?如何解决?
MQ
- Rabbitmq几个组件
- Rabbitmq查看队列中数量
- Rabbitmq 通配符数据结构
- Rabbitmq的几种集群模式(两种模式)
- Rabbitmq支持批量消费吗 ?(Prefetch count参数)
算法
- 快速排序 (选择排序和冒泡排序) (查找: 一般查找、二分查找)
- N阶乘递归?(if (n == 1 || n == 0) return 1;else return n * Factorial(n - 1);)
- 一个数组有两段递增的,第一段最小值比第二段最大值大怎么查找
- 两个10G的大文件存储的是url查找相同的url
- 写一个算法 输入 int[] arr = {11,22,3,4,55,67},输出 结果 map<Integer,Integer> 每个数字出现的次数?
工具
- maven中install和deploye区别?
- git和svn的区别?(集中、分布式)git如何提交代码到资源库?
项目设计
- 介绍下项目,在项目设计中的一些原则?
- 介绍下最熟悉的项目,其中的角色,编写的模块?
- 接口出现异常,是直接暴露给用户还是?
- 如何设计一个秒杀系统?
- 公司系统架构
- 线上排查处理oom?
- 画了下系统的架构图
- 问题排查原则
- 排查的思路?
- 系统有没有高并发,如何保证并发安全?
- 系统扩展性如何设计
- 找一个最有挑战性的项目介绍一下
- 怎么设计一个无锁的队列
- 下发配置网络抖动问题
- Java9的新特性
- 接口1万并发怎么优化
- 调用服务不稳定怎么处理
- Id怎么生成 id生成器
- 线上cpu100%如何排查?
- 发券的时候如何防止发超?
- 发券的规则如何设计
- 对于规则的变和不变如何进行匹配,(策略模式),能说下spring中什么地方用到策论模式
Linux
- Linux常用的命令?
- 如何使用命令和工具进行分析?
- linux文件查找替换命令
- 怎么查看cpu占用最高的线程的方法?(top -u tomcat -c)
- 查看cpu使用率?
分布式
- 一致性hash环
- Mongodb数据存放规则 mongodb集群
- 负载均衡怎么处理session问题? (三种方案)
不积跬步,无以至千里;不积小流,无以成江海。