本人工作3年,面过几家大厂,应聘的岗位是高级Java开发工程师,以下是亲身经历的一些面试题,记录下来,留给需要的人~

一、Java基础

1、hashmap的基本原理,内部数据结构,put操作的整体流程,是否线程安全以及为什么?jdk8对hashmap做了哪些优化? 
2、String类为什么是不可变的?StringBuilder和StringBuffer的区别,字符串常量池,StringBuffer为什么是线程安全?加号的底层原理 
3、反射、accessible,动态代理的原理,jdk动态代理与cglib的区别与各自的实现原理 
4、自动装箱,赋值操作,在内存里面是如何实现的。 
5、接口和抽象类的区别 
6、concurrenthashmap的原理,内部数据结构,如何提高并发性,jdk8中做了哪些优化。 
7、hashset的原理 
8、GC原理,分代机制,可达性分析 
9、JVM参数有哪几种,如何调优? 
10、JMM特性有哪些? 
11、什么是跳表?

二、多线程

1、线程有几种状态?之间是如何切换的? 
2、volatile的作用(两点),volatile的原理与应用场景。 
3、线程安全是什么?如何做到线程安全?怎么判断一个类是不是线程安全? 
4、线程同步有几种方式? 
5、threadlocal的原理 
6、synchronized是如何实现的? 
7、sleep和wait的区别 
8、线程池有几种?各自的应用场景 
9、线程池的原理,主要有几个参数?线程池满了怎么办? 
10、Semaphore、countdownlatch、futureTask 
11、submit和execute的区别。 
12、Future接口的几个主要方法 
13、创建线程有几种方式 
14、可重入锁是如何实现的

三、数据库

1、mysql索引原理?为什么是B+树?有什么优点? 
2、事务隔离级别有哪几种?mysql默认的隔离级别是?脏读、幻读、不可重复读是什么情况? 
3、MVCC原理 
4、mysql有哪几种锁? 
5、mysql的存储引擎有哪几种?区别和各自的适用场景。 
6、query cache的配置 
7、ACID 
8、如何优化慢查询 
9、最左前缀匹配原则,原理

四、算法

1、一致性哈希的原理 
2、手写二分查找,快速排序 
3、手写LRU算法 
4、两个链表找交点 
5、两个无限长的数字求和 
6、手写生产者消费者demo 
7、256M内存排序2G大小的文件

五、开源框架与组件

这部分主要根据简历以及项目的实际情况来问。 
1、对spring了解吗?ioc,aop,transaction注解 
2、spingmvc了解吗? 
3、redis与memcache的区别 
4、redis持久化策略,rdb与aof的区别与应用场景 
5、memcached的内存是如何分配的?一致性哈希原理 
6、mq的原理与应用场景,mq是如何保证不丢消息的? 
7、tomcat的原理,主要运用了哪些设计模式? 
8、redis与memcached内存分别是如何回收的? 
9、guava的缓存是怎么实现的?

六、场景设计与架构

1、秒杀场景,如何做技术选型? 
2、设计一个支持高并发的服务,写出核心代码 
3、高并发与高可用如何实现? 
4、服务降级怎么做?限流、限速、超时重试、熔断、自恢复、分别如何实现? 
5、什么是微服务?有什么好处?为什么要这么做? 
6、CAP理论是什么?项目中的哪些场景用到了CAP理论? 
7、BASE理论是什么? 
8、什么时候应该使用mq?

七、其他

1、平时都通过什么方式学习技术? 
2、最近学的一个知识点是什么? 
3、对带人有什么经验? 
4、最熟悉的一个项目是什么? 
5、跳槽的时候,你最看重什么? 
6、为什么跳槽?为什么选择我们公司?