写点什么

大厂“毕业”半月,面试数十家公司,凭借这份面试总结涨获 7 家 Offer,成功入职

作者:程序员小毕
  • 2022 年 9 月 25 日
    湖南
  • 本文字数:5017 字

    阅读完需:约 16 分钟

大厂“毕业”半月,面试数十家公司,凭借这份面试总结涨获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 即可

用户头像

领取资料添加小助理vx:bjmsb2020 2020.12.19 加入

Java领域;架构知识;面试心得;互联网行业最新资讯

评论

发布
暂无评论
大厂“毕业”半月,面试数十家公司,凭借这份面试总结涨获7家Offer,成功入职_spring_程序员小毕_InfoQ写作社区