大家好,这是大厂面试拆解–项目篇 系列的第2篇文章

如果你面试 或者工作中遇到相关问题,欢迎留言

一、 如何学(可以跳过不看)

1. 问题是什么

不装逼是本文特点, 因为每次问到

  • 系统系统设计题目,
  • 性能优化题目, 面试官假设一个情景
  • 例如 假如你重新开发 一个系统,
  • 假如海量并发,你怎么处理问题的
  • 你如何优化的 我犹豫一下,解释半天,他们反馈说我还是
  • 没说明白
  • 还是停留用法层面。

面试官重复描述一下问题, 我还是依旧回答,紧张。 管中窥豹,他们自己判断,不到5分钟本次面试结束。

原因分析:

在公司这么奇怪。每天努力干活,

  • 根本不知道需求是什么 ,
  • 根本不知道场景是什么,
  • 根本不知道发生什么变化

一切都在哪里,根本不知道。

  • 公司成立了,别人完成的
  • 项目成立,别人完成的
  • 设计 完成了,别人设计的。
  • bug解决了,别人玩人了

虽然一个工位之隔,但是确实最远的距离。

因为每天不得已情况,完成更多任务,更多事情,

根本不了解客户需求,根本需求拆分的,需求设的。

有这难吗? 难。

别人怎么做的—根本不关心这么多,专注一个 部门任务完成 就是公司不可剥夺人才了

因为专心一个部门容不下时候,你该怎么办?

  • L2交换机:仅看MAC,不看IP/TCP,不会拦截SYN包;

2. 后面怎么办?

很奇怪 每天努力上班

方向1 :聚焦行业(分布式数据库,存储 和相关应用),从小实际需求开始,小功能和pr开始。

不考虑百万并发,不考虑高深技术,为了让自己听着舒服 ,

我选择了“小而美”, 让我的服务运行在2核2G一年1年厂商主机,刚刚好就难得美好 我必须舍去过去电信,电商,存储经验开发经验 重新用户需求,重新设计项目

画外音:

  1. 我也想参与xx行业解决方案,xxx提供商 ,但是更大问题是架构设计,行业100年,根本轮不到你,根没有勇气来参与吗?顶不过去。自己都明白呢
  2. 我也想修复百万 千万用户修复他们问题,但是 客户事情影响更重要,被人更担心解决问题给客户更大问题,顶不过去
  3. 我也想好好学习代码 优化,项目运行100g内存,128内集群,过10年,20年如此 ,一个项目百万 千万,上亿,你允许慢慢学。必须强大实力完成一切。

方向2 :查缺补漏,主动追踪一个问题

1 准确描述问题是什么?

  • 不要说他组事情,别人不告诉你
  • 不要说自己任务完成, 没时间
  • 更不要说,壁垒太高。

画外音:

  1. 能说出问题是什么,什么导致的 就是成功80%,上面都是阻扰说清楚问题原因。
  2. 一个部门,一个公司 可能几个人知道,其他人不知道的。

2. 解决问题步骤是什么,用什么命令

什么命令

画外音:

  1. 一个问题需要1个月完成,从现场客户,到问题定位,到修复 到解决上线该清楚吗?–不清楚
  2. 看什么参数发现问题的,使用命令定位问题的清楚吗?具体怎么定位的,外行人不知道。–需要练习

3. 这些命令背后原理是什么

​子系统​ ​核心概念/技术​ ​详细说明​
​CPU管理​ 进程、线程 操作系统资源分配的基本单位(进程)与执行单位(线程)。
多进程/多线程 并行处理任务的机制,多线程共享同一进程资源。
进程间通信(IPC) 管道、消息队列、共享内存等跨进程数据交换方式。
并发与锁 互斥锁、信号量等同步机制,解决资源竞争问题。
​内存管理​ 物理内存管理 直接管理硬件内存(如伙伴系统防碎片、SLAB分配器优化内核对象分配)。
虚拟内存管理 通过MMU实现虚拟地址映射,分页机制(4KB页)、TLB加速转换。
内存分配框架 用户态(如glibcmalloc)、内核态(kmalloc/vmalloc)。
​磁盘管理(I/O)​ 文件系统 Ext4/NTFS等,管理磁盘数据的存储结构。
Buffer/Cache 内核缓存机制,加速磁盘读写(如预读、回写)。
块存储 以固定大小(如4KB块)访问磁盘,提高吞吐量。
零拷贝 sendfile等技术减少CPU拷贝次数,提升传输效率。
DMA 磁盘直接访问内存,无需CPU介入数据传输。
​网络管理​ 协议栈(TCP/IP) 分层网络通信模型(应用层→传输层→网络层→链路层)。
Socket API bind()listen()等接口,实现网络编程。
网卡与驱动 硬件收发数据包,驱动处理中断和DMA操作。
中断系统

方法3:拥抱开源,从阅读源码,参与开业开始

  • 自己不会做 ,看别人怎么做的,阅读开源
  • 使用开源软件,发现优缺点
  • 贡献开源,成为讲师。布道师

二、 Linux网络子系统 学什么?

Brendan Gregg是指国际著名的Linux性能专家,也是Netflix的高级性能架构师。 他精通系统性能优化,并开发了多个性能分析工具,如火焰图(Flame Graph),用于定位性能问题。Gregg的贡献不仅限于工具开发,他还撰写了许多关于性能分析和优化的书籍,包括《性能之巅:洞悉系统、企业与云计算》和《洞悉Linux系统和应用性能》。

来源:https://www.brendangregg.com/linuxperf.html

https://www.brendangregg.com/BPF/bpf_performance_tools_book.png

Linux网络子系统的分层

1.Linux网络子系统的分层

2.TCP/IP分层模型

3.Linux 网络协议栈

4.Linux 网卡收包时的中断处理问题

5.Linux 网络启动的准备工作

6.Linux网络包:中断到网络层接收

image.png

image.png image.png

image.png image.png image.png

  • 网络排障

云网络丢包故障定位全景指南

https://mp.weixin.qq.com/s/v4dQttuAtcnjSGglA0B5nA

三、 从一个小例子开始

  • L2交换机:仅看MAC,不看IP/TCP,不会拦截SYN包;
  • L3路由器:只看IP头,不关心TCP标志;
  • 防火墙/ACL:需要显式配置,才能对TCP SYN及端口状态进行过滤或拦截。

参考

链接我

如果对上面提到c++学习路径 推荐书籍感兴趣

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

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

链接我

为什么写这篇文章

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

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

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

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

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

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

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

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

错误示范

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

面试反馈

小义:为什么每次项目面试不到5分钟就结束了?

老王:当时你你怎么面试的?

小义回忆到:

面试官:

假如你重新设计一个系统 ,要求是你怎么设计?

我回答:线程怎么设计,并发怎么设, 刚说完。

面试官:有重复说一个题目 要求:

面试官:还是停留语法怎么,好了,到此结束了,

面试官:海量请求,如何解决性能 优化?

我回答:三个方面,底层靠网络 磁盘怎么 然后说了。。。

面试官:其他不熟,聚焦一个问题说清楚。 我回答: 。。。。

面试官:我没听明白,好了,到此结束了,