前言:主要总结这段时间遇到过的常见面试题目。
一、目录
- Java 基础
- 算法
- 多线程
- 计算机网络
- JVM
- Mysql
- Redis
- 消息中间件:Kafka、RabbitMQ
- SpringBoot、SpringCloud
- 分布式系统
- 高可用系统
- 开放性题目
二、Java 基础
- 1、Objects.equals(3L, 3) 返回结果是什么,为什么?
- 2、Java 的基本类型有哪些,分别占多少个字符。
- 3、重载、重写的区别?
- 4、什么时候继承父类?什么时候实现接口?
- 5、对象的创建过程。
- 6、常见的集合有哪些?它们都有哪些特性?
- 7、HashMap 和 HashTable 的区别?
- 8、HashTable 为什么是安全的?
- 9、Hashtable、ConcurrentHashMap、TreeMap
- 10、ArrayList
- 11、什么是双亲委派机制(类加载)?
- 12、什么是反射机制?反射机制的使用场景有哪些?
- 13、Java 8的新特性有哪些?
三、算法
- 冒泡排序、快速排序
- 链表翻转
- 给一个链表,奇数位为升序,偶数位是降序,从小到大排序。
- 如何判断一个链表中是否有环?
- 找出两个链表的交点。
- 有100杯咖啡,小A一次拿2杯,小B一次拿3杯,使用Java多线程模拟该场景,打印出每次拿完咖啡后,剩余的咖啡数量。
必刷 LeetCode 题目:
- LeetCode 001. Two Sum
- LeetCode 015. 3Sum (可能会问 LeetCode 18. 4Sum 思路)
- LeetCode 020. Valid Parentheses
- LeetCode 021. Merge Two Sorted Lists
- LeetCode 025. Reverse Nodes in k-Group
- LeetCode 053. Maximum Subarray
- LeetCode 066. Plus One(等价于:高精度加法)
- LeetCode 098. Validate Binary Search Tree
- LeetCode 110. Balanced Binary Tree
- LeetCode 134. Gas Station
- LeetCode 136. Single Number
- LeetCode 137. Single Number II
- LeetCode 146. LRU Cache(变形题:带有过期时间的 LRU 缓存)
- LeetCode 206. Reverse Linked List
- LeetCode 215. Kth Largest Element in an Array(等价于:快速排序)
- LeetCode 232. Implement Queue using Stacks
- LeetCode 328. Odd Even Linked List
- LeetCode 415. Add Strings(等价于:大数加法)
- LeetCode 470:rand7() rand10()
- LeetCode 496. Next Greater Element I(时间复杂度O(n))
- LeetCode 716. Max Stack(两个栈实现最大栈,要求 pop,push,get_max 都为O(1))
- LeetCode 860. Lemonade Change
- LeetCode 862. Shortest Subarray with Sum at Least K
- LeetCode 876. Middle of the Linked List
- LeetCode 946. Validate Stack Sequences
字节算法汇总:https://leetcode-cn.com/circle/discuss/nBoYGv/
四、多线程
- 1、什么是线程?什么事进程?
- 2、CAS是什么,用来解决什么问题?
- 3、什么是 BIO?什么是 NIO?两者的区别是什么
- 4、AQS
五、计算机网络
- 1、三次握手、四次挥手
- 2、IO模型:NIO、BIO 多路复用
- 3、多路复用
六、JVM
- 1、JVM 内存模型
- 2、垃圾回收算法有哪些?
- 3、jvm 复制算法、标记算法
- 4、垃圾回收器
七、Mysql
在线练习sql,地址:https://sqlzoo.net/wiki/SELECT_basics/zh
- 1、有哪些数据库引擎
- 2、事务的隔离级别
- 3、mysql是如何实现对应的事务隔离级别的
- 4、索引优化
- 5、哪些情况不走索引
- 6、执行一条sql查询的整个过程
- 7、如何实现可重复读
八、Redis
- 1、redis 基础数据结构
- 2、redis 数据结构的底层实现
- 3、redis 持久化方式
- 4、AOF追加写操作,文件超过阈值,会如何处理
- 5、AOF重写机制
- 6、动态字符串的底层实现
- 7、redis 使用场景
九、消息中间件
Kafka、RabbitMQ
- 1、生产一条消息的整个过程
- 2、kafka 的存储
- 3、kafka 中的一些基本概念
- 4、kafka 消费一条消息的过程
- 5、kafka 如何保证消息不丢的
- 6、生产一条消息的整个过程
十、SpringBoot、SpringCloud
- 1、SpringBoot的启动过程
- 2、Spring 中的 SPI 机制是什么?
- 3、JDK、Dubbo、Spring 三种 SPI 机制,谁更好?
- 4、Spring 自定义注解的实现原理
十一、分布式系统
- 1、分布式事务
- 2、微服务相关内容
- 3、服务注册发现
- 4、GRPC
十二、高可用系统
十三、开放性题目
- 1、介绍一下自己
- 2、项目经历
- 项目中难点、有意思的点
- 项目中用到的中间件
- 设计思路
- 3、离职原因
- 4、内存占用 100% 排查问题
- 5、并发高,会造成什么问题
- 6、堆栈溢出
附录
mysql
- MySQL索引_组合索引和单列索引
- 单列索引和组合索引效率问题
- 聚簇索引和非聚簇索引
- 深入了解MySQL中的组合索引,看看与单列索引的区别
- MySQL是如何实现可重复读的
- MySQL 的可重复读到底是怎么实现的?图解 ReadView 机制
- 一条 sql 的执行过程详解
- 一条查询SQL的执行过程
- mysql 事务隔离级别,及其实现原理
kafka
- 7张图了解kafka基本概念
- Kafka概念和基本架构
- 怎么理解 Kafka 消费者与消费组之间的关系?
- (三)Kafka的生产者原理及使用详解
- blog-Kafka
- Kafka精进 | 一文读懂Producer消息发送机制
- Kafka(三)Kafka的高可用与生产消费过程解析
- Kafka 消费者
redis
- 本文作者: th3ee9ine
- 本文链接: https://www.blog.ajie39.top/2021/11/14/Java 面试题目总结/
- 版权声明: 本博客所有文章除特别声明外,均采用 LICENSE 下的许可协议。转载请注明出处!