不知不觉间已经 10 月啦,金九银十你准备好了吗?
很多人都吐槽过网上所谓的面试真题都已经见太多了,看这玩意真的有用吗?
这智者见智仁者见仁了属于是,毕竟押题成功的几率太小了,反正我当年刷面试题也没指望过这个,更多的是通过刷题掌握背后的知识点,巩固自己的基础,个人觉得还是有用的。毕竟现在“卷王之王”时代,你知道的别人也知道,卷的可不就是你的基础嘛!
之前也发过面试题整理的文,是直接把题跟答案一起放出来的,内容冗长不说,还被很多人吐槽这样做失去了思考的时间,里外不是人了属于是。所以今天我学聪明了,我把题给大伙放出来,答案单独整理成册
看到这里又有人要说了:收藏是不是等于学会?
我:..........
好了,不废话了,直接来看今年又有哪些老掉牙的题登上了各大厂面试官的办公桌吧。
Java 基础
-
⾯向对象
-
Java 语言有哪些特点?
-
JDK、JRE、JVM 之间的区别
-
Java 和 C++的区别(我知道很多人没学过 C++,但是面试官就是没事喜欢拿咱们 Java 和 C++比呀!)
-
什么是 Java 程序的主类?应用程序和小程序的主类有何不同?
-
构造器 Constructor 是否可被 override
-
==和 equals⽅法之前的区别
-
hashCode()与 equals()之间的关系
-
final 关键字的作⽤是什么?
-
String、StringBuffer、StringBuilder 的区别
-
重载和重写的区别
-
接⼝和抽象类的区别
-
List 和 Set 的区别
-
ArrayList 和 LinkedList 区别
-
HashMap 和 HashTable 有什么区别?其底层实现是什么?
-
谈谈 ConcurrentHashMap 的扩容机制
-
Jdk . 到 Jdk . HashMap 发⽣了什么变化(底层)?
-
说⼀下 HashMap 的 Put⽅法
-
泛型中 extends 和 super 的区别深拷⻉和浅拷⻉
-
HashMap 的扩容机制原理
-
CopyOnWriteArrayList 的底层原理是怎样的
-
什么是字节码?采⽤字节码的好处是什么?
-
Java 中的异常体系是怎样的
-
Java 中有哪些类加载器
-
说说类加载器双亲委派模型
-
GC 如何判断对象可以被回收
-
JVM 中哪些是线程共享区
-
你们项⽬如何排查 JVM 问题
-
⼀个对象从加载到 JVM,再到被 GC 清除,都经历了什么过程?
-
怎么确定⼀个对象到底是不是垃圾?
-
JVM 有哪些垃圾回收算法?
-
什么是 STW?
-
JVM 有哪些垃圾回收器?
-
垃圾回收分为哪些阶段 什么是三⾊标记?
-
JVM 参数有哪些?
-
对象的相等与指向他们的引用相等,两者有什么不同?
-
Java 中的值传递和引用传递
-
简述线程,程序、进程的基本概念。以及他们之间关系是什么?
Java 并发
-
线程的⽣命周期?线程有⼏种状态
-
sleep()、wait()、join()、yield()之间的的区别
-
对线程安全的理解
-
Thread 和 Runable 的区别
-
对守护线程的理解
-
ThreadLocal 的底层原理
-
并发、并⾏、串⾏之间的区别并发的三⼤特性
-
Java 死锁如何避免?
-
死锁与活锁的区别,死锁与饥饿的区别?
-
如何理解 volatile 关键字
-
为什么⽤线程池?解释下线程池参数?
-
线程池的底层⼯作原理
-
线程池中阻塞队列的作⽤?为什么是先添加列队⽽不是先创建最⼤线程?
-
线程池中线程复⽤原理
-
ReentrantLock 中的公平锁和⾮公平锁的底层实现
-
ReentrantLock 中 tryLock()和 lock()⽅法的区别
-
CountDownLatch 和 Semaphore 的区别和底层原理
-
Sychronized 的偏向锁、轻量级锁、重量级锁
-
Sychronized 和 ReentrantLock 的区别
-
谈谈你对 AQS 的理解,AQS 如何实现可重⼊锁?
-
在 java 中守护线程和本地线程区别?
-
什么是多线程中的上下文切换?
-
Java 中用到的线程调度算法是什么?
-
什么是线程组,为什么在 Java 中不推荐使用?
-
什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
-
什么是 Executors 框架?
-
多线程同步和互斥有几种实现方法,都是什么?
开发框架
-
Spring 是什么?
-
谈谈你对 AOP 的理解
-
谈谈你对 IOC 的理解
-
解释下 Spring⽀持的⼏种 bean 的作⽤域。
-
Spring 事务的实现⽅式和原理以及隔离级别?
-
Spring 事务传播机制
-
Spring 事务什么时候会失效?
-
什么是 bean 的⾃动装配,有哪些⽅式?
-
Spring 中的 Bean 创建的⽣命周期有哪些步骤
-
Spring 中 Bean 是线程安全的吗
-
ApplicationContext 和 BeanFactory 有什么区别
-
Spring 中的事务是如何实现的
-
Spring 中什么时候 @Transactional 会失效
-
Spring 容器启动流程是怎样的
-
Spring⽤到了哪些设计模式
-
Spring Boot、Spring MVC 和 Spring 有什么区别
-
Spring MVC ⼯作流程
-
Spring MVC 的主要组件?
-
Spring Boot ⾃动配置原理?
-
如何理解 Spring Boot 中的 Starter
-
什么是嵌⼊式服务器?为什么要使⽤嵌⼊式服务器?
-
Spring Boot 中常⽤注解及其底层实现
-
Spring Boot 是如何启动 Tomcat 的
-
Spring Boot 中配置⽂件的加载顺序是怎样的?
-
Mybatis 的优缺点
-
MyBatis 与 Hibernate 有哪些不同?
-
#{}和 ${}的区别是什么?
-
简述 Mybatis 的插件运⾏原理,如何编写⼀个插件。
Mysql
-
索引的基本原理
-
Mysql 聚簇和⾮聚簇索引的区别
-
Mysql 索引的数据结构,各⾃优劣
-
索引设计的原则?
-
InnoDB 存储引擎的锁的算法
-
关⼼过业务系统⾥⾯的 sql 耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
-
事务的基本特性和隔离级别
-
ACID 靠什么保证的?
-
什么是 MVCC
-
分表后⾮sharding_key 的查询怎么处理,分表后的排序?
-
Mysql 主从同步原理
-
简述 MyISAM 和 InnoDB 的区别
-
简述 Mysql 中索引类型及对数据库的性能的影响
-
Explain 语句结果中各个字段分表表示什么
-
索引覆盖是什么
-
最左前缀原则是什么 Innodb 是如何实现事务的
-
B 树和 B+树的区别,为什么 Mysql 使⽤B+树 Mysql 锁有哪些,如何理解
-
Mysql 慢查询该如何优化?
Redis
-
什么是 RDB 和 AOF
-
Redis 的过期键的删除策略
-
Redis 线程模型、单线程快的原因
-
简述 Redis 事务实现
-
Redis 主从复制的核⼼原理
-
Redis 有哪些数据结构?分别有哪些典型的应⽤场景?
-
Redis 分布式锁底层是如何实现的?
-
Redis 主从复制的核⼼原理
-
Redis 集群策略
-
缓存穿透、缓存击穿、缓存雪崩分别是什么
-
Redis 和 Mysql 如何保证数据⼀致
-
Redis 的持久化机制
-
Redis 单线程为什么这么快
-
简述 Redis 事务实现
-
Redis 相比 memcached 有哪些优势
-
Reids 常用 5 种数据类型
-
Reids6 种淘汰策略
-
Redis 的并发竞争问题如何解决?
-
Redis 内存划分
-
AOF 常用配置总结
分布式与微服务
-
为什么要将系统进行拆分?
-
什么是 CAP 理论
-
什么是 BASE 理论
-
什么是 RPC
-
数据⼀致性模型有哪些
-
分布式 ID 是什么?有哪些解决⽅案?
-
分布式锁的使⽤场景是什么?有哪些实现⽅案?
-
什么是分布式事务?有哪些实现⽅案?
-
什么是 ZAB 协议
-
简述 paxos算法
-
简述 raft算法
-
为什么 Zookeeper 可以⽤来作为注册中⼼
-
Zookeeper 中的领导者选举的流程是怎样的?
-
Zookeeper 集群中节点之间数据是如何同步的
-
Dubbo⽀持哪些负载均衡策略
-
Dubbo 是如何完成服务导出的?
-
Dubbo 是如何完成服务引⼊的?
-
Dubbo 的架构设计是怎样的?
-
负载均衡算法有哪些
-
分布式架构下,Session 共享有什么⽅案简述你对 RPC、RMI 的理解
-
如何实现接⼝的幂等性
-
Zookeeper 的数据模型和节点类型
-
简述 zk 的命名服务、配置管理、集群管理
-
如何实现分库分表
-
存储拆分后如何解决唯⼀主键问题
-
雪花算法原理
-
如何解决不使⽤分区键的查询问题
-
Spring Cloud 有哪些常⽤组件,作⽤是什么?
-
如何避免缓存穿透、缓存击穿、缓存雪崩?
-
分布式系统中常⽤的缓存⽅案有哪些
-
缓存过期都有哪些策略?
-
常⻅的缓存淘汰算法
-
布隆过滤器原理,优缺点
-
分布式缓存寻址算法
-
什么是 Hystrix?
-
简述实现机制 Spring Cloud 和 Dubbo 有哪些区别?
-
什么是服务雪崩?什么是服务限流?什么是服务熔断?什么是服务降级?区别是什么?
-
SOA、分布式、微服务之间有什么关系和区别?
-
怎么拆分微服务?
-
怎样设计出⾼内聚、低耦合的微服务?
-
有没有了解过 DDD 领域驱动设计?
-
什么是中台?
-
你的项⽬中是怎么保证微服务敏捷开发的?
消息队列
-
如何进⾏产品选型?
-
简述 RabbitMQ 的架构设计
-
RabbitMQ 如何确保消息发送 ? 消息接收?
-
RabbitMQ 事务消息
-
RabbitMQ 死信队列、延时队列
-
RabbitMQ 镜像队列机制
-
Kafka 是什么
-
Kafka 为什么吞吐量⾼
-
Kafka 的 Pull 和 Push 分别有什么优缺点
-
为什么要使⽤ kafka,为什么要使⽤消息队列?
-
Kafka 中的 ISR、AR⼜代表什么?ISR 的伸缩⼜指什么
-
Kafka⾼效⽂件存储设计特点:
-
Kafka 与传统消息系统之间有三个关键区别
-
Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中
-
Kafka 的消费者如何消费数据
-
Kafka 消费者负载均衡策略
-
kafaka⽣产数据时数据的分组策略
-
Kafka 中是怎么体现消息顺序性的?
-
Kafka 如何实现延迟队列?
-
RocketMQ 的事务消息是如何实现的
-
为什么 RocketMQ 不使⽤Zookeeper 作为注册中⼼呢?
-
RocketMQ 的实现原理
-
RocketMQ 为什么速度快
-
消息队列如何保证消息可靠传输
-
消息队列有哪些作⽤
-
死信队列是什么?
-
延时队列是什么?
-
如何保证消息的⾼效读写?
-
让你设计⼀个 MQ,你会如何设计?
网络
-
什么是认证和授权?如何设计⼀个权限认证框架?
-
如果没有 Cookie,Session 还能进⾏身份验证吗?
-
什么是 CSRF 攻击?如何防⽌?
-
什么是 OAuth . 协议?有哪⼏种认证⽅式?
-
什么是 SSO?与 OAuth . 有什么关系?
-
如何设计⼀个开放授权平台?
-
epoll 和 poll 的区别
-
TCP 的三次握⼿和四次挥⼿
-
浏览器发出⼀个请求到收到响应经历了哪些步骤?
-
跨域请求是什么?有什么问题?怎么解决?
-
零拷⻉是什么
Leetcode算法
-
探索二维矩阵
-
鸡蛋掉落
-
反转链表
-
统计 N 以内的素数
-
寻找数组的中⼼索引
-
删除排序数组中的重复项
-
x 的平⽅根
-
三个数的最⼤乘积
-
两数之和
-
斐波那契数列
-
环形链表
-
排列硬币
————