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、好文
- https://www.nowcoder.com/discuss/585756?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/597041?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/601272?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/608462?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/613239?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/624512?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/627413?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/628372?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/634359?channel=-1&source_id=profile_follow_post_nctrack
- https://www.nowcoder.com/discuss/639644?channel=-1&source_id=profile_follow_post_nctrack