马上进入求职招聘顶峰,总结了一份BAT(阿里、百度、字节跳动、美团等)资深Java相干的面试题合集给到大家。
文末有相干的2021最新BAT资深java面试题答案~用于参考
JVM
- JVM内存模型构造
- 办法区和间接内存什么时候会oom?
- JVM收集器G1的内存模型和CMS的内存模型有什么不同?
- jvm调优用过吗?
如何查看java内存应用状况(jconsole、命令jmap、jstack等等)
汇合
- Arraylist、linkedlist差别,利用场景;
- HashMap在JDK1.8有哪些改变?
- HashCurrentMap和HashMap的区别在哪里?
Hashmap什么时候应用红黑树?
多线程
- 线程的几种状态,请画出具体的状态流转图?
- Java wait、sleep的区别?
- volatile如何实现指令重排序?
- 线程池中的阻塞队列如果满了怎么办(回绝策略)?
- Synchronized和AQS异同,AQS偏心非偏心如何实现;
- 多线程外面对一个整型做加减为啥不能用volatile;
voliatile和synchonized有什么区别?synchonized和jdk提供的Lock包又有什么区别?
算法
- 二叉树宽度遍历
- 红黑树
- 数据结构的话,链表,树,图的基本知识得懂
理解树的先序遍历,中序遍历,后序遍历。图的广度优先搜索算法,深度优先搜索算法。
Spring
- Bean的生命周期;
- 什么是DI、为什么DI、DI的类型(结构器注入、办法注入);
- Spring boot和spring的差异,tomcat如何嵌入spring boot的/spring boot中的tomcat是如何启动的;
Spring如何解决循环依赖问题;
数据库
- Join(inner、left、right)的区别?
- Union和union all区别?
- ACID,具体是啥意思?
- 事务隔离级别?
- 幻读和不可反复读的区别?
Mysql和mongodb有啥区别?
计算机网路
- RPC和http的区别
- 详细描述TCP四次挥手过程
- 中间件
- 秒杀我的项目会应用到哪些中间件?
- 为什么Redis是单线程?
- 如何保障Redis和数据库双写统一?
- 如何设计一个音讯队列中间件?
- 分库分表后,id主键如何解决?
- 如何设计一个相似Dubbo的RPC?
Redis
- Redis五种根本数据类型的应用场景
- 缓存穿透、缓存击穿、缓存雪崩
- Redis的过期策略和内存淘汰机制
- Redis的zset底层数据结构,为什么用跳跃表而不必红黑树
设计模式
- 代理模式(利用:一是创立多线程的形式之应用Runnable接口利用了动态代理;二是Spring AOP利用了动静代理)
- 适配器模式(利用:一是创立多线程的形式之应用Callable接口;二是SpringMVC中的HandleAdapter)
- 工厂模式(利用:一是Spring IOC;二是Mybatis中的SqlSessionFactory就用到了简略工厂模式)
- 单例模式(个别会须要手撕单例模式的代码,次要谈DCL模式对于指令重排的问题,以及反射能够毁坏除枚举以外的几种形式;单例模式的利用有:一是Spring Bean的作用域默认就是应用单例模式;二是Mybatis中的ErrorContext类也应用了单例模式,这个类用于记录线程执行环境的错误信息)
- 装璜器模式(利用:JAVA的IO流就用到了装璜器模式)
- 装璜器模式和代理模式的区别?
- 策略模式(利用:Arrays类的sort办法就用到了策略模式,Comparator接口就是一个策略接口,将排序办法定义成一个策略,用户能够自定义排序策略,能够是升序也能够是降序)
- 观察者模式与公布订阅模式的区别?(JDK源码曾经为咱们提供好了一套观察者模式,Observer就是观察者接口,Observable类是被观察者,是一个具体类,提供了一个寄存所有观察者角色的汇合,并且也提供了增加观察者、移除观察者、告诉观察者等办法)
还有很多面试题我在这里就不一一展现了,须要上述BAT资深Java面试题答案可【点击此处】获取!以下还有一些Java学习笔记以及BAT高频面试题可供参考~