杰哥,你的八股文


1、Java

  • 博文
  • 博文
  • 说一下hashmap,红黑树和平衡二叉树有什么区别,为什么不使用平衡二叉树?
  • Hashmap链表插入方式为什么是尾插?说说Concurrenthashmap,他是如何加锁,put和get有什么区别
  • Hashtable的底层是什么,为什么线程安全
  • 面向对象的特性,怎么理解多态?
  • 重写和重载的区别
  • Arraylist和linkedlist的区别?
  • 抽象类和接口的区别,接口里允许有私有方法吗?
  • Hashmap是线程安全的吗?为什么不安全?
  • 知道函数式编程吗?(lambda)
  • 讲一下hashmap实现原理?重写equals方法为什么一定要重写hashcode方法
  • Hashmap
  • 说一下java集合,他们各自有什么结构特点,分别适用什么样的情况
  • Hashset如何实现的,如何遍历一个hashmap(我回答是iterator迭代器),迭代器迭代的是谁,用的是什么方法?
  • Hashmap底层的实现了解多少?Hash根据什么算出来的?对象的equals方法在什么时候会用
  • Object类里都有什么方法?
  • Arraylist和linkedlist的区别?
  • currenthashmap如何实现线程安全?怎么保证扩容的线程安全
  • 解决hash冲突有哪些方法?
  • 说一下java基础,hashmap了解吗,时间复杂度是多少,底层是什么数据结构。
  • java里面final finally finalize区别
  • arraylist和linkedlist区别,
  • hashmap和treemap的区别
  • java里面的反射原理。
  • java对象的创建方法?
  • 面向对象三大特性:封装、继承、多态如何在Java中体现
  • String StringBuilder StringBuffer区别 “”+””实现过程
  • 什么时候重写hashcode和equals方法
  • 深拷贝浅拷贝
  • BIO、NIO、AIO原理及应用场景
  • List、Map、Set区别及使用场景
  • 对比List、Map、Set的各种子类
  • HashMap原理 扩容缩容机制、存储结构、rehash实现方法等 一定要熟悉底层代码实现及算法原理
  • HashSet如何查重
  • ArrayList 和 Vector 的区别
  • java泛型原理
  • java注解原理
  • hashtable和hashmap区别
  • ==和equals区别
  • HashMap底层实现,扩容阈值,具体怎么扩容,扩容优化,抖动函数,集合大小为什么是2的幂,为什么阈值是8(源码里是8-1),jkd1.7,1.8具体优化的地方。
  • 线程安全集合,ConcurrentHashMap,具体实现,jdk1.7,jkd1.8区别,分段锁,锁粒度,好像答的不够多,然后又挤出来一个计数方法,1.8计数特别麻烦。
  • final修饰类 方法 属性区别。
  • 说下对java继承、封装、多态的理解
  • Java中常见的集合类
  • ArrayList和LinkedList的区别
  • 如果要保证线程安全该怎么做
  • 说一下hashmap和concurrenthashmap
  • java中还有那些线程安全的集合
  • hashtable和concurrenthashmap哪个效率高
  • concurrenthashmap说一下,它是如何保证线程安全的?
  • Java 的流式处理了解么?
  • HashMap 八股文讲讲?
  • HashMap put 里面已经有100000 个数据了,往里面 put 第 100001 个数据会不会扩容?
  • 你觉得采用链表加红黑树的组合方式之后解决了什么问题?
  • 那么多数据结构,为什么偏偏使用红黑树?
  • 红黑树的平衡怎么做?
  • 链表转化成红黑树的阈值怎么算出来的?
  • 为什么红黑树缩回链表的阈值和进化的阈值不一样?
  • 讲讲面向对象的一些特性?
  • 面向过程和面向对象的区别?
  • 对象和类的关系?
  • Collection下的集合有哪些?
  • Java的特点
  • 看过hashmap的源码吗?
  • java面向对象的特点?
  • Java的继承?
  • Hashmap和Hashtable的区别?
  • 集合类有哪些?
  • 如何访问一个私有的对象?
  • String s=“abc”和new string(abc)的区别?
  • 如果声明了对象,但是对象没有初始化,使用对象会怎么样?
  • 重写和重载的区别?
  • 抽象类和接口的区别
  • Java中的反射
  • Arraylist底层数据结构,扩容机制,初始容量
  • HashMap底层数据结构,扩容机制,初始容量,负载因子,哈希计算公式
  • new一个对象的过程,从jvm层面阐述
  • 接口和抽象类的区别
  • 多态的理解?重写和重载、静态方法可以重写么?
  • 反射 用过么?怎么用的?优缺点?生成类对象的几种方式?
  • 异常类
  • new String(“s”),讲一下这个过程,生成几个对象
  • equals和hashCode

