BAT的面试主要包含:
1.Linux系统原理以及常见的线上排除故障Linux命令考核等。
2.MySQL相关的索引、存储引擎、事务,mysql并发下的各种锁等。
3.以及二叉树、红黑树等算法也是需要重点掌握。
4.Java高级特性:JVM、多线程等。
5.高性能项目考核:Redis缓存的使用、集群部署,以及异步消息Kafka等的使用,与并发技术解决方案等。
消息队列
- 消息队列的使用场景。
- 消息的重发,补充策略。
- 如何保证消息的有序性。
- 用过哪些MQ,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗,你们公司的MQ服务
- 架构怎样的。
- MQ系统的数据如何保证不丢失。
- rabbitmq如何实现集群高可用。
- kafka吞吐量高的原因。
- kafka 和其他消息队列的区别,kafka 主从同步怎么实现。
- 利用mq怎么实现最终一致性。
- 使用kafka有没有遇到什么问题,怎么解决的。
- MQ有可能发生重复消费,如何避免,如何做到幂等。
- MQ的消息延迟了怎么处理,消息可以设置过期时间么,过期了你们一般怎么处理。
JVM
- JVM内存模型结构
- 方法区和直接内存什么时候会oom?
- JVM收集器G1的内存模型和CMS的内存模型有什么不同?
- jvm调优用过吗?
- 如何查看java内存使用情况(jconsole、命令jmap、jstack等等)
多线程
- 多线程的几种实现方式,什么是线程安全。
- volatile的原理,作用,能代替锁么。
- 画一个线程的生命周期状态图。
- sleep和wait的区别。
- sleep和sleep(0)的区别。
- Lock与Synchronized的区别 。
- synchronized的原理是什么,一般用在什么地方(比如加在静态方法和非静态方法的区别,静
- 态方法和非静态方法同时执行的时候会有影响吗),解释以下名词:重排序,自旋锁,偏向锁,轻
- 量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁。
- 用过哪些原子类,他们的原理是什么。
- JUC下研究过哪些并发工具,讲讲原理。
- 用过线程池吗,如果用过,请说明原理,并说说newCache和newFixed有什么区别,构造函
- 数的各个参数的含义是什么,比如coreSize,maxsize等。
- 线程池的关闭方式有几种,各自的区别是什么。
- 假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同
- 时调用它,如何做到。
- spring的controller是单例还是多例,怎么保证并发的安全。
- 用三个线程按顺序循环打印abc三个字母,比如abcabcabc。
- ThreadLocal用过么,用途是什么,原理是什么,用的时候要注意什么。
- 如果让你实现一个并发安全的链表,你会怎么做。
- 有哪些无锁数据结构,他们实现的原理是什么。
- 讲讲java同步机制的wait和notify。
- CAS机制是什么,如何解决ABA问题。
- 多线程如果线程挂住了怎么办。
- countdowlatch和cyclicbarrier的内部原理和用法,以及相互之间的差别(比如
- countdownlatch的await方法和是怎么实现的)。
- 对AbstractQueuedSynchronizer了解多少,讲讲加锁和解锁的流程,独占锁和公平所
分布式架构:
- CAP原理和BASE理论。
- Nosql与KV存储(redis,hbase,mongodb,memcached等)
- 服务化理论(包括服务发现、治理等,zookeeper、etcd、springcloud微服务、)
- 负载均衡(原理、cdn、一致性hash)
- RPC框架(包括整体的一些框架理论,通信的netty,序列化协议thrift,protobuff等)
- 消息队列(原理、kafka,activeMQ,rocketMQ)
- 分布式存储系统(GFS、HDFS、fastDFS)、存储模型(skipList、LSM等)
- 分布式事务、分布式锁等
大厂面试资料分享,基本涨薪30%左右
这份资料包括:Java JVM 多线程 MySQL Redis Kafka Docker RocketMQ Nginx MQ队列 数据结构 并发编程 并发压测 秒杀架构 Alibaba 京东 腾讯 阿里 字节 算法 多线程 高并发 等等面试题材