【Java面试】:第三章:P6级面试

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云原生网关 MSE Higress,422元/月
简介: 【Java面试】:第三章:P6级面试

互联网 Java 工程师知识扫盲

个人介绍

我是廖志伟,一名java开发工程师,CSDN博客专家,多年一线研发经验,曾就职多家互联网公司,任Java开发工程师职位,参与多个千万级并发互联网产品研发,对大型分布式,高并发及微服务架构有非常深入研究。

项目说明

本项目内容来自廖志伟整理与编写,内容涵盖Java基础、框架、设计模式、缓存、多线程、分布式事务、数据库、JVM、锁、高并发、分布式、高可用、微服务、海量数据处理等领域知识。我对这部分知识做了一个系统的整理,方便学习查阅。下面的内容可在我的gitee仓库进行查看:远程仓库地址:https://gitee.com/java_wxid/Java-knowledge-system-induction

内容模块

  1. Java基础
  2. 框架
  3. 设计模式
  4. 缓存
  5. 多线程
  6. 分布式事务
  7. 数据库
  8. JVM
  9. 消息中间件
  10. 搜索引擎
  11. 海量数据处理
  12. 解决问题的能力
  13. 网络
  14. Netty
  15. 功能模块设计

Java基础

HashMap

HashMap底层原理?

HashMap扩容机制?

HashMap加载因子为什么是0.75?

HashMap为什么会发生并发修改异常?并发修改异常解决方案?

为什么jdk8以后HashMap会使用红黑树优化?

ConcurrentHashMap底层实现?

CAS,ABA,volatile这些是什么?

框架

Spring


Mybatis

Dubbo

说一下 Dubbo 的工作原理?注册中心挂了可以继续通信吗?

Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?

Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

为什么需要服务治理?如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?

分布式服务接口的幂等性如何设计(比如不能重复扣款)?

分布式服务接口请求的顺序性如何保证?

如何自己设计一个类似 Dubbo 的 RPC 框架?

Dubbo特性?

Dubbo SPI 和 Java SPI 区别?

Dubbo 用到哪些设计模式?

为什么要进行系统拆分?如何进行系统拆分?拆分后不用 Dubbo 可以吗?

Zookeeper

SpringCould

什么是熔断?什么是服务降级?

熔断框架如何做技术选型?选用 Sentinel 还是 Hystrix?

如何限流?在工作中是怎么做的?说一下具体的实现?

Spring Boot 和 Spring Cloud,谈谈你对它们的理解?

Spring Cloud 和 Dubbo 有哪些区别?

设计模式

设计模式

缓存

Redis

  • 单线程模型?
  • Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?

Redis 集群模式的工作原理能说一下么?在集群模式下,Redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?如何动态增加和删除一个节点?

Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?

生产环境中的 Redis 是怎么部署的?

数据类型的应用场景?

数据类型的底层数据结构sds?

一致性hash?

布隆过滤器?

数据同步问题(双删策略)?

击穿、穿透、雪崩、数据一致性?

高并发下的redis分布式锁?

热点数据缓存问题?

哨兵机制,集群架构?

生产环境性能优化?

Redis 的过期策略都有哪些?手写一下 LRU 代码实现?

如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?

Redis 主从架构是怎样的?

多线程

多线程

分布式事务

分布式事务

分布式会话

数据库

数据库

读写分离

分库分表

  • 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?

现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?

如何设计可以动态扩容缩容的分库分表方案?

分库分表之后,id 主键如何处理?

JVM

JVM

消息中间件

消息中间件

为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?

如何保证消息队列的高可用?消息丢失?

如何保证消息不被重复消费?(如何保证消息消费的幂等性)

如何保证消息的可靠性传输?(如何处理消息丢失的问题)

如何保证消息的顺序性?

如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。

搜索引擎

搜索引擎

ES 的分布式架构原理能说一下么(ES 是如何实现分布式的啊)?

ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?

ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?

ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?

海量数据处理

海量数据处理

如何从大量的 URL 中找出相同的URL?

如何从大量数据中找出高频词?

如何找出某一天访问百度网站最多的IP?

如何在大量的数据中找出不重复的整数?

如何在大量的数据中判断一个数是否存在?

如何查询最热门的查询串?

如何统计不同电话号码的个数?

如何从 5 亿个数中找出中位数?

如何按照 query 的频度排序?

如何找出排名前 500 的数?

解决问题的能力

解决问题的能力

网络

网络

Netty

Netty

功能模块

功能模块

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
9天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
14天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
11天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
35 4
|
12天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
51 4
|
24天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
51 5
|
23天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
18 1
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
22天前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
14 0
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。

热门文章

最新文章