2、网络

  • 博文
  • 博文
  • tcp、udp区别
  • tcp如何保障可靠
  • time_wait状态产生原因和危害
  • tcp拥塞控制机制
  • 从浏览器输入一个URL到返回响应的完整过程
  • 网络带宽网速计算,10m带宽的实际下载速度
  • tcp与udp的区别概述
  • tcp的三次握手与四次挥手的过程及其原因
  • DNS解析原理,使用的底层协议
  • 网络情况良好的情况下,分布式项目的rpc远程调用使用的是tcp还是udp?此时tcp性能更加,为什么
  • udp如何做到可靠传输
  • tcp的拥塞控制
  • http使用的是tcp还是udp
  • https与http的区别,https是如何做到安全性的
  • https是否可以抓包?如果能,那么如何分析包中内容
  • get与post请求的区别,post的安全性体现在那里,是否可以发现他的请求内容
  • socket编程,分为客户端和服务端分别说
  • 背一下网络模型,http在哪一层,tcp在哪一层,tcp有什么特性,怎么保证可靠性
  • 讲一讲token各部分放了什么,干嘛的?
  • 在浏览器里输入url后会发生什么?
  • 在浏览器里输入url后整个过程
  • Dns协议在哪一层,tcp在哪一层,tcp如何保证传输顺序,滑动窗口协议
  • Tcp和udp区别
  • http协议和https协议的区别,https通信原理整个流程
  • 讲讲三次握手
  • 301和302的区别
  • 讲一下TCP三次握手,为什么要三次握手,TCP的SYN Flood洪水攻击了解吗
  • 说一下OSI网络模型和TCP/IP协议栈?ARP协议的作用是什么?TCP和UDP的区别,TCP怎么做到流量控制?TCP和HTTP有什么联系?说一下HTTPS的通信加密的整个流程?
  • HTTP的header头有哪些信息?
  • Get和post请求的区别
  • 了解跨域问题吗?
  • 说一说计网的五层结构?TCP和UDP区别?TCP如何保证传输的稳定?说说TCP和UDP支持的上层协议
  • 简述在浏览器中输入一个url得到一个页面的全过程。
  • TCP/IP协议包括几层,应用层的主要协议,ICMP协议是第几层协议。简述ICMP协议
  • TCP的粘包是什么?Tcp如何保证可靠性的?
  • 网络的七层通信模型,常见的协议比如 TCP、IP、UDP、ARP、HTTP、FTP 等都位于哪一层
  • 常见 Http 的状态码的含义(常见的502,500,404,302,204,200等),遇到对应问题知道如何去处理
  • Http请求的构成
  • GET 和 POST 有什么区别
  • TCP 和 UDP 的区别(TCP 为什么可以保证传输的可靠性)
  • TCP 的三次握手和四次挥手(为什么挥手需要四次)
  • TCP 的拥塞控制(慢开始,拥塞避免,快重传,快恢复)
  • 什么是 ARP 协议。
  • ping 命令的实现原理,ping 命令为什么不需要端口号
  • 从输入 URL 到页面加载发生了什么?
  • 长连接和短连接
  • 计网5层模型和7层模型
  • 应用层协议有什么
  • 输入网址发送请求到接受响应的过程
  • 网络拥堵可能有什么原因
  • TCP拥塞避免算法
  • 延迟ACK了解么?
  • ipv6和ipv4的区别
  • 可以简单说一下http吗
  • http1.0和http2.0的区别
  • 七层网络模型
  • 为什么有了七层还有五层的概念?
  • HTTP 和 RPC 的关系?区别?
  • HTTPS 的秘钥交换过程?
  • DNS 解析流程?
  • 拥塞控制?流量控制?
  • 三次握手和四次挥手的过程?
  • 301 和 302 状态码的区别?
  • Cookie和session的区别
  • DNS,TCP分别是什么层的协议
  • OSI七层参考模型
  • 数据链路层和物理层了解哪些协议
  • TCP三次握手建立连接之后,客户端如果突然垮了,咋办
  • HTTP状态码301,302,304,403,404,500,501,503
  • HTTPS协议如何实现安全
  • HTTPS是对称加密还是非对称加密
  • HTTPS协议中随机数的作用
  • 三次握手四次挥手
  • TCP (三次握手和四次挥手,拥塞控制,流量控制,里面各种恩爱情仇要搞懂)、UDP它们的运用场景,UDP如何实现可靠
  • cookie和session简单介绍
  • session如何储存的?
  • 分布式session如何实现?
  • HTTP和HTTPS
  • 证书验证
  • 中间人攻击
  • HTTP长连接和TCP长连接
  • SSL整个握手过程

