基础
java基础
- String为什么是final
- java中的几种基本数据类型是什么_各自占用多少字节
- string_stringbuffer_stringbuilder的区别★★★★★
- Vector,ArrayList, LinkedList 的区别★★★
- 讲讲类的实例化顺序
- HashSet 和 HashMap 的比较
- HashTable, TreeMap,HashMap,ConcurrentHashMap 区别★★★★★
- HashMap有什么线程安全问题 ★★★
- HashMap是怎么扩容的(扩容多少,已有元素怎么处理的)★★★
- JAVA8 的 ConcurrentHashMap 为什么放弃了分段锁
- 有没有有顺序的Map实现类,如果有,他们是怎么保证有序的
- 讲讲你理解的 nio,他和 bio 的区别是啥
- Java NIO和IO的主要区别★★★
- nio的底层实现原理 ★★★★★
- 谈谈reactor反应堆模型★
- 反射的原理
- 反射创建类实例的三种方式是什么★★★
- 反射中,Class.forName 和ClassLoader.loadClass()区别
- 描述动态代理的几种实现方式,分别说出相应的优缺点
- jdk动态代理与cglib实现的区别
- 为什么CGlib方式可以对接口实现代理
- 如何在父类中为子类自动完成所有的 hashcode和equals实现?这么做有何优劣
- 深拷贝和浅拷贝区别★★★
- 数组和链表数据结构描述,各自的时间复杂度
- error和exception的区别,CheckedException,RuntimeException的区别
- 请列出 5 个运行时异常
- 在自己的代码中,如果创建一个 java.lang.String 类,这个类是否可以被类加载器加载?
- 说一说你对 java.lang.Object 对象中 hashCode 和 equals 方法的理解。在什么场景下需要重新实现这两个方法
- 在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题
- Switch能否用string做参数
- 序列化和反序列化★★★
- 写出三种单例模式实现
- 有没有可能 2 个不相等的对象有相同的 hashcode
- Java的四种引用类型,强弱软虚,用到的场景
- Hashcode的作用★★★
- object常用的方法
- OverLoad 与 Override 的区别
- static 方法能不能被 overload,override?
- Collection 与 Collections 的区别
- 了解哪些常用库?★★★
- final 的用途
- java8的新特性
- java9的新特性
- java10的新特性
- 字符流和字节流的区别
- Servlet是否是线程安全?如果不安全怎么处理 ?★★★
- stringbuffer内部的数据结构在字符串变化时怎么操作★★★★★
- new一个Object对象占用多少内存
JVM
- 怎么理解内存泄漏和内存溢出?★★★
- Java中会存在内存泄漏吗★
- 内存泄露、溢出的异同★
- 如何检测内存泄露?★
- 如何避免内存泄露?★★★
- 如何避免内存溢出?★★
- 内存溢出的原因是什么?★
- 什么情况下会发生栈内存溢出?
- 出现了内存溢出OOM,你怎么排错★
- JVM的工作原理(内存模型)★★★★
- Eden和Survivor比例
- 常见JVM参数列表★★★★★
- JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor?★
- jvm中一次完整的 GC流程是怎样的?★★★
- 你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms,包括原理,流程,优缺点★★★★★
- JVM为什么需要GC
- 简单说说你了解的类加载器★★★
- 可以打破双亲委派么,怎么打破
- 常见垃圾回收算法★★★★★
- 垃圾回收算法的实现原理
- 你们线上应用的JVM参数有哪些?
- 怎么打出线程栈信息
- JVM崩溃原因查找?(jvm内存镜像文件分析,常用jvm性能分析命令)
- jvm内存哪些是线程共享,哪些是线程独享
- 怎么打出线程栈信息
- 如何使对象 GC 后再活一次
- GC 如何判断对象失去引用
多线程
- thread类常用方法 ★★★
- Java 实现多线程的方式有哪些 ★★★
- 什么是线程安全★★★
- volatile的原理,作用,能代替锁么 ★★★
- 画一个线程的生命周期状态图 ★★★
- sleep和wait的区别
- Lock与Synchronized的区别 ★★★★★
- ReentrantLock 获取锁定的四种方式
- 解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁
- 重排序
- 用过哪些原子类,他们的原理是什么 ★★★★★
- 线程池原理,并说说newCache和newFixed有什么区别,构造函数的各个参数的含义是什么 ★★★★★
- 线程池的关闭方式有几种,各自的区别是什么
- 假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同时调用它,如何做到
- spring的controller是单例还是多例,怎么保证并发的安全
- 用三个线程按顺序循环打印 abc 三个字母,比如 abcabcabc
- ThreadLocal原理是什么,用的时候要注意什么 ★★★
- AQS同步器的实现原理(AbstractQueuedSynchronizer)★★★
- countdowlatch内部原理和用法(比如countdownlatch的await方法是怎么实现的)
- cyclicbarrier 的内部原理和用法
- Lock锁的实现原理
- Synchronized对象锁和类锁的区别
- synchronized的原理是什么 ★★★★★
- 进程和线程的区别
- 如果让你实现一个并发安全的链表,你会怎么做
- 多线程如果线程挂住了怎么办
- 简述ConcurrentLinkedQueue和LinkedBlockingQueue 的用处和不同之处
- Queue添加数据方法add()put()offer()不同之处
- 导致线程死锁的原因?怎么解除线程死锁
- 编写一段死锁代码
- 用过读写锁吗,原理是什么,一般在什么场景下用
- 两个进程能否共享内存空间
- 锁的等级:方法锁、对象锁、类锁
- 多线程模拟实现生产者/消费者模型
- 开启多个线程,如何保证顺序执行,有哪几种实现方式,或者如何保证多个线程都执行完再拿到结果
- 延迟队列的实现方式,delayQueue 和时间轮算法的异同
- 非常多个线程(可能是不同机器)相互之间需要等待协调,才能完成某种工作,问怎么设计这种协调方案
- 怎么实现分布式锁(redis+zookeeper) ★★★★★
- 什么是锁升级降级
- 线程池队列满的时候怎么处理 ★★★
- java线程能被中断么,中断一定能成功么
- 线程启动用 start 方法还是 run★★★
- 线程常用的并发类及关键字 ★★★★★
- 有哪些无锁数据结构,无锁实现的原理是什么 ★★★★★
- i++是不是线程安全,为什么 ★★★
jdk1.7源码
- HashMap的实现原理
- HashSet的实现原理
- Hashtable的实现原理
- LinkedHashMap的实现原理
- LinkedHashSet 的实现原理
- ArrayList的实现原理
- LinkedList的实现原理
- ConcurrentHashMap的实现原理
开源框架与技术
tomcat
- 简单讲讲 tomcat结构
- tomcat启动流程
- tomcat怎么处理请求,流程是怎样的
- tomcat如何调优
- maxThreads、maxConnections、acceptAccount区别
- tomcat默认支持并发数,怎么修改?
- tomcatNIO线程模型
spring
- Spring加载流程(bean初始化)
- Spring事务管理总结
- spring的事务传播属性以及隔离级别
- Springmvc中DispatcherServlet初始化过程
- 为什么要用Spring
- 简述一下Spring结构
- 什么是IOC
- AOP的实现原理
- Spring的生命周期
- BeanFactory和ApplicationContext区别
- Spring实例化Bean的方式
- Spring各种事务实现及区别
- Spring编程事务与声明事务的区别
- SpringMVC的工作原理
- Spring怎么配置事务(具体说出一些关键的xml元素)
- springmvc用到的注解,作用是什么,原理
- springboot启动机制
- Spring循环依赖的处理(单例、多例状态下的处理,懒加载一定能处理掉循环依赖么?)
netty
- netty的线程模型是什么?netty是如何基于reactor模型上实现的
- netty的HashedWheelTimer 的用法,实现原理,是否出现过调用不够准时,怎么解决
- netty的心跳处理在弱网下怎么办
- netty的通讯协议是什么样的
- netty原理
dubbo
- 说下Dubbo的架构图和组件★★★
- Dubbo容错机制有哪些?分别适用那些场景?★★★
- Dubbo线程模型★★★
- Dubbo负载均衡策略与算法★★★
- Dubbo结果缓存
- dubbo怎么服务降级 ★★★
- dubbo怎么优雅停机 ★★★
- dubbo怎么自动dump线程池
- Dubbo 的原理★★★
- dubbo如何一条链接并发多个调用
- Dubbo的网络协议是什么
- 讲下Dubbo服务注册与发现的基本流程★
- Dubbo有台节点挂了是怎么处理的★
- dubbo的优缺点是什么
- dubbo怎么修改失败重试次数,默认是多少
- dubbo内部机制,数据怎么流转的
- dubbo遇到那些坑
- Dubbo运行时,突然所有的zookeeper全部宕机,Dubbo是否还会继续提供服务
- Dubbo源码
- Dubbo使用zookeeper注册中心★★★
- Dubbo怎么使用redis作为注册中心
- Dubbo最佳实践
- Dubbo调优经验★★★
zookeeper
- Zookeeper的用途是什么
- Zookeeper选举的原理
- zookeeper原理
- zookeeper的同步流程
- zookeeper角色
- zookeeper的Leader工作流程
- zookeeper的Follower工作流程 Zookeeper Watch机制原理
- zookeeper数据一致性
- 什么是zab协议
- zookeeper使用场景
- 为什么zookeeper不用paxos,而是用的zab算法
mybatis
- Mybatis的底层实现原理
- mapper接口调用的原理
- hibernate和mybatis最本质的区别
- Mybatis中#和$的区别
- elasticsearch[编辑 | 编辑源代码]
- 你对elasticsearch了解多少
- 说说你们公司 es 的集群架构,索引数据大小,分片有多少
- elasticsearch怎么调优
- elasticsearch 的倒排索引是什么
- elasticsearch 索引数据多了怎么办
kafka
- kafka 吞吐量高的原因
- kafka生产数据时的分组策略
- kafka如何保证数据的生产完成
- kafka的broker如何保存数据
- partition如何分布在不同的broker上
- 如何保证kafka消费者消费数据是全局有序的
- kafka中segment的命名方式
- kafka的message物理结构
- kakka在partition中如何通过offset查找message
- kafka和其他消息队列的区别
- kafka的主从同步机制
- 使用 kafka 有没有遇到什么问题,怎么解决的
- kafka性能调优
- kafka怎么保证消息可靠性
- kafka常见问题
RabbitMq
- rabbitmq 如何实现集群高可用
ActiveMQ
- ActiveMQ的原理
nginx
- nginx是做什么的
- nginx怎么配置
- nginx怎么调优
spring boot##
- SpringBoot核心功能
- SpringBoot优缺点
- SpringBoot几个常用的注解
- springboot启动机制
- spring boot自动配置是怎么实现的
- springboot知识点整理
spring cloud
- 简单说下你对Spring Cloud的理解
- spring cloud常用组件及其作用是什么
网络
http
- HTTP/1.1与HTTP/1.0的区别
- HTTPS的加密方式是什么,讲讲整个加密解密流程
- HTTP请求报文和HTTP响应报文
- 常用的http方法
- 常用的http响应码详解
- 如何避免浏览器缓存
- 简述Http请求get和post的区别
- 什么是HTTP2.0
- Http 如何处理长连接
- http和tcp的区别
TCP
- 什么是TCP协议
- TCP协议的三次握手和四次挥手
- TIME_WAIT和CLOSE_WAIT的区别
- TCP协议如何来保证传输的可靠性
- 说说TCP头的结构
- 什么是长连接?短连接?
架构
系统架构
- 用java自己实现一个LRU
- 设计一个秒杀系统
- 设计一个订单系统,30分钟没付款就自动关闭交易
- 如何使用 redis 和 zookeeper 实现分布式锁?有什么区别优缺点,会有什么问题,分别适用什么场景
- 讲讲redlock算法实现,争议在哪里
- 如果有人恶意创建非法连接,怎么解决
- 一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进a行编辑更新
- 线上系统突然变得异常缓慢,你如何查找问题
- 异步模式的用途和意义
- 如何设计一套高并发支付方案,架构如何设计
- 如何设计建立和保持 100w 的长连接
- 设计一个社交网站中的“私信”功能,要求高并发、可扩展等等。 画一下架构图
- 聊下曾经参与设计的服务器架构并画图,谈谈遇到的问题,怎么解决的
- 应用服务器怎么监控性能,各种方式的区别
- 如何实现负载均衡,有哪些算法可以实现
- 设计一个可以控制缓存总体大小的自动适应的本地缓存
- 后台系统怎么防止请求重复提交
- 描述一个服务从发布到被消费的详细过程
- 如何优化线程数
数据架构
- 常见的缓存策略有哪些,如何做到缓存与 DB 里的数据一致性,你们项目中用到了什么缓存系统,如何设计的
- 缓存数据过期后的更新如何设计
- 如何防止缓存击穿和雪崩
- 你们做过分表分库吗,怎么做的
- 有一个订单系统,订单日增加1000万,怎么设计表
- 分布式、高并发[编辑 | 编辑源代码]
- 分布式集群下如何做到唯一序列号ID
- 分布式事务的原理,优缺点,如何使用分布式事务
- 什么是paxos算法
- 什么是zab算法
- 一次RPC请求的流程是什么
- 自己实现过rpc么,原理可以简单讲讲,Rpc要解决什么问题
- 请思考一个方案,实现分布式环境下的 countDownLatch
- 如何做限流策略,令牌桶和漏斗算法的使用场景
- 分布式服务调用方,不依赖服务提供方的话,怎么处理服务方挂掉后,大量无效资源请求的浪费,如果只是服务提供方吞吐不高的时候该怎么做,如果服务挂了,那么一会重启,该怎么做到最小的资源浪费,流量半开的实现机制是什么
- 什么分布式锁? redis、zookeeper怎么实现分布式锁
- 如果设计高可用高并发系统
- 高并发下1个数频繁更改(更改频率1000次-10000次)应该怎么处理?
- 分布式当中如何避免对同一条修改的冲突?
- 接口限流怎么做
系统设计、设计模式
- 常见设计原则
- 编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用
- OO 的设计原则
- 请结合 OO 设计理念,谈谈访问修饰符 public、private、protected、default 在应用设计中的作用
- 如何做到接口的幂等性
- 说说你平时用到的设计模式
- 工厂模式
- 代理模式
- 适配模式
- 策略模式
性能优化
- 线上系统突然变得异常缓慢,你如何查找问题
- 讲下你做过那些性能优化的措施
微服务
- 讲下你理解的微服务?
- 微服务与SOA的区别是什么?
- 微服务的模块怎么划分?
消息队列
- MQ的基本原理
- MQ消息可靠性保证
- MQ怎么解决幂等性
- MQ系统的数据如何保证不丢失
- 用过哪些 MQ,和其他 mq 比较有什么优缺点,MQ 的连接是线程安全的吗
- 怎么利用 mq 实现最终一致性
- MQ有可能发生重复消费,如何避免,如何做到幂等
- MQ 的消息延迟了怎么处理,消息可以设置过期时间么,过期了你们一般怎么处理
- 消息队列满了怎么处理
- 如何自己设计一个消息中间件
- kafka,activemq,rabbitmq本质区别是啥
数据库
关系型数据库
- 数据库隔离级别有哪些,各自的含义是什么,MYSQL默认的隔离级别是是什么★★★
- 不可重复读与幻读的区别
- MYSQL有哪些存储引擎,各自优缺点,myisam与innodb区别★★★
- 乐观锁和悲观锁是什么,以及各自的优略势
- INNODB的标准行级锁有哪2种,解释其含义
- SQL优化的一般步骤是什么★★★
- 怎么看执行计划,如何理解其中各个字段的含义
- 数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁★★★
- MYsql的索引原理
- MYsql的索引数据结构
- MYsql多列索引(复合索引)的生效规则
- 索引的类型有哪些,如何创建合理的索引,索引如何优化
- 聚集索引和非聚集索引的区别,怎么存储的
- select for update是什么含义,会锁表还是锁行或是其他
- Btree原理
- Btree怎么分裂的,什么时候分裂,为什么是平衡的
- 数据库的ACID是什么★★★
- 某个表有近千万数据,CRUD比较慢,如何优化
- Mysql怎么优化tablescan
- mysql中in和exists区别
- 数据库自增主键可能的问题
- MVCC的含义
- 怎么解决MYSQL的主从同步延迟★★★
- 你做过的项目里遇到分库分表了吗,怎么做的
- sharding jdbc的原理知道么
- sharding jdbc怎么生成唯一主键
- sharding jdbc架构
- 说下mysql架构是怎样的
- 说下mysql内存分配
- update语句的底层实现是怎样的
- mysql行级锁一定会锁定指定行么
- 说下JDBC 连接步骤
- MySQL事务实现原理
非关系型数据库
- Redis的数据结构都有哪些
- redis的string结构相关的操作
- redis的list结构相关的操作
- redis的hash结构相关的操作
- 讲讲持久化方式 ,aof和rdb的区别
- redis2和redis3的区别
- redis3内部通讯机制
- redis主键失效原理
- redis集群有哪些玩法,各自优缺点,场景
- Redis的Sentinel实现机制与原理
- redis的集群怎么同步的数据的
- redis的主从复制的原理
- Redis集群怎么扩容
- 什么是Redis集群的分库和分片
- Redis的并发竞争问题如何解决,了解Redis事务的CAS操作吗
- Redis的选举算法和流程是怎样的
- 知道哪些redis的优化操作
- redis常见性能问题和解决方案
- Redis的底层原理
- Redis的线程模型是什么
- Redis为什么使用单进程单线程方式也这么快
- Redis的缓存策略和主键失效机制
- Redis的回收策略
- Redis相比memcached有哪些优势
- Redis的回收策略
- Memcache的原理,哪些数据适合放在缓存中
- redis和memcached的区别
- Redis 的七个原则
- 分布式下,怎么保证redis和mysql数据一致性
- Redis使用场景
- 使用Redis遇到那些问题、故障
算法
- 什么是一致性 hash算法?
- 说说你知道的几种hash算法
- 什么是paxos算法
- 什么是zab算法
- 什么是二叉树算法
- 什么是红黑树算法
- 二叉树和二叉查找树的区别是什么?
- 手写各种排序算法,如冒泡、快速等
- 算法的时间复杂度是什么?
- 说出常见的负载均衡算法?
- 写出常见排序算法(快排、冒泡)
- 二分法查找
项目
项目开发
- 你们项目是怎么打包部署
- 项目出现乱码怎么解决
- 你们是怎么管理分支的,出现冲突怎么解决
- 项目中遇到那些难题挑战,怎么解决
- 线上出了问题怎么排查,分析的过程和方法
- 说说你最满意的一个项目的架构
- 画出你们项目的架构图
业务问题
- 分布式服务情况下,怎么保证一个新闻一天一个用户只能点赞一次
- 微信红包怎么实现