包装类:
1、拆箱装箱的原理
集合:
1、HashMap
1、底层数据结构实现
1、如何解决hash冲突,其它Hash冲突解决方式
2、存入null值时
3、什么时候链表会转红黑树,怎么转?
4、为什么会用红黑树而不选择AVL树?
2、1.7与1.8的区别
3、扩容机制
1、如何实现数据迁移
4、与Hashtable的区别
5、put方法的工作流程
6、时间复杂度
2、ConcurrentHashMap
1、底层数据结构实现
2、解决并发的原理
3、1.7与1.8的区别
4、扩容机制
5、1.7的并发度是多少
3、Collections工具类
1、sort方法的底层排序实现原理
4、Collection
1、List
1、ArrayList和LinkedList区别以及各自的适用场景
2、ArrayList的扩容机制
2、Set
1、HashSet实现原理
多线程:
1、锁
1、synchronized
1、使用方法
2、原理
3、synchronized锁升级的过程
2、ReentrantLock
1、使用方法
2、原理
3、sychronized和ReentrantLock的区别
4、锁的种类与概念
1、悲观锁
1、JDK中的应用场景
2、乐观锁
1、JDK中的应用场景
3、自旋锁
4、偏向锁
5、轻量级锁
6、重量级锁
7、公平锁
8、非公平锁
5、死锁
1、死锁产生条件
2、如何避免死锁
3、银行家算法
4、产生死锁后如何解决
2、ThreadLocal
1、原理
2、应用场景
3、线程池
1、核心参数
2、线程池的工作流程
3、线程池的底层实现
4、BlockingQueue的使用
5、调优策略
6、几种内置线程池
7、拒绝策略
8、线程池组件
9、线程池种类
4、volatile关键字
1、作用
2、实现原理
5、原子类
1、AtomicInteger
1、实现原理
6、保证线程同步的方式
7、CAS的原理
8、并发包
1、常用类
1、CountDownLatch
1、实现原理
2、Semaphore
3、Cyclebarrier
9、AQS
1、原理
10、创建线程的方式
1、继承Thread类
2、实现Runnable接口
3、实现Callable接口
4、通过线程池
11、常见问题
1、线程数量过多会有什么问题
2、线程池任务数超过的核心线程数,会发生什么?
3、有多少种方法可以让线程阻塞?
4、阻塞队列大小是多少?
5、怎么实现一个线程安全的计数器?
6、自己设计一个线程池需要注意什么?
10、sleep与wait、notify与notifyAll的区别
11、如何实现高效的同步链表
Web:
1、seesion
1、session的生命周期是多久
框架:
1、Spring
1、IOC
1、原理
2、应用场景
3、好处
4、注入方式
5、bean的加载机制
6、bean生成的具体步骤
2、AOP
1、原理
2、应用场景
3、Bean是否线程安全
4、Spring中如何让A和B两个bean按顺序加载
5、Spring中涉及哪些设计模式
6、Bean的生命周期
7、Bean的默认创建的模式是什么?不想单例怎么办?
8、Spring的IOC和AOP,分别如何实现(classloader、动态代理)
9、Spring何时创建applicationContext
10、Listener监听器
11、@Autowired的实现原理
12、Bean的默认作用范围是什么?其他的作用范围?
2、Springboot
1、Springboot的启动流程
2、Springmvc和Springboot区别
数据库:
1、MySQL
1、常用存储引擎与区别
1、InnoDB
1、索引实现原理
1、B+树的特性与建树过程
1、每个节点存储多少数据
2、怎么规定节点存储数据大小
2、B树和B+树的区别,为什么MySQL要使用B+树做索引
2、创建索引的原则
2、MyISAM
1、索引实现原理
2、MySQL优化
1、具体优化方案
1、SQL优化
2、存储引擎选择
3、表结构优化
4、索引优化
5、分库分表
1、数据库分库分表一般数据量多大才需要?
6、数据类型选择
2、如何分析“慢查询”日志进行 SQL/索引 优化?
3、事物
1、事物实现原理
1、MVCC机制
2、事物隔离级别
1、每层级别分别用什么方法实现
3、事务的ACID
4、脏读、幻影读、不可重复读的理解与解决方案
4、主从同步实现方案
1、优缺点
5、锁
1、表锁
1、是否会出现死锁
2、行锁
3、共享锁(读锁)与非共享锁(写锁)
6、分库分表
1、什么时候做分库?
2、什么时候做分表?
7、索引
1、为什么要建索引
2、什么样的字段需要建索引
3、建索引的时候一般考虑什么
4、索引会不会使插入、删除作效率变低,怎么解决
8、数据库设计
1、数据库范式
2、设计的过程中需要注意什么
9、常见问题
1、MySQL Hash 索引适用情况?举下例子?
2、MySQL数据库主从同步怎么实现?
3、一个事务锁住了一条数据,另一个事务能查吗?
4、四个表 记录成绩,每个大约十万条记录,如何找到成绩最好的同学
2、数据库连接池
1、实现原理
JVM:
1、JVM内存结构
1、每个区域的作用与特点
2、Java8做了什么修改
2、垃圾回收
1、判断垃圾对象的方法
1、引用计算法
1、原理
2、缺陷
2、可达性分析法
1、原理
2、各个垃圾回收算法的处理流程与优缺点
1、分代收集算法
1、分代模型
2、默认年龄多大进入老年代
3、什么时候进行Full GC
2、标记清除算法
3、复制算法
4、标记整理算法
3、垃圾收集器的各自使用场景、优缺点、使用的算法
1、串行收集器
2、并行收集器
3、并发收集器
4、CMS收集器
1、工作流程
2、为什么要停顿两次
3、如何降低停顿
5、G1收集器
1、G1和CMS收集器的区别
2、G1收集器对CMS的改进
6、ZGC
4、引用类型
1、强引用
2、软引用
3、弱引用
4、虚引用
3、JVM调优
1、调优方法
2、调优参数
3、JVM监控工具
4、具体的性能调优步骤吗?
4、类加载机制
1、双亲委派模型
1、工作流程
2、为什么要使用双亲委派模型的原因
5、JVM常见问题处理
1、内存泄漏
1、概念
2、可能引起内存泄漏的原因
3、内存泄漏的解决方案
2、OOM的定位与解决
3、JVM监控分析工具
4、JVM监控应该关注哪些指标
5、Java栈什么时候会发生内存溢出
6、Java堆什么时候会发生内存溢出
7、内存泄漏与内存溢出的区别
数据结构:
1、树的特点、常用场景、不同树之间的区别
1、二叉搜索树
2、平衡二叉树
1、强平衡二叉树(AVL树)
2、弱平衡二叉树(红黑树)
1、特性
2、时间复杂度
3、插入删除操作流程
2、链表
1、基本原理与实现
3、队列
1、基本原理与实现
4、栈
1、基本原理与实现
算法:
1、排序算法
1、快速排序
1、时间复杂度
1、最坏情况
2、最好情况
2、冒泡排序
1、时间复杂度
1、最坏情况
2、最好情况
3、堆排序
1、时间复杂度
2、建堆的复杂度
4、归并排序
2、10亿个数去重
3、无序数列中求第k大的数(维护最小堆,然后依次遍历,与堆顶比较)
4、如何判断链表有环
5、加密算法
1、对称加密
2、非对称加密
3、MD5
1、加密原理
设计模式:
1、简单工厂
2、抽象工程
3、单例模式
1、懒汉式
2、饿汉式
Linux:
1、常用命令
1、查日志的
2、查网络的
3、查磁盘的
4、进程管理
计算机网络:
1、HTTP
1、缺点与优点
2、HTTPS
1、加密方式
2、工作流程
3、SSL和TSL之间的区别
3、TCP/IP协议
1、三次握手
1、如果没有第三次握手会出现什么问题
2、每次挥手的状态与包
2、四次挥手
1、每次挥手的状态与包
4、网络模型
1、OSI七层网络模型
2、五层网络模型
Redis:
1、常见问题
1、缓存穿透
1、概念
2、产生原因
3、解决方案
2、缓存击穿
1、概念
2、产生原因
3、解决方案
3、缓存雪崩
1、概念
2、产生原因
3、解决方案
4、如果Redis有1亿个key,使用keys命令是否会影响线上服务?
5、Redis 的并发竞争问题是什么?如何解决这个问题?
6、Redis 事务的 CAS 方案
7、如何保证 Redis 高并发、高可用?
8Redis如何解决key冲突
2、集群
1、集群模式
1、原生集群
2、主从复制
1、原理
3、哨兵模式
1、原理
2、一致性hash算法
3、Redis是单进程单线程的,为什么还这么快?
4、Redis的数据结构
1、redis的hash数据结构最多能存储多少个元素
5、淘汰机制
6、持久化机制
1、RDB
1、工作流程
2、原理
2、AOF
1、工作流程
2、原理
7、应用场景
1、热点数据处理
消息中间件:
1、种类
1、RabbitMQ
2、Kafka
1、核心组件
2、原理
3、常见问题
1、怎么保证数据不丢失
2、确保消息不会被重复消费
3、消息送达确认怎么做
4、保证数据的可靠性
3、RocketMQ
1、核心组件
2、常见问题
1、如何实现消息去重
4、ActiveMQ
2、不同MQ的区别
5、常见问题
1、如果让你实现一个mq,怎么样保证消息不丢失
Web服务器:
1、Tomcat
1、类加载器结构
分布式:
1、数据一致性
1、保证数据一致性的解决方案
2、强一致性、单调一致性和最终一致性的概念
3、MySQL和Redis的缓存如何保证数据一致性
2、分布式锁
1、实现分布式锁的解决方案
1、基于MySQL
2、基于Redis
3、基于Zookeeper
2、不同方案的场景、性能比较、原理
3、分布式系统的全局ID如何实现
4、负载均衡
1、负载均衡的原理
2、Nginx
1、Nginx负载均衡策略
2、Nginx和其他负载均衡框架对比
5、分布式事务解决方案
6、CAP
7、分布式session如何实现的
SpringCloud:
1、SpringCloud的工作流程
2、常用组件
1、Eureka
1、工作流程
2、实现原理
2、Ribbon
1、实现负载均衡的原理
3、常见问题
1、服务挂了注册中心怎么判断?
Dubbo:
1、Dubbo的模块组成
2、底层通信原理
3、让你设计一个类似Dubbo的RPC框架你会如何设计?
4、说说什么是RPC框架?和http调用的区别是什么?
5、生产者如何发布服务,注册服务
6、消费者如何调用服务?
7、负载均衡的策略有哪些
Zookeeper:
1、Zookeeper如何同步配置
Docker:
Maven:
1、maven依赖树
2、maven的依赖传递,循环依赖
网络编程:
1、NIO、BIO、AIO的概念与区别以及各自的使用场景
2、Netty
1、线程模型
2、零拷贝实现
3、select、epoll 的区别?底层的数据结构是什么?
3、Mina
项目:
1、项目介绍
2、画出整个项目的架构设计图
3、讲解项目流程
4、项目部署方式
5、讲一下你认为的项目难点在哪里
6、负载均衡怎么做的呢,为什么这么做?
7、讲一下项目的主要架构,你在里面做了什么
8、有什么比较复杂的业务逻辑讲一下
9、从这个项目中有什么收获吗?
10、项目中消息队列怎么用的?使用哪些具体业务场景?
Linux:
1、Linux的共享内存如何实现
架构:
1、秒杀架构设计
2、分布式系统设计策略
3、服务器雪崩产生的原因,怎么设计才能避免雪崩
4、画一个典型的分布式架构图,从前端负载均衡到中间件,以及后端数据库,整个流程
5、SOA和微服务有什么关联?以及你对微服务的理解
6、从SQL、JVM、架构、数据库四个方面讲讲优化思路,以及如何优先排序?
7、高并发的应用场景,技术需要涉及到哪些?怎样来架构设计?
8、高并发情况下如何抗压?有哪些手段?
9、高并发如何限流
10、数据库如果让你来垂直和水平拆分,谁先拆分,拆分的原则有哪些(单表数据量多大拆)
11、让你设计一个RPC框架你会如何设计?
12、微服务你的理解?以及常用的微服务方案dubbo、spring cloud的比较?
13、多个RPC请求进来,服务器怎么处理并发呢
14、线上的服务器监控指标,你认为哪些指标是最需要关注的?为什么?
15、如何做压测?
16、单机系统演变为分布式系统,会涉及到哪些技术的调整?请从前面负载到后端详细描述。
人事:
1、为什么想来我们公司?
2、未来3年有什么职业规划?
3、最近上过哪些技术站点
4、最近在看哪些书
5、个人平时怎么提升技术
6、你有什么想问我的
7、你觉得你最大的优点与缺点是什么
8、平时有哪些兴趣爱好
9、你怎么评价你之前的几轮面试
10、你怎么看待你自己,你最大的核心竞争力是什么
11、工作中遇见了技术解决不了的问题,你的应对思路?