大厂“毕业”半月,面试数十家公司,凭借这份面试总结涨获 7 家 Offer,成功入职
最近行情,真的非常差,很多公司都开启了裁员模式,lz 也是被裁大军的一员。最开始的时候我一度陷入精神内耗中,认为被裁就是自己能力不行,一直在自我怀疑状态中!
但这段时间我看开了,遭遇裁员可能并不是我的问题,而是公司的问题。只不过公司不好意思说是因为管理层决策错误,就把错误推到我身上,然后我就稀里糊涂离职了![哈哈]这样自我安慰下找工作的心情都会好很多,不说了,背八股文去了,前两天得到一份 1000 多页的八股文整理还涵盖了 HR 面试题,够我卷很长时
间了
Java 基础
面向对象和面向过程的区别
Java 语言有哪些特点?
什么是 JDK?什么是 JRE?什么是 JVM?三者之间的联系与区别
什么是字节码?采用字节码的最大好处是什么?
Java 和 C++的区别
什么是 Java 程序的主类?应用程序和小程序的主类有何不同?
Java 应用程序与小程序之间有那些差别?
字符型常量和字符串常量的区别
构造器 Constructor 是否可被 override
重载和重写的区别
Java 面向对象编程三大特性:封装、继承、多态
String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?
自动装箱与拆箱
在一个静态方法内调用一个非静态成员为什么是非法的?
在 Java 中定义一个不做事且没有参数的构造方法的作用
import java 和 javax 有什么区别
接口和抽象类的区别是什么?
成员变量与局部变量的区别有那些?
创建一个对象用什么运算符?对象实体与对象引用有何不同?
什么是方法的返回值?返回值在类的方法里的作用是什么?
一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?
构造方法有哪些特性?
静态方法和实例方法有何不同?
对象的相等与指向他们的引用相等,两者有什么不同?
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
==与 equals(重要)
hashCode 与 equals(重要)
Java 中的值传递和引用传递
简述线程,程序、进程的基本概念。以及他们之间关系是什么?
线程有哪些基本状态?这些状态是如何定义的?
有同学可能会疑惑为什么我不直接放出题解?实在是篇幅所限,如果每一题都放上题解,这篇文章没个七八万字是下不来的,所以具体题解这里就不放了,给出题目大家对照一下自身所学,不会的可以去网上搜一搜答案。当然了,题解我也是有整理好的,因为我知道有很多同学都是懒得一题一题去搜,因为这样学习效率属实不高,所以需要题解文档的同学可以添加小助理 vx:1426687161 即可获取免费下载方式
Java 集合框架
Java 集合框架是什么?说出一些集合框架的优点?
集合框架中的泛型有什么优点?
Java 集合框架的基础接口有哪些?
为何 Collection 不从 Cloneable 和 Serializable 接口继承?
为何 Map 接口不继承 Collection 接口?
Iterator 是什么?
Enumeration 和 Iterator 接口的区别?
为何没有像 Iterator.add()这样的方法,向集合中添加元素?
为何迭代器没有一个方法可以直接获取下一个元素,而不需要移动游标?
Iterater 和 ListIterator 之间有什么区别?
遍历一个 List 有哪些不同的方式?
通过迭代器 fail-fast 属性,你明白了什么?
fail-fast 与 fail-safe 有什么区别?
在迭代一个集合的时候,如何避免 ConcurrentModificationException?
为何 Iterator 接口没有具体的实现?
UnsupportedOperationException 是什么?
在 Java 中,HashMap 是如何工作的?
hashCode()和 equals()方法有何重要性?
我们能否使用任何类作为 Map 的 key?
Map 接口提供了哪些不同的集合视图?
HashMap 和 HashTable 有何不同?
如何决定选用 HashMap 还是 TreeMap?
ArrayList 和 Vector 有何异同点?
Array 和 ArrayList 有何区别?什么时候更适合用 Array?
ArrayList 和 LinkedList 有何区别?
哪些集合类提供对元素的随机访问?
EnumSet 是什么?
哪些集合类是线程安全的?
并发集合类是什么?
BlockingQueue 是什么?
Java 多线程
线程和进程有什么区别?
创建线程的三种方式的对比?
为什么要使用多线程呢?
线程的状态流转?
什么是线程死锁?如何避免死锁?
常见的对比
sleep() 方法和 wait() 方法区别和共同点?
为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法
ThreadLocal 是什么?有什么用?
Thread 类中的 yield 方法有什么作用?
Java 中的 fork join 框架是什么?
synchronized 和 ReentrantLock 的区别
谈谈 volatile 的使用及其原理?
synchronized 关键字和 volatile 关键字的区别?
Java 中如何停止一个线程?
一个线程运行时发生异常会怎样?
如何在两个线程间共享数据?
Java 中 notify 和 notifyAll 有什么区别?
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
什么是 ThreadLocal 变量?
Java 中 interrupted 和 isInterruptedd 方法的区别?
为什么 wait 和 notify 方法要在同步块中调用?
为什么你应该在循环中检查等待条件?
Java 中的同步集合与并发集合有什么区别?
什么是线程池?为什么要使用它?
如何写代码来解决生产者消费者问题?
Java 中活锁和死锁有什么区别?
怎么检测一个线程是否拥有锁?
你如何在 Java 中获取线程堆栈?
Java 中 synchronized 和 ReentrantLock 有什么不同?
Java 虚拟机
讲一下 JVM 内存结构?
Java 对象的定位方式
说一下堆栈的区别?
什么情况下会发生栈溢出?
类文件结构
什么是类加载?类加载的过程?
什么是双亲委派模型?
为什么需要双亲委派模型?
什么是类加载器,类加载器有哪些?
类的实例化顺序?
如何判断一个对象是否存活?
可作为 GC Roots 的对象有哪些?
什么情况下类会被卸载?
强引用、软引用、弱引用、虚引用是什么,有什么区别?
Minor GC 和 Full GC 的区别?
内存的分配策略?
Full GC 的触发条件?
垃圾回收算法有哪些?
有哪些垃圾回收器?
常用的 JVM 调优的命令都有哪些?
对象头了解吗?
如何排查 OOM 的问题?
GC 是什么?为什么要 GC?
MySQL 面试题
能说下 myisam 和 innodb 的区别吗?
说下 mysql 的索引有哪些吧,聚簇和非聚簇索引又是什么?
那你知道什么是覆盖索引和回表吗?
锁的类型有哪些呢
你能说下事务的基本特性和隔离级别吗?
那 ACID 靠什么保证的呢?
那你说说什么是幻读,什么是 MVCC?
那你知道什么是间隙锁吗?
你们数据量级多大?分库分表怎么做的?
那分表后的 ID 怎么保证唯一性的呢?
分表后非 sharding_key 的查询怎么处理呢?
说说 mysql 主从同步怎么做的吧?
那主从的延迟怎么解决呢?
MySQL 的逻辑架构了解吗?
谈一谈 MySQL 的读写锁
MySQL 的锁策略有什么?
数据库死锁如何解决?
事务是什么?
事务有什么特性?
MySQL 的隔离级别有哪些?
MVCC 是什么?
谈一谈 InnoDB
谈一谈 MyISAM
谈一谈 Memory
查询执行流程是什么?
VARCHAR 和 CHAR 的区别?
DATETIME 和 TIMESTAMP 的区别
数据类型有哪些优化策略?
索引有什么作用?
谈一谈 MySQL 的 B-Tree 索引
Spring 面试题
什么是 spring?
Spring 框架的设计目标,设计理念,和核心是什么
Spring 的优缺点是什么?
Spring 有哪些应用场景
Spring 由哪些模块组成?
Spring 框架中都用到了哪些设计模式?
详细讲解一下核心容器(spring context 应用上下文) 模块
Spring 框架中有哪些不同类型的事件
Spring 应用程序有哪些不同组件?
使用 Spring 有哪些方式?
什么是 Spring IOC 容器?
控制反转(IoC)有什么作用
IOC 的优点是什么?
Spring IoC 的实现机制
Spring 的 IoC 支持哪些功能
BeanFactory 和 ApplicationContext 有什么区别?
Spring 如何设计容器的,BeanFactory 和 ApplicationContext 的关系详解
ApplicationContext 通常的实现是什么?
什么是 Spring 的依赖注入?
依赖注入的基本原则
依赖注入有什么优势
有哪些不同类型的依赖注入实现方式?
构造器依赖注入和 Setter 方法注入的区别
什么是 Spring beans?
一个 Spring Bean 定义 包含什么?
如何给 Spring 容器提供配置元数据?Spring 有几种配置方式
Spring 配置文件包含了哪些信息
Spring 基于 xml 注入 bean 的几种方式
解释 Spring 支持的几种 bean 的作用域
Spring 框架中的单例 bean 是线程安全的吗?
Spring 如何处理线程并发问题?
解释 Spring 框架中 bean 的生命周期
哪些是重要的 bean 生命周期方法? 你能重载它们吗?
什么是 Spring 的内部 bean?什么是 Spring inner beans?
在 Spring 中如何注入一个 java 集合?
什么是 bean 装配?
计算机网络
OSI 的七层模型分别是?各自的功能是什么?
为什么需要三次握手?两次不行?
为什么需要四次挥手?三次不行?
TCP 与 UDP 有哪些区别?各自应用场景?
HTTP1.0,1.1,2.0 的版本区别
POST 和 GET 有哪些区别?各自应用场景?
HTTP 哪些常用的状态码及使用场景?
HTTP 状态码 301 和 302 的区别,都有哪些用途?
在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
HTTP 如何实现长连接?在什么时候会超时?
TCP 如何保证有效传输及拥塞控制原理
IP 地址有哪些分类?
GET 请求中 URL 编码的意义
什么是 SQL 注入?举个例子?
谈一谈 XSS 攻击,举个例子?
讲一下网络五层模型,每一层的职责?
简单说下 HTTPS 和 HTTP 的区别
对称加密与非对称加密的区别
简单说下每一层对应的网络协议有哪些?
ARP 协议的工作原理?
TCP 的主要特点是什么?
UDP 的主要特点是什么?
TCP 和 UDP 分别对应的常见应用层协议有哪些?
为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?
保活计时器的作用?
TCP 协议是如何保证可靠传输的?
谈谈你对停止等待协议的理解?
谈谈你对 ARQ 协议的理解?
谈谈你对滑动窗口的了解?
谈下你对流量控制的理解?
MQ 消息队列
什么是消息队列
为什么需要消息队列,消息队列的应用场景
消息队列的优缺点
如何保证消息队列的高可用
如何保证消息的可靠性,如何保证消息不丢失
如果处理重复消息(幂等性)
如何保证消息的有序性
如果处理消息堆积
说一下你了解的 MQ,说出几种 MQ 之间的区别
低延时高吞吐,做了什么优化
RabbitMQ 整个流程,RabbitMQ 有哪些重要的角色,RabbitMQ 有哪些重要的组件
RabbitMQ 有几种广播类型
RabbitMQ 包含事务功能吗?如何使用?
RabbitMQ 的事务在什么情况下是无效的?
Kafka 可以脱离 zookeeper 单独使用吗?为什么
Kafka 有几种数据保留的策略
Kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 Kafka 将如何处理?
Kafka 的分区策略有哪些?
什么情况会导致 Kafka 运行变慢?
使用 Kafka 集群需要注意什么?
Redis
Redis 是单线程还是多线程?
为什么 Redis 是单线程?
Redis 为什么使用单进程、单线程也很快
Redis 在项目中的使用场景
Redis 常见的数据结构
Redis 的字符串(SDS)和 C 语言的字符串区别
Sorted Set 底层数据结构
Sorted Set 为什么同时使用字典和跳跃表?
Sorted Set 为什么使用跳跃表,而不是红黑树?
Hash 对象底层结构
Hash 对象的扩容流程
渐进式 rehash 的优点
rehash 流程在数据量大的时候会有什么问题吗(Hash 对象的扩容流程在数据量大的时候会有什么问题吗)
Redis 的网络事件处理器(Reactor 模式)
Redis 删除过期键的策略(缓存失效策略、数据过期策略)
Redis 的内存淘汰(驱逐)策略
Redis 的 LRU 算法怎么实现的?
Redis 的持久化机制有哪几种,各自的实现原理和优缺点?
为什么需要 AOF 重写
介绍下 AOF 重写的过程、AOF 后台重写存在的问题、如何解决 AOF 后台重写存在的数据不一致问题
RDB、AOF、混合持久,我应该用哪一个?
同时开启 RDB 和 AOF,服务重启时如何加载
Redis 怎么保证高可用、有哪些集群模式
主从复制
哨兵
集群模式
集群选举
如何保证集群在线扩容的安全性?(Redis 集群要增加分片,槽的迁移怎么保证无损)
Redis 事务的实现
Redis 的 Java 客户端有哪些?官方推荐哪个?
NGINX
什么是 Nginx?
Nginx 有哪些优点?
Nginx 应用场景?
Nginx 怎么处理请求的?
Nginx 是如何实现高并发的?
什么是正向代理?
什么是反向代理?
Nginx 目录结构有哪些?
Nginx 配置文件 nginx.conf 有哪些属性模块?
cookie 和 session 区别?
为什么 Nginx 不使用多线程?
nginx 和 apache 的区别
什么是动态资源、静态资源分离?
为什么要做动、静分离?
什么叫 CDN 服务?
Nginx 怎么做的动静分离?
Nginx 负载均衡的算法怎么实现的?策略有哪些?
如何用 Nginx 解决前端跨域问题?
Nginx 虚拟主机怎么配置?`
基于虚拟主机配置域名
基于端口的虚拟主机
location 的作用是什么?
Location 正则案例
Nginx 配置高可用性怎么配置?
在 nginx 中,如何使用未定义的服务器名称来阻止处理请求?
Nginx 如何实现后端服务的健康检查?
好了,就先写到这里吧,文章中的每一道题都是有同学面试过或我给面试者出过的真题,希望大家可以沉下心来理解题目背后的出题逻辑,当然也不是让你们把这些题全背,那太为难人了,事实上也没有很大意义,你可以根据自己求职的岗位和自己的短板有针对性的去查漏补缺,祝大家都早点拿到心仪的 offer。
最后,求个关注,我是乐于分享的程序员,持续输出学习干货和面试经,需要资料添加小助理 vx:1426687161 即可
评论