3、操作系统

  • 进程、线程区别
  • 进程同步机制
  • linux的命令考察:怎么找占用端口的进程
  • Linux如何查看端口的连接状态
  • 进程与线程的区别,为什么要有进程与线程的区分,协程
  • 进程的上下文切换
  • 进程的状态
  • 线程通信的方式
  • Linux常用的指令?
  • 进程和线程的区别,进程怎么通信,什么是管道
  • 计算机里的大端字节序和小端字节序是什么?
  • 僵尸进程的原理,进程间通信的方式,操作系统的进程调度算法有哪些
  • Linux指令说说
  • 简单说5-10个linux指令
  • 进程间通信方式
  • linux的ping命令
  • linux进程间如何通讯的?
  • 操作系统的线程与进程的区别,线程有几种状态?
  • 线程间通信的方式与进程间通信的方式。
  • 什么是死锁?死锁的必要条件,如何避免死锁?
  • 进程的调度算法
  • 磁盘的寻道算法
  • I/O 模型
  • 如何线程同步?有哪些方式
  • 进程和线程的切换上下文
  • 上下文指什么
  • 线程之间同步的机制
  • 物理地址和虚拟地址的区别
  • 为什么要分成物理地址和虚拟地址
  • 逻辑地址呢?(我回答虚拟地址就是逻辑地址)
  • 虚拟地址转换为物理地址的过程
  • 快表是存储在哪里的
  • 磁盘调度算法?
  • 操作系统死锁?
  • 进程和线程的区别?
  • 哪一种 IPC 最快?
  • 线程的几种状态?
  • 进程调度策略?
  • 线程进程区别
  • 进程通信方式
  • cup调度,内核态,用户态,中断(陷入)是什么?
  • 进程的状态?操作系统的线程有什么?(内核线程,用户线程等等)
  • 进程调度?

