博主工做3年了,面过几家大厂,应聘的岗位是高级Java开发工程师,如下是亲身经历的一些面试题,记录下来,留给须要的人~mysql
1、Java基础面试
一、hashmap的基本原理,内部数据结构,put操做的总体流程,是否线程安全以及为何?jdk8对hashmap作了哪些优化?
二、String类为何是不可变的?StringBuilder和StringBuffer的区别,字符串常量池,StringBuffer为何是线程安全?加号的底层原理
三、反射、accessible,动态代理的原理,jdk动态代理与cglib的区别与各自的实现原理
四、自动装箱,赋值操做,在内存里面是如何实现的。
五、接口和抽象类的区别
六、concurrenthashmap的原理,内部数据结构,如何提升并发性,jdk8中作了哪些优化。
七、hashset的原理
八、GC原理,分代机制,可达性分析
九、JVM参数有哪几种,如何调优?
十、JMM特性有哪些?
十一、什么是跳表?redis
2、多线程算法
一、线程有几种状态?之间是如何切换的?
二、volatile的做用(两点),volatile的原理与应用场景。
三、线程安全是什么?如何作到线程安全?怎么判断一个类是否是线程安全?
四、线程同步有几种方式?
五、threadlocal的原理
六、synchronized是如何实现的?
七、sleep和wait的区别
八、线程池有几种?各自的应用场景
九、线程池的原理,主要有几个参数?线程池满了怎么办?
十、Semaphore、countdownlatch、futureTask
十一、submit和execute的区别。
十二、Future接口的几个主要方法
1三、建立线程有几种方式
1四、可重入锁是如何实现的spring
3、数据库sql
一、mysql索引原理?为何是B+树?有什么优势?
二、事务隔离级别有哪几种?mysql默认的隔离级别是?脏读、幻读、不可重复读是什么状况?
三、MVCC原理
四、mysql有哪几种锁?
五、mysql的存储引擎有哪几种?区别和各自的适用场景。
六、query cache的配置
七、ACID
八、如何优化慢查询
九、最左前缀匹配原则,原理数据库
4、算法设计模式
一、一致性哈希的原理
二、手写二分查找,快速排序
三、手写LRU算法
四、两个链表找交点
五、两个无限长的数字求和
六、手写生产者消费者demo
七、256M内存排序2G大小的文件
八、求数组最大子序列数组
5、操做系统与计算机网络缓存
一、如何从访问日志中找出量最大的10个ip?awk语句了解吗?
二、jstack,jstat,jmap,jheap命令了解吗,如何使用?
三、系统负载状况如何查看?
四、网络分层协议了解吗?
五、tcp三次握手,四次挥手了解吗?
六、aio,bio,nio的区别
七、select,poll,epoll的区别?
八、io模型有哪些?
6、开源框架与组件
这部分主要根据简历以及项目的实际状况来问。
一、对spring了解吗?ioc,aop,transaction注解
二、spingmvc了解吗?
三、redis与memcache的区别
四、redis持久化策略,rdb与aof的区别与应用场景
五、memcached的内存是如何分配的?一致性哈希原理
六、mq的原理与应用场景,mq是如何保证不丢消息的?
七、tomcat的原理,主要运用了哪些设计模式?
八、redis与memcached内存分别是如何回收的?
九、guava的缓存是怎么实现的?
7、场景设计与架构
一、秒杀场景,如何作技术选型?
二、设计一个支持高并发的服务,写出核心代码
三、高并发与高可用如何实现?
四、服务降级怎么作?限流、限速、超时重试、熔断、自恢复、分别如何实现?
五、什么是微服务?有什么好处?为何要这么作?
六、CAP理论是什么?项目中的哪些场景用到了CAP理论?
七、BASE理论是什么?
八、何时应该使用mq?
8、其余
一、平时都经过什么方式学习技术? 二、最近学的一个知识点是什么? 三、对带人有什么经验? 四、最熟悉的一个项目是什么? 五、跳槽的时候,你最看重什么? 六、为何跳槽?为何选择咱们公司?