• Home
  • Archives
  • 随笔
所有文章 友链 关于我

  • Home
  • Archives
  • 随笔

面经学习到认知自己真是菜鸟

发布于: 2021-07-12
更新于: 2023-07-09

面经学习

剖析自身

技术广度

到目前为止接触学习过哪些技术领域:MQ、Cache、NoSQL、大数据、高并发、高可用、微服务、分布式存储、分布式业务·····

如何落地技术、技术的业务场景

技术深度

  • 技术的底层源码
  • 架构设计思想
  • 设计过业务领域的架构设计?
  • 生产运维故障故障处理等

项目经验

  • 做过具有挑战性的项目
  • 高并发、高吞吐、海量数据?

项目管理

  • 带过小组开发
  • 设计开发
  • 问题排查、把控代码质量等。

面试方法

  • 小公司刷经验
  • 查缺补漏知识
  • 开始投大公司
  • 查缺补漏
  • 最后收尾挑选心仪的公司

面试准备

简历深度剖析

  • 对于简历上的项目业务、技术场景要聊熟于心,能扛得住连环炮的询问
  • 同时对于项目的拓展也要能接得住

公司的了解

  • 尽可能了解公司业务背景、用户量等
  • 关注公司的技术分享,了解对方的技术架构等
  • 尽量往自己做过的项目上去做

算法练习

  • 常见题目反复练习至能在白纸写出无 bug 的内容
  • 栈、队列、链表、B+树、红黑树、二叉树等等

阿里

如何处理业务翻倍增长

首先是数据的落地存储,假如业务翻倍增长,首当其冲地是存储问题。

提问 答案
原先的单表是否足以存储庞大的数据量? 不够,那考虑分库分表?
分库分表要怎么分? 500w 的基数,进行切分,如果实际业务情况仍超过预设的值,应该重新制定表的结构进行存储,考虑业务层把一定业务周期外的数据作为冷数据进行归档,只保留热数据,减小数据量的存储
分布式数据库选型有哪些? 1. 客户端组件+单体数据库: Sharding-JDBC 应用层建立数据分片和路由规则,实现数据库的管理,对业务侵入较深。 2. 代理中间件+单体数据库: MyCat 以独立中间件形式存在管理数据规则,有些也会衍生出分布式事务的能力。 3. 单元化架构+单体数据库:垂直切分业务,每个支行自己管理自己的数据,当需要跨支行操作时,由业务层进行统筹管理
性能、吞吐量是否满足增长的业务需求? 考虑数据异构、冷热分离的设计
数据异构、冷热分离的典型 MySQL 分库分表+分布式 NoSQL 数据库+ElasticSearch 分布式搜索+Redis 缓存架构:先将热点数据存储到分布式 NoSQL、承载高并发读写,接着将冷数据归档到 MySQL、应对海量数据的搜索使用 ElasticSearch,对于秒杀场景可考虑 Redis

说说使用技术的原理

对于项目里面用到的任何组件,都应了解其技术原理,性能 TPS,数据结构是怎么样的,怎么扩容,怎么存储,怎么规划。

说说系统开发中的难点

这里就应该说一些难点出来,比如说数据的迁移,迁移后数据比对校验,增量数据的追平,迁移切换中如何保证业务正常,迁移完成后的业务验证以及业务跟踪监控。

面试流程

连环炮发问

MQ

  • 使用的消息中间件是什么
  • 为什么要用消息中间件,遇到什么挑战了吗?
  • 为什么选型是 RabbitMq
  • 为什么不用 RocketMq 和 Kafka,依据是什么
  • 如何保证消息中间件的高可用性,如果发生故障怎么处理?
  • 如何保证消息投递一定不丢失
  • 如何消息不会重复投递
  • 是否有需要用到顺序消息的业务场景
  • 如果不需要,为什么不需要?如果我现在有个场景需要,要怎么保证消费的顺序性
  • 下游如果宕机,消息中间件堆积了海量数据,要怎么处理
  • 如何处理积压的场景
  • rabbitmq 的架构、原理、持久化逻辑
  • rabbitmq 线上的 QPS 峰值,如何部署,机器配置情况
  • kafka 怎么看的?架构、存储、分布式存储
  • kafka 怎么实现高容错性?零拷贝技术?高吞吐量如何实现?
  • kafka 源码阅读过吗?
  • RocketMq 了解过吗?
  • 如何设计一个分布式消息中间件?

NoSQL

  • 有没有用到过 NoSQL
  • 常用 NoSQL 的选型有什么
  • NoSQL 可以解决什么问题?

Java 底层

  • JVM 核心原理、内存、GC、FullGC 卡顿的排查、OOM 内存溢出排查
  • volatie 原理、锁优化、AQS 源码·····
  • IO、Netty 网络等等

项目经验询问

  • 项目架构图
  • 项目使用了什么技术,以及核心的业务流程思路是什么
  • 继而是对技术的连环炮考验专业能力

Redis 业务

  • 什么业务场景使用了 Redis
  • 选用什么数据结构存储数据,过期时间如何评估?如果过期了,兜底方案是什么?如何回查?
  • key 如何设计?
  • 为什么要用 Redis 存储业务数据,选用其他数据库可以吗?

架构设计思维

  • 如何设计电商秒杀系统
  • 潮汐式业务情况如何应对
  • 假如现在业务翻倍增长,系统上的技术架构要怎么调整?

高并发架构演进

架构一定是要适配业务场景下进行适度开发,比如像开发一个简单的业务,引入了一大堆设计模式,就会显得极为臃肿,或者说,只有 10TPS 的访问量,却加了 MQ、Redis、本地缓存、分布式数据库,不是说这样子设计不行,但是过度设计带来的是测试工作量变大,且拖长了工期,成本上划不来。

架构演进流程

在这种架构下也无法支持业务的需求时,比如说 OLAP 的业务,需要实时知道各种报表指标的数据,这种就需要引入大数据模块进行支持

OLAP

Question Answer
实时计算无法支撑时怎么办 引入离线计算模块,引入 Hadoop Hive/Spark 进行离线加工计算
本地存储数据量庞大怎么办 只保留短暂时间段内的数据,一周或者一天,其他数据转为冷备或者清除
实时计算选用什么架构 可以采用 flink、Druid 技术,通过流式计算,通过 State 状态记录计算每一次操作的结果,实时将流处理结果返回给客户、业务查看
离线计算能力不能支持时 可以考虑将全量计算转为增量计算,增量计算时看是否需要与全量数据进行混合计算,还是可以单独计算
分布式数据库支撑不住压力 主库只提供写,读全部从从库进行查询,避免 IO 过高
大量数据流入数据库 MQ 异步入库,抗住流量,避免数据库承受大量的压力
MQ 集群宕机怎么办 转为同步调用+限流机制
业务量还是太大,数据库无法支撑 拆分为多个业务的数据库分开存储
Nginx 压力过大 通过 F5 等硬件进行负载均衡
Mysql 压力依然过大 转为 NoSQL 数据库、搜索引擎进行解决,比如 HDFS 分布式文件系统解决文件存储;可以通过 HBase 和 Redis 等解决 Key-Value 的数据存储;通过 ES 集群实现搜索功能;多维分析上可以用 Kylin or Druid 查询。
服务拓展管理麻烦 引入容器化技术实现环境管理和服务管理,比如 k8s,Docker,Docker 打包镜像,用 k8s 进行动态分发和部署

参考资料

  1. 亿级流量系统架构之如何设计全链路 99.99%高可用架构【石杉的架构笔记】
  2. 模拟淘宝的 14 次架构演进!
  3. 保障 IDC 安全:分布式 HIDS 集群架构设计
面经学习到认知自己真是菜鸟
/archives/5d6e73a4/
作者
tyrantqiao
发布于
2021-07-12
更新于
2023-07-09
许可协议
CC BY-NC-SA 4.0
赏

蟹蟹大佬的打赏,大家一起进步

支付宝
微信
  • Java
  • 面经
  • MySQL

扫一扫,分享到微信

微信分享二维码
缓存从0到放弃____吗
rabbitmq从学习到放弃吗
© 2024 tyrantqiao 本站总访问量次 本站访客数人次 载入天数...载入时分秒...
  • 所有文章
  • 友链
  • 关于我

tag:

  • 复盘
  • 我
  • 规划
  • java
  • 面试
  • 源码
  • 架构
  • Hadoop
  • HTTP
  • TCP
  • 学习笔记
  • IDEA
  • maven
  • idea
  • Java
  • jdk
  • 面经
  • linux
  • 爱情
  • mysql
  • 性能
  • sql
  • Mysql
  • JAVA
  • 技术
  • Redis
  • MQ
  • Spring
  • 数据库
  • TIDB
  • spring
  • unity
  • chatgpt
  • 经验分享
  • 前端
  • redis
  • vue
  • git
  • shadowsocks
  • hexo
  • blog
  • bug
  • 开发
  • 业务
  • jvm
  • 算法
  • MySQL
  • nginx
  • Linux
  • mq
  • db
  • springCloud
  • ssh
  • python
  • 爬虫
  • test
  • vim
  • 影视剧
  • 中间件
  • 事务
  • 性格
  • 音乐
  • 程序员
  • 随笔
  • mybatis
  • 演讲
  • 域名
  • 猫咪
  • 她
  • github
  • 计划
  • 旅游
  • 软件
  • 心理
  • 情商
  • 幽默
  • 才艺
  • 穿搭
  • 编程
  • 排序
  • 查找
  • 缓存
  • 网络
  • 设计模式
  • c
  • 课程设计
  • centos
  • 数学
  • 本网站主题yilia设计者的主页
如果有问题或者想讨论的可以联系[email protected]或者[email protected]