×

我面试了 N 家分布式存储公司,反复被问这 3 个问题

hqy hqy 发表于2025-07-24 17:01:30 浏览3 评论0

抢沙发发表评论

一、面试信息


1
岗位:分布式存储研发工程师
2
时间:2025年5月到7月
3
面试:线上


二、面试套路


1
大厂面试风格循序渐进 从算法,基础,最后三面项目,规定很明确一个场景,看你如何解决的.
2
其他公司,跳过基础和算 直接问最终结果,能接住我业务,能不能实现功能,架构什么。抛出一个很大很大开放问题.


面试类型
代表特征
应对建议
大厂风格
基础 + 系统 + 项目 三段式
打牢基本功,强化问题建模能力
务实风格
快速定位场景,关注解决方案
梳理项目亮点,讲清问题和结果
元问题/设计导向
开放问题,不设边界,考验系统性思维
平时多看架构设计/源码/白皮书,积累思想深度


图片


第一类套路:大厂风格,环环递进

第一面:算法与系统基础


典型题目:LRU、线程安全队列

网络、存储系统基础:IO路径、缓存一致性、分布式锁机制

考察点:你是否真的“掌握了操作系统/网络/数据结构”


第二面:实际场景问题建模


比如:“在4节点全闪存环境中,如何把小文件读写性能提高十倍?”

面试官期待你从数据路径、并发模型、零拷贝等角度拆解分析


第三面:项目架构 or 开放题设计


比如:“假设没有 Ceph,你如何设计一个分布式文件系统?”

关键不是实现,而是架构思维、关键路径识别与取舍能力


? 这种风格的关键:


回答不能只说“我做过”,要讲“为什么这么设计、怎么优化的”

面试官其实在找你对系统原理有没有长期积累,不是只看 API 熟练度
图片


第二类套路:中小厂务实风,直奔落地方案

某几家中型云计算/AI 公司,它们的面试方式更为直接,跳过基础,直奔“结果导向”:


你们现在用的架构是什么样的?”

你能不能独自一个人完成一个功能

面试重点不在原理细节,而在于:

你有没有真的做过?

你能不能快速落地我现在要的东西?

你能不能带团队,解决具体问题?


? 这种面试需要的不是知识点,而是:

项目经验 组织得当,能讲出“场景—问题—决策—结果—反思”结构

遇到开放问题,敢接球,有条理地拆解问题


第三类套路:行业前沿公司 开放问题

我遇到一家技术研究导向的团队,走的不是常规路径,而是问“反常识”的问题:

“忘掉 Ceph,如果从头来构建一个面向未来十年的分布式存储系统,你怎么做?”

这类问题没有标准答案,重在考察:


你对现有系统(如Ceph、GPFS、JuiceFS)的优缺点理解有多深

是否能站在更抽象的层次看问题(比如“数据与元数据分离”的本质是什么)

是否了解底层的技术趋势,如: 用户态网络(DPDK/SPDK)

协程 vs 多线程并发模型

一致性协议(Raft/Paxos)未来的可能优化方向

图片


三、面试回顾

第一题:了解主流的分布式文件存储系统设计吗?

1.1 我的思考


1
听到这个题目 我马上反应看过 大规模分布式存储系统:原理解析与架构实战 谷歌的 GFS 文件系统适合大文件存储,大表格存储等
2
但是无法转换自己语言,更不知道用意如何,确实没做过。平时看过其他产品规格,但是毫无印象。


1.2 我的回答


1
不清楚,不知道
2
反问一下,有哪些存储系统,改如何学习呢?


1.3 面试官补充(行业标杆)


1
IBM的GPFS BM GPFS并行文件系统软件在设计上不存在任何性能瓶颈,能完全取决于硬件配置的好坏,而文件系统软件本身对性能的影响微乎其微。
2
GPFS+DDN是业界最佳拍档
3
JuiceFS 是一款面向云原生的高性能分布式文件系统,采用“数据”与“元数据”分离存储的架构
4
如何学,不仅看博客,看源码,还有测试数据,在


第二题:你目前如何性能优化的

2.1 我的回答:


回答我的环境,4节点全闪环境,IB 网卡
元数据如何优化的,存储池如何优化的。


2.2 面试反问


最大带宽怎么60G/s,想其他3FS,200G/s?


2.3 我的回答:


确实我们性能qps 从上千优化过万,不是 10w,百万,确实,带宽 10G 我确信,无法发挥 硬件特性
解释 IO 栈 限制,数据一致性限制 。


第三题:开放题目,忘记 ceph,假如你怎么重新设计,怎么设计?

3.1 我的思考


有点慌,基于自己了解回答如下


3.2 元数据


分布式kv,文件系统可元数据导入ob等 kv系统 这个我清楚
kv 常用技术 就是 rockdb +分布式协议
基于状态基的锁。


3.3 数据,存储池


基于成熟NVMe和第三方提供 sdk 接口基础上,零拷贝技术,如何选择哪一层零拷贝,用户态,问题转成从本地读取文件,然后网络传输 io 栈优化上。

基于上面 sdk 接口,传统多线程+队列方式不合适,用户态,协程


或者 Seastar 是 Crimson 项目的理想选择,因为它不仅在 C++ 中实现了 one-thread-per-core 的 shared-nothing 架构,而且还提供了一套全面的功能和模

后记


在危机时代坚持修炼内功,锻炼身体,
等待恒纪元的到来,一旦新机会出现,
我们就已经做好了准备,抓住新的机会,实现自己的目标。

远离负面消息,尤其是脉脉




打赏

本文链接:https://www.kinber.cn/post/5372.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客