坚持思考,就会很酷, 大家好,这是大厂面试拆解–项目实战系列的第2篇文章。

本文通过分布式文件系统ceph 服务 为例子 描述 性能优化的一般过程?

思考 60秒,先别急着划走

  • 不了解文件系统没关系,想象成任何你开发一个服务。
  • 即使暂时不打算找工作,继续往下阅读,也会有意想不到的收获。

时间到,无论 脑中一片空白 还是 胸有成竹 都没关系。

重要的是 面试官 怎么想

  1. 工作12年经验,至少P7标准来判断,月薪至少4万 ,无论是单线程改为多线程,单节点升级集群,都是粗暴加机器,和刚毕业生回答没区别,不行,我还需要在考察考察。
  2. 假如这就是候选人最"熟悉方案呀",面对 质疑,候选人开始 抛弃原来方案,无论怎么回答,这正进入面试设计的,这是面试官强项,双11,秒杀 大流量考验,无论怎么回答,候选人都批的体无完肤,一开口就露馅。

这个时候就需要博弈一次,面试官也知道,候选人知道,就在这样事情 在进一步思考 因此,

假如采用最好设备配置

根据«每个程序员都应该知道的延迟数字»

  • (NVMe)SSD 顺序读取 1 MB, 0.049 ms,转换成秒 就是 带宽 20.41 GB/s裸盘性能 至少 7 GB/s,我的服务能达到这样速度吗?不能 为什么。
  • 2k数据在千兆网卡 0.02ms,转换成秒 ,一个RPC请求1k大小,QPS大约为10万请求/秒,我的Ceph服务能达到这样速度吗?不能 为什么。
  • 如果是万兆网卡,传输速率是1Gbps, 如果 InfiniBand网卡(高性能) 200Gbps,
  • 放心 NVIDIA 的 InfiniBand(IB)交换机,40个端,每个端口 200Gb/s 大聚合带宽40Tb/s,Ceph 服务能达到这样速度吗?不能 为什么。

本文思路已经产生了,就是深入理解 瓶颈在哪里

其中 第一 第二部分是 帮助理解 面试官总是说NO。

思路

这个不是投机取巧,正如

魔兽争霸3-冰封王座 不死族(UD)选手 现役最强的Happy,绝对S+级别存在(moo不是了),但是被整活哥"Lawliet" 打败过 ,why ,战术博弈成功,哪怕失败了,游戏可以game over后重新再来,

image.png

本文最想表达意思,

  • 把面试官当初陪练,你才是主角,才会越战越勇
  • 先三开枪,再瞄准(最好找小公司试试)。

一、目前我什么状态。

一天中午,小义 和老王 在餐厅相遇

小义:开始老王吐槽最近面试烦恼

小义眼中的试官

面试官假设一个情景

  • 例如 假如你重新开发 一个系统,你如何设计?
  • 假如海量并发,你如何优化? 我犹豫一下,然后真实项目方案说一下。
  • 如何利用缓存,如何利用并发,如何利用集群,如何拆分数据。

面试官重复描述一下问题是什么? 我还是依旧回答,紧张。 面试官说 我还没听明白 ,不到5分钟本次面试结束。

在老王眼中 看到小义:不知道每天在忙碌什么

小义同学 进入 百人团队,公司有无数的集团大客户,每年不停做千万项目

每天努力干活,却发现在公司有这么多奇怪的现象

  • 项目成立,别人完成的
  • 系统设计完成了,别人设计的。
  • bug解决了,完成的 认真思考时候
  • 根本不知道需求是什么 。
  • 根本不知道场景是什么。
  • 根本不知道发生什么变化。 期待有一天能有时间把源码、框架、问题都搞明白,却始终抽不出时间,

二、未来我要成为什么状态

2.1 了解企业对岗位招聘标准

image.png

面试考察什么 通过面试判断基本功

2.2 熟悉职场晋升打怪升级规则(为什么B类人才这么卷)

S、A、B、C级人才感性上定义

  • S级人才 心里有火,眼里有光,找方向、带队伍、卷出一片天。

不用告诉他干什么,他会主动告诉你该干什么。

  • A级人才**,能打胜仗,作风优良。

  1. 抓结果:很清楚老板交代任务你后的原因和交付物,及时同步,老板不用追截止日期和进度;
  2. 发现问题,会和leader确认优先级和方案以后解决问题,之后会复盘如何改进。
  • B类人是各公司内卷和衰落之源(在及格边缘徘徊)

公司加速招聘,都会堆积很多B类人,产出不稳定,及格边缘徘徊。

  1. 不清楚自己当前任务是什么,不问不会同步进展;
  2. 发现问题等着别人给流程/推动,leader给了解决方案以后,就照做;
  3. 不太喜欢学新东西,偶尔学;
  • C类打工人:推三下,动两下,牢骚一句(危险)

  • 经常自己独立搞不定,需要别人盯很紧和协助;

  • 发现问题就抱怨leader能力不够,抱怨公司不重视,吐槽流程吐槽管理,自己就是不去推动;

  • 发到眼前的学习材料也都懒得点开看,封闭/躺平心态;