4、MySQL

  • 索引种类
  • 索引底层实现(B树、B+树的区别)
  • myisam、innodb区别
  • 事务隔离级别(事务隔离级别实现,主要是mvcc机制,这个答得不好,没原理层面答)
  • Innodb如何实现ACID这四大特性
  • 分库分表方案,遇到两个的问题(非partion key的查询优化、分库分表后的扩容策略)
  • Mysql使用哪种搜索引擎,innodb有哪些特性
  • Innodb的索引用的是什么,b+树的特性是什么
  • 聚集索引和非聚集索引在数据结构上有什么区别?
  • Mysql事务隔离级别,有什么区别,什么是脏读幻读不可重复读
  • 平常建立索引,使用什么索引?
  • Mysql的索引的作用?Innodb和myisam的区别?有哪几种行锁?
  • Mysql事务隔离级别?什么是脏读?Myaql事务特性(我说acdi),事务具有隔离性的话为什么会读到其他事务未提交的数据呢?
  • Mysql索引如何实现?
  • 说一下事务的基本要素,引发的问题以及合理解决的方法?脏读幻读不可重复读分别是什么?Mysql的索引是怎么实现的,一般怎么用?
  • 项目的数据库的数据量,数据库中存用户名密码有什么要注意的吗?
  • 索引有哪些类型?使用联合索引有什么注意的地方?
  • Sql优化,A表B表做联合查询怎么做,inner join和左连接和右连接的区别?
  • 什么是sql注入,如何防止sql注入?
  • 项目里的数据库是单机还是主从复制架构?知道主从数据库吗?
  • MySQL的事务隔离级别,各解决什么问题,MySQL的默认隔离级别是什么,什么是内连接外连接交叉连接,他们的mysql指令怎么写?
  • Innodb怎么实现行锁?
  • 什么是最左前缀原则?Mysql有哪些索引优化的方法?
  • 说说Mysql的索引,假如往b树里插入一个数,子节点满了,如何插入
  • Innodb和myisam的区别,用的什么索引?讲一下通过普通索引/聚簇索引查询数据的流程?
  • MySQL事务隔离级别,什么是幻读,MySQL如何解决不可重复读?知道MVVC吗?
  • Mysql底层数据结构,b树和b+树的区别
  • B+树怎么实现的,是二叉树嘛
  • Java进程和mysql进程如何通讯
  • mysql的索引,B+树的原理,聚簇索引和非聚簇索引的区别。
  • 一条sql语句(增加、删除、修改语句)在MySQL中如何执
  • 对比常见的存储引擎(主要对比innodb 和 myisam 最好能多说出几种常见的存储引擎及特点)
  • 索引(能说出innodb 和myisam 的策略最好)
  • 事务 什么是事务 并发事务带来的问题
  • 事务隔离级别 innodb如何保证(主要说如何解决幻读)
  • innodb 锁机制
  • innodb 日志 mysql 日志 两段式提交
  • 一条sql执行的慢的原因
  • 大表优化
  • mysql不同存储引擎存储结构
  • MySQL 索引为什么采用B+树?
  • MySQL的索引类型有什么
  • 联合索引是什么
  • 怎么使用到联合索引
  • 为什么使用联合索引要符合最左前缀匹配
  • B树和B+树区别
  • MySQL索引相关,聚簇索引。
  • innodb和myisam的区别。
  • 四个隔离级别,每个级别分别解决了什么问题,讲了默认隔离级别和常用隔离级别。
  • gap lock, record lock ,next key loc
  • MVCC怎么实现的,解决了什么问题,undolog讲了一点。
  • B+树讲了一点。
  • 脏读 幻读,讲一下幻读场景。
  • mysql数据库引擎有哪些?之间又有什么区别
  • 可以说下数据库范式吗?
  • 回表了解过吗?
  • 索引为什么快?所以你的数据结构(答B+,随之又问还有吗?)
  • 如果让你给B+树下一个定义,你怎么下?
  • 说一下数据库隔离级别
  • 说一下脏读和幻读
  • MySQL 各种索引的一些差异
  • 什么是聚簇索引?什么是非聚簇索引?
  • Innodb 是怎么保证崩溃恢复能力的?(两阶段日志提交)
  • Innodb的优缺点?(围绕索引数展开讲)
  • 索引覆盖?回表?唯一索引?非唯一索引?最左原则?
  • explain 里面有哪些字段?
  • 一个 SQL 查询很慢,从哪些地方进行优化?
  • 自增 ID 和 UUID 的区别?(叶分裂)
  • 自增 ID 申请完了会发生什么事情?
  • 分库解决了什么问题?分表解决了什么问题?
  • 数据库热点查询的数据,怎么做性能优化?
  • Innodb 的索引树数据结构?
  • 最左原则?
  • Innodb 索引的数据结构?为什么用 B+树?
  • MySQl 主从集群怎么搞?
  • Binlog 有几种?区别是什么?
  • 最左原则?联合索引?
  • 为什么会有最左匹配原则?(根据 B+树排序规则去回答)
  • 为什么使用 B+树?回表?怎么减少回表?
  • 数据库的乐观锁和悲观锁?
  • 读锁和写锁的区别?
  • MySQL中的事务是怎么实现的?
  • 隔离级别的区别?都是怎么实现的?
  • 事务数组是什么?高水位指的是哪些?低水位指的是哪些?
  • Innodb 索引数据结构?
  • SQL 语句执行流程?分析器优化器执行器都是什么?
  • 回表?索引下推?
  • 数据库的事务特性?
  • 隔离级别的差异?为什么会有这种差异?
  • 讲讲可重复读和读提交隔离级别和实现机制?
  • 什么是”当前读”?
  • MySQL的事务的特征?
  • MySQL的连接?
  • 数据库范式
  • 线程的状态
  • 获取数据库当前时间
  • 事务的隔离级别
  • 线程和进程的区别
  • 表的连接,
  • 数据库存储引擎
  • MySQL索引类型
  • MySQL优化
  • Mysql存储引擎?
  • b+树的特点?为什么使用b+树索引?
  • 数据隔离级别
  • 数据隔离级别怎么实现(mvcc)
  • 聚集索引和非聚集索引区别
  • InnoDB中辅助索引查询过程
  • mysql事务隔离级别
  • mysql如何在不可重复读级别上解决的幻读
  • mysql中的间隙锁是啥
  • MySQL中InnoDB有哪些索引类型
  • 索引用的什么数据结构(b+树好好看看原理)
  • MySQL是如何解决幻读的(next-key锁和MVCC)
  • MySQL的一条sql语句执行流程
  • 为什么要选择InnoDB,有哪些特性
  • MySQL事务和隔离级别
  • MySQL死锁解决策略
  • SQL如何调优
  • change buffer和redo log区别
  • mysql什么时候会选错索引
  • 什么情况下适合建立索引,什么情况不合适
  • MySQL的各种锁
  • 事务+隔离级别+问题+实现
  • 索引结构
  • 存储引擎
  • Insert语句和delete语句执行过程,具体是怎么到磁盘的

5、并发

  • 如何应对高并发

  • Synchronized有几种用法?他锁的是什么?怎么加锁,如何使锁生效?Synchronized的底层是怎么做的?(面试官:锁的是对象,在对象的头里加了一个计数器,进行锁升级)

  • Volatile有原子性吗?

  • 多线程用过吗?线程间通信方式?Wait,notify,sleep有什么区别?

  • threadLocal用过吗?

  • 乐观锁和悲观锁,讲一讲CAS。

  • 讲一下线程池的核心参数都是什么意思?核心线程数和最大线程数这两个有什么关系,为什么要有这两个参数?

  • 了解过并发编程的队列linkedblochqueue之类的?

  • 了解乐观锁悲观锁吗?

  • Volatile关键字,底层实现机制

  • Java线程的生命周期和切换的条件都是什么?Sleep和wait方法的区别

  • Join和yield的方法作用是什么?

  • 说一下synchronized实现的机制,举个例子:有个类中有两个静态方法A,B都用了synchronized修饰,现在又两个线程1,2。1执行A方法,同时2执行B方法,能执行吗,为什么?

  • 并行并发的联系和区别,线程和进程的联系和区别?

  • 线程安全框架有哪些?currenthashmap如何实现线程安全?和hashtable有什么区别?

  • 创建线程的方式,runnable和callable的区别?

  • 一个线程的生命周期是什么,线程start之后会一直执行吗?

  • Java中实现锁有什么方法?讲讲volatile,如何实现数据可见性?

  • Java创建线程池的方法?线程池的种类和参数?举个例子:核心线程数是5,最大线程数是10,workqueue是10,现在要有运行6个线程,讲下流程

  • 并发的时候会出现什么线程问题?Hashmap是线程安全的吗?除了数据问题还会有什么问题?Happens-before是什么?Volatile如何保证数据可见性

  • Synchronized和lock有什么区别?

  • Synchronized加在普通方法上锁的是什么?加在静态方法上锁的是什么?

  • 创建线程池的方法?线程池的实现原理。

  • 创建一个thread线程,我要跑10个runnable,怎么做?

  • Java并发,线程创建,多线程的四种实现

  • 乐观锁和悲观锁

  • 读锁和写锁是什么?

  • 死锁的原因和防止死锁。

  • 乐观锁和悲观锁。高并发的场景下用哪种。

  • 死锁,死锁的原因,如何防止死锁

  • .java线程池,常见的参数,7个,线程池核心线程大小,线程池最大线程数量,空闲线程存活时间

  • 进程、线程、协程和程序各自是什么及区别

  • 上下文切换

  • synchronized实现原理(结合JVM 连带讲锁升级)

  • 可重入锁代码实现及原理

  • ThreadLocal 一定要看源码]与Thread的关系、hash算法、内存泄漏及如何避免

  • 线程池 针对不同情况参数如何选择

  • 原子类

  • CAS

  • AQS原理

  • 多线程相关,volatile原理,JMM,synchronize优化(还讲了对象头markword 和类元指针),reentrantlock原理,AQS。

  • ThreadLocal原理,里面的map具体怎么实现的,和hashmap的不同,内存泄漏问题,具体应用场景

  • 了解多线程吗?怎么实现,有没有用到代理模式?

  • 了解线程池吗?

  • 简单说下多线程和线程池

  • 线程池 7 个参数的含义?

  • 线程池提交任务的流程?

  • 公平锁和非公平锁的实现(AQS 八股文)

  • volatile 的特性?

  • 一个 volatile 变量,一个线程写,多个线程读会不会出现线程不安全的问题?

  • 进程和线程的区别?

  • Java 创建线程的方式?

  • 线程池参数和任务提交到执行的过程?

  • 对于线程池参数的设定,你有没有自己的一套方案?

  • 代码的同步怎么做?

  • 线程池参数?

  • 任务提交到线程池之后会遇到哪些情况?

  • 用银行取钱的例子给我讲讲线程池?

  • sync 对应的字节码是什么?

  • sync 锁静态方法和非静态方法锁的分别是什么对象?

  • 为什么锁的对象不一样?

  • i++是线程安全的吗?

  • Voletile关键字可以保证线程安全吗?

  • volatile

  • 内存屏障底层实现

  • ReentrantLock内部类Sync,AQS相关

  • synchronized(重量级锁,轻量级锁,偏向锁,锁升级,锁膨胀,锁自旋)

  • 悲观锁和乐观锁

  • synchronized的优化以及锁升级过程,与ReentrantLock区别

  • 介绍CAS

  • 介绍AQS模版,哪些并发类是基于它的

  • 线程池实现原理,主要的7个参数,什么时候放入队列,什么时候拒绝策略,参数配置需要注意什么

  • 进程和线程的区别

  • Java线程安全问题

  • Java中的锁分类

  • 悲观锁synchronized的升级

  • 乐观锁的问题

  • 线程的创建方式

  • 线程工厂

  • 线程池的核心参数,过程

  • 四种线程池的问题

  • Java中的锁

  • 乐观锁的ABA解决,自旋的问题

  • CAS的底层

  • synchronized锁升级过程

  • ReentrantLock的AQS

  • synchronized自旋,升级锁的过程

  • synchronized锁底层?字节码?为什么那么设计?

6、Redis

  • redis的一些问题(主从、集群模式,备份方式,底层数据结构)
  • Redis如何实现分布式锁,及其原理
  • Redis如何实现缓存
  • 当一条数据通过Redis和数据库都没有命中时你是如何处理的,如果它重复发过来你怎么处理
  • 聊一聊redis,(我说了持久化方式)如果RDB和AOF同时开启,默认使用哪种方式恢复,为什么?
  • Redis内存满了怎么办(redis内存淘汰机制)
  • Redis的数据类型和持久化方式?知道resp协议吗?
  • 用redis实现分布式锁
  • Redis持久化方式,单机,主从,哨兵,集群这几种模型部署方式,这些架构能解决什么样的问题,存在什么问题?
  • 部署redis时遇到过什么问题?比如增加redis的访问权限。项目中redis做的什么?在项目中用得什么存储模式。
  • Redis有哪些数据类型,分别什么作用?如果redis出现故障比如断电宕机,如何避免数据丢失?
  • 使用redis作缓存这个部分怎么做的?Redis和mysql数据如何保持一致性?
  • 如何解决缓存穿透,布隆过滤器底层是如何实现的?
  • Redis有哪些数据类型,有哪些持久化方式
  • Redis底层数据结构,淘汰过期键的策略?
  • Redis数据结构, redis跳表是怎么实现的。
  • 为什么用缓存(不光是说redis可以先从计算机cache说起,再到具体环境中,比如网上商城怎么怎么样需要缓存,然后各种缓存什么特点,最后为什么选redis,这里就可以顺便说说redis的结构)
  • 对比两种常用缓存中间件redis和Memcached
  • redis单线程模型及为什么不需要多线程(6.0后又引入了多线程)
  • 持久化策略
  • 数据过期淘汰策略
  • 内存淘汰机制
  • 缓存穿透 缓存雪崩 如何避免
  • 事务
  • 如何保证redis数据库数据一致性
  • 主从结构如何保证(主机-从机)数据一致性
  • 主机坏了如何选出新的主机
  • redis为什么可以做分布式锁
  • 介绍一下redis单线程模型
  • redis过期策略
  • redis持久化,讲了aop rdb,具体场景,两者一起用,cow和fork,aof瘦身。
  • 缓存雪崩 缓存穿透(好像和击穿弄混了),布隆过滤器。
  • redis zset,跳跃表,为什么不用红黑树,跳跃表实现讲了一下。
  • 分布式锁。答了incr,set,setnx,redlock。
  • redis集群相关,讲了哨兵,主从,集群,选举Leader,掉线了会发生什么,脑裂,hash一致性算法(讲了虚拟结点),哨兵之间订阅沟通还有一些不记得了。
  • 为什么项目当中要使用缓存?
  • 为什么 Redis 这么快?
  • Redis的持久化机制?
  • 在生成 RDB 的过程当中,还能继续进行写入么?
  • 为什么 AOF 是数据先落盘再写日志?而数据库是先写日志再落盘?
  • 哨兵的选主策略?一个哨兵是怎么知道其他哨兵的存在的?
  • Redis分布式锁
  • redis持久化方式
  • redis主从复制(全量复制和部分复制)
  • redis哨兵机制(心跳机制和选举机制)
  • redis脑裂解决方案
  • Redis持久化方式(RDB,AOF)
  • Zset底层数据结构
  • ziplist和skiplist
  • 什么时候是ziplist
  • Redis分布式锁
  • Redis基本数据结构
  • Redis中有哪些数据结构
  • Redis中的哨兵是干嘛的
  • Redis如何选举
  • Redis和MySQL双写问题
  • Redis如何主从复制
  • Redis有哪些应用(缓存和分布式锁(Redisson框架))
  • Redis的zset数据结构
  • Redis的rehash过程
  • Redis基础数据类型
  • Redis和Memcache的对比
  • Redis速度为什么快?为什么是单线程?

7、算法

  • 反转链表,判断是否有环,返回换环点(我说了个hashset的思路,面试官说有重复节点怎么办)
  • 有三个排好的数组(每个数组里放100w个数字),取出其中最小的10个数。
  • 有8个数字,1,1,2,2,3,3,4,4,把这8个数字排成一排,两个1中间隔一个数,两个2中间隔2个数,两个3中间隔3个数,两个4中间隔4个数
  • 快排的时间复杂度
  • 两个大数相加,入参两个大数均用string表示
  • 链表的倒数k个节点
  • 说一下快排的思路
  • 手写算法:快排
  • 手写算法:反转链表
  • 反转链表迭代法和递归法
  • 字典树怎么实现的
  • 如何实现两个大数相加
  • 实现 斐波那契数列
  • 找到数组中最小的k个数
  • 算法题:删除 二叉树的右指针,返回 二叉树前序遍历顺序组成的 链表
  • 算法题:删除 链表的倒数第k个节点。
  • 你知道的数据结构有哪些
  • 说下你对红黑树了解哪些
  • 括号匹配
  • 算法题,单词翻转
  • 算法题,最长公共子串
  • 有哪些排序算法,复杂度?稳定性?
  • 翻转链表(迭代和递归都要)
  • 自行设计LinkedList数据结构
  • 三个线程循环打印 A、B、C
  • 写一段死锁代码
  • 红包分配算法
  • 括号匹配
  • 青蛙跳台阶
  • 构造一个最小栈
  • 判断是否平衡二叉树
  • topK
  • 找出字符串中最长回文串
  • 数组中出现超过半数的元素

8、JVM

  • jvm内存里的堆和栈的区别和特点,栈帧
  • Java类加载的过程,分几步,(从.Class文件变成一个实际的对象需要哪些操作)
  • 类初始化的过程
  • JVM分成哪几块,Java内存模型,运行时数据区有哪几部分
  • 本地方法区里放的是什么
  • Java方面看过那些源码?线程池用过吗?有哪些参数?拒绝策略?
  • 讲一下垃圾回收机制?类加载机制,双亲委派模型?
  • JVM内存模型,类加载器
  • 说一下GC,A引用B,B引用A,他们会被会被回收吗?
  • JVM内存模型里的栈帧知道吗?
  • 青年代有哪些区域,用的什么GC算法,讲讲复制算法的逻辑,老年代的回收算法用的什么?假如发生了一次full GC,程序会吊起吗?
  • 讲讲GC算法,新生代分为几块,比例是多少?用的什么回收算法?什么情况下发生full GC?
  • JVM垃圾回收 算法,复制 算法,标记清除 算法。 老年代的GC 算法,串行GC和并行GC,具体流程。 进行JVM参数调整的目的是什么?通过分配合理的年轻代和老年代区间,减少FullGC次数。
  • JMM结构(最好可以针对不同虚拟机 不同版本 或者只说HotSpot虚拟机)每部分的作用,及什么时候会用到
  • java对象创建过程
  • 类加载机制
  • 内存分配与回收策略
  • 如何判断对象是否可被回收
  • 四种引用
  • 垃圾回收算法
  • 垃圾回收器
  • JVM内存布局,虚拟机栈本地方法栈,栈帧里的结构,哪些区域线程私有公有。
  • 堆区域的划分,垃圾回收算法,标记算法,内存分配算法(和垃圾回收器相关)。
  • 还问了项目中使用了什么垃圾回收器,serial serial old。
  • 方法区,元空间。 具体怎么优化解决STW问题。
  • 对象的所有过程,创建销毁,加载链接初始化,分配内存CAS(还讲了TLAB参数),具体怎么移动到老年代(15),还讲了具体操作数栈中的过程,内存泄漏。
  • CMS 和 G1相关也讲了一下。
  • 简单说下jvm和jmm
  • JVM 内存模型(概述)
  • 讲讲双亲委派,为什么?
  • 你觉得双亲委派这个名字有没有什么问题?你讲讲自己的理解
  • 打破双亲委派的例子,举个例子?怎么打破?
  • 你现在用什么 GC 收集器?
  • Eden 区的对象回收策略?
  • CMS 的 STW 情况?
  • CMS 什么情况会触发 Full GC?
  • 新对象一定会在新生代 new 出来么?
  • Java8 有什么新的 GC 算法
  • 了解 G1 收集器么?
  • 哪些情况会出现 OOM?
  • 堆中内存分配比例?
  • 新生代 GC 工作流程?
  • 为什么新生代年龄是 15 次进入老年代?
  • 大对象进入老年代,这个大对象是有多大?
  • 怎么排查 OOM?
  • 双亲委派的理解?
  • 为什么有双亲委派?一定要遵循双亲委派么?
  • 怎么打破双亲委派?
  • 哪些情况下会产生 Full GC?
  • 方法区的大小怎么设置?
  • 栈大小怎么设置?
  • 你遇到过堆栈溢出的情况么?怎么解决的?
  • Java 的类加载过程?什么时候回触发到 Java 类的加载?什么时候回触发类的卸载?
  • 双亲委派?打破双亲委派?
  • 重载和重写在 JVM 层面是怎么鉴别的?
  • JVM当中的方法内联?
  • Java 的类加载过程?
  • JVM内存模型概念?
  • 你对方法区/元空间的理解?
  • 堆中内存的分配?
  • 永久代会涉及到 GC 回收么?
  • 程序运行的时候,怎么监控内存使用情况?
  • 程序运行的时候,怎么看堆栈信息?
  • Java 类加载的过程?
  • 魔数是什么?
  • 为什么叫双亲委派?你有没有觉得这个名字怪怪的?
  • 在一个类中调用了另一个类的私有方法能不能通过编译?
  • 类加载过程?
  • G1收集器和传统收集器的区别?
  • jvm内存结构、垃圾回收算法、垃圾回收器、类加载机制
  • 双亲委派和破坏双亲委派
  • 发生minor GC的情况
  • VM的运行时内存结构
  • 元数据区
  • GC回收
  • 垃圾回收算法
  • 垃圾回收器
  • CMS
  • G1
  • jvm(分区,分代回收,垃圾回收算法,垃圾收集器等)

9、设计模式

  • 写一个单例模式,懒汉加载
  • Java设计模式知道哪些?简单手写个单例模式
  • 设计模式,单例模式、工厂模式、代理模式
  • 最容易考到是手写一个单例设计模式,一定要搞清楚那几种各自哪里有问题。
  • spring、redis、rocketmq中用到了什么设计模式?在哪用到的?
  • 你的项目中用到设计模式了么 ?为什么用? 在什么情况下用? 用它的好处是什么? 如果不用会怎样
  • 说一下常用的设计模式
  • 单例模式怎么实现
  • 谈到了设计模式,说下常见的设计模式
  • 工厂模式详细介绍一下
  • 常见设计模式,jdk里面哪些类用到了什么设计模式
  • 线程安全的单例模式

10、Spring

  • 讲一下AOP
  • Springboot的bean注入和bean的生命周期?
  • Spring框架如何处理接口请求?Springboot注解了解多少?
  • Spring和springboot有什么区别?
  • Spring的AOP如何处理的?
  • 介绍一下spring( or spring boot)吧(什么是spring 有什么特点 优势 对比不用的情况)
  • 列举一些比较重要活比较常用的模块(aop orm test… 官网那张图)
  • AOP IOC
  • bean 生命周期 如何加载一个自己的bean进容器
  • 事务
  • 解释一下常用的注解
  • AOP原理,IOC原理。循环依赖。CGLIB,JDK proxy,讲了底层缓存,之间的区别。
  • OC 的初始化流程?
  • AOP是怎么和 IOC 做整合的?
  • 循环依赖怎么解决?
  • 你对 IOC 的理解?
  • 实际开发当中你哪些地方使用了 Bean 的前置后置处理器?
  • AOP 是怎么和 IOC 进行整合的?
  • Spring 怎么把 Java 对象初始化成 SpringBean 的?
  • IOC 的初始化流程?
  • 为什么会有 SpringBoot 的出现?
  • 讲讲自动装配?
  • 你更倾向于 MyBatis 还是 JPA?
  • 这两个 ORM 的实现和区别?
  • IOC 的特性?你对 IOC 的理解?
  • 我们自己也可以实现 IOC 和 AOP,甚至是前置后置处理器,为什么还要用 Spring 提供的?
  • 怎样才能知道 Spring 的 IOC 容器已经完全初始化了?
  • Spring 的后置处理器接口名字是什么?
  • AOP 和 IOC 的整合流程?
  • AOP 是怎么做动态代理的?
  • CGLIB 是怎么操作字节码的?
  • Spring IOC和AOP 设计原理,为什么要这样设计
  • Spring bean 的生命周期以及作用域
  • Spring中常用注解
  • Spring事务,传播特性
  • Spring MVC 中后端处理流程
  • Spring 启动流程
  • Springboot自动配置原理
  • Springboot自动装配的时候出现bean的错误,怎么解决
  • mybatis预编译
  • mybatis缓存
  • mybatis和dao对应的原理
  • springmvc的请求流程

11、消息队列

  • 如何使用的rabbitmq来做延时队列?在写这个功能的时候有什么问题?
  • [Rabbitmq如何解决重复消费?Redis如何实现分布式锁
  • 有哪些常见的消息队列?用过哪些?
  • 队列模型和发布/订阅模型的区别?
  • 如何保证消息的有序性?
  • 如何保证消息不丢失?
  • 如何不重复消费消息?也就是消息消费的幂等性
  • 如果让你来设计一个消息队列,该如何考虑

12、好文


文章作者: Gtwff
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gtwff !
  目录