2.3 为什么有人晋升,有人裁员

结果 采取有效行动
有效产出 1. 做公司需要的事:专注于公司主路径/目标的事情,避免做对公司不重要的事。(不重要事情坚决不做这个不是小事2. 让产出可量化,尽量可归因:项目开发多少功能,需要多少时间,提交多少代码,解决多个bug3. 从重要的小事做起:主动争取核心任务,积累信任积分,提升贡献和认可度。不然扣上好高骛远帽子
眼里有活,主动争取机会 1. 主动发现机会:从小事做起,做到极致,为下一步铺路。例如,将贴发票做到分类整理,提出财务建议,最终成为高管。2. 主动研究方向:如主动研究A方向,完成文档上线,带来项目收入。
主动往前走一步 1. 主动接近领导:吃饭时候,开会时候,看到领导要主动打招呼,躲在一边肯定不行 2. 抓住细节机会:文档,邮件,代码 ,具体数字 清楚明白。
厚脸皮 1. 不怕犯错勇敢面对错误,积极成长。2. 不懂就问:敢于提问,不怕嘲笑。3. 积极求助:遇到困难主动寻求帮助。4. 约见大佬:多次尝试约见行业前辈,用心准备自我介绍,获得学习机会。
让你的产出被看到 1. 及时同步产出:主动汇报工作内容、结果、困难和计划,让领导了解进展。2. 避免形式主义:不搞花哨汇报,注重实际成果。一页纸汇报3. 注意存在感:让产出被看到,而非单纯刷工时,领导关注功劳而非苦劳。纯加班,无产出,也不行

为什么每天努力还是无晋升,甚至被裁员 自测一下

  1. leader有没老追你进度?提醒你要做xxx?

  2. 你了解公司、团队和你个人近期最重要的目标是什么吗?

  3. 你有没主动去和leader对齐过目标?

  4. 过去3-6个月,做出了啥成绩没?

  5. 你最近心里/私下的吐槽,有没主动尝试去解决推动?

2.4 匹配:年龄,等级,薪酬之间关系。

阿里巴巴研发职级体系(C++方向)仅供参考​

职级 能力要求 工作年限 典型薪资范围(年薪,含股票)
新手村 P5​ 1. 掌握C++11/17标准及基础数据结构/算法 2. 在指导下完成模块开发(如日志系统) 3. 熟悉Linux开发环境及GDB调试 0-2年 25-35万(平均月薪21.8K)
大头兵 P6​​​ 1. 独立开发高并发中间件(如RPC框架) 2. 掌握多线程/内存优化技术 3. 主导中型项目(日请求量百万级) 3-5年 40-60万(平均月薪29.1K)
主力军 P7​​ 1. 设计分布式存储系统(如KV数据库) 2. 解决C++内存泄漏/性能瓶颈 3. 管理5-10人团队,制定代码规范 5-8年 60-150万(平均月薪39.5K)
​老油条P8​ 1. 主导亿级QPS系统架构(如交易核心链路) 2. 开发高性能网络库(如DPDK应用) 3. 管理50人团队 8-12年

image.png

image.png

三、为了解决这个问题,我需要准备什么

不同数量级不同解决方案

  • 性能工具全景图 来源:https://www.brendangregg.com/linuxperf.html

压测工具

链接我

坚持思考,方向比努力更重要。

关注公共号:后端开发成长指南 回复电子书

如果更进一步交流 添加 微信:wang_cyi

image.png

我是小王同学,

希望帮你深入理解分布式存储系统3FS更进一步 , 为了更容易理解设计背后原理,这里从一个真实面试场故事开始的。

阅读对象(也是我正在做事情)

1. 目标:冲击大厂,拿百万年薪

  • 想进入一线大厂,但在C++学习和应用上存在瓶颈,渴望跨越最后一道坎。

2. 现状:缺乏实战,渴望提升动手能力

  • 公司的项目不会重构,没有重新设计的机会,导致难以深入理解需求。

  • 想通过阅读优秀的源码,提高代码能力,从"不会写"到"敢写",提升C++编程自信。

  • 需要掌握高效学习和实践的方法,弥补缺乏实战经验的短板。

3. 价值:成为优秀完成任务,成为团队、公司都认可的核心骨干。

优秀地完成任务= 高效能 + 高质量 + 可持续 + 可度量

错误示范

  • 不少同学工作很忙,天天加班,做了很多公司的事情。 但是 不是本团队事情,不是本部门事情,领导不认可,绩效不高
  • 做低优先级的任务,无法利他,绩效不高
  • 招进来最后变成了随时被裁掉的一些征兆
  1. 刻意提高工作难度
  2. 工作中不公平对待
  3. 制造恶性竞争
  4. 捧杀

参考