如何判断一个进程是否存活
文章目录
大家好,这是大厂面试拆解–项目篇 系列的第2篇文章
如果你面试 或者工作中遇到相关问题,欢迎留言!
一、 如何学(可以跳过不看)
1. 问题是什么
不装逼是本文特点, 因为每次问到
- 系统系统设计题目,
 - 性能优化题目, 面试官假设一个情景
 - 例如 假如你重新开发 一个系统,
 - 假如海量并发,你怎么处理问题的
 - 你如何优化的 我犹豫一下,解释半天,他们反馈说我还是
 - 没说明白
 - 还是停留用法层面。
 
面试官重复描述一下问题, 我还是依旧回答,紧张。 管中窥豹,他们自己判断,不到5分钟本次面试结束。
原因分析:
在公司这么奇怪。每天努力干活,
- 根本不知道需求是什么 ,
 - 根本不知道场景是什么,
 - 根本不知道发生什么变化
 
一切都在哪里,根本不知道。
- 公司成立了,别人完成的
 - 项目成立,别人完成的
 - 设计 完成了,别人设计的。
 - bug解决了,别人玩人了
 
虽然一个工位之隔,但是确实最远的距离。
因为每天不得已情况,完成更多任务,更多事情,
根本不了解客户需求,根本需求拆分的,需求设的。
有这难吗? 难。
别人怎么做的—根本不关心这么多,专注一个 部门任务完成 就是公司不可剥夺人才了
因为专心一个部门容不下时候,你该怎么办?
- L2交换机:仅看MAC,不看IP/TCP,不会拦截SYN包;
 
2. 后面怎么办?
很奇怪 每天努力上班
方向1 :聚焦行业(分布式数据库,存储 和相关应用),从小实际需求开始,小功能和pr开始。
不考虑百万并发,不考虑高深技术,为了让自己听着舒服 ,
我选择了“小而美”, 让我的服务运行在2核2G一年1年厂商主机,刚刚好就难得美好 我必须舍去过去电信,电商,存储经验开发经验 重新用户需求,重新设计项目
画外音:
- 我也想参与xx行业解决方案,xxx提供商 ,但是更大问题是架构设计,行业100年,根本轮不到你,根没有勇气来参与吗?顶不过去。自己都明白呢
 - 我也想修复百万 千万用户修复他们问题,但是 客户事情影响更重要,被人更担心解决问题给客户更大问题,顶不过去
 - 我也想好好学习代码 优化,项目运行100g内存,128内集群,过10年,20年如此 ,一个项目百万 千万,上亿,你允许慢慢学。必须强大实力完成一切。
 
方向2 :查缺补漏,主动追踪一个问题
1 准确描述问题是什么?
- 不要说他组事情,别人不告诉你
 - 不要说自己任务完成, 没时间
 - 更不要说,壁垒太高。
 
画外音:
- 能说出问题是什么,什么导致的 就是成功80%,上面都是阻扰说清楚问题原因。
 - 一个部门,一个公司 可能几个人知道,其他人不知道的。
 
2. 解决问题步骤是什么,用什么命令

画外音:
- 一个问题需要1个月完成,从现场客户,到问题定位,到修复 到解决上线该清楚吗?–不清楚
 - 看什么参数发现问题的,使用命令定位问题的清楚吗?具体怎么定位的,外行人不知道。–需要练习
 
3. 这些命令背后原理是什么
| 子系统 | 核心概念/技术 | 详细说明 | 
|---|---|---|
| CPU管理 | 进程、线程 | 操作系统资源分配的基本单位(进程)与执行单位(线程)。 | 
| 多进程/多线程 | 并行处理任务的机制,多线程共享同一进程资源。 | |
| 进程间通信(IPC) | 管道、消息队列、共享内存等跨进程数据交换方式。 | |
| 并发与锁 | 互斥锁、信号量等同步机制,解决资源竞争问题。 | |
| 内存管理 | 物理内存管理 | 直接管理硬件内存(如伙伴系统防碎片、SLAB分配器优化内核对象分配)。 | 
| 虚拟内存管理 | 通过MMU实现虚拟地址映射,分页机制(4KB页)、TLB加速转换。 | |
| 内存分配框架 | 用户态(如glibc的malloc)、内核态(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


Linux网络子系统的分层
1.Linux网络子系统的分层
2.TCP/IP分层模型
3.Linux 网络协议栈
4.Linux 网卡收包时的中断处理问题
5.Linux 网络启动的准备工作
6.Linux网络包:中断到网络层接收



- 网络排障
 
云网络丢包故障定位全景指南
https://mp.weixin.qq.com/s/v4dQttuAtcnjSGglA0B5nA
三、 从一个小例子开始
- L2交换机:仅看MAC,不看IP/TCP,不会拦截SYN包;
 - L3路由器:只看IP头,不关心TCP标志;
 - 防火墙/ACL:需要显式配置,才能对TCP SYN及端口状态进行过滤或拦截。
 
参考
- 九张图一览 Linux 性能工具全景图 –ok
 - inux Performance Tools, Brendan Gregg, part 1 of 2 https://www.youtube.com/watch?v=FJW8nGV4jxY
 - Linux网络子系统 –ok https://mp.weixin.qq.com/s/kM7hjfRLRRJhy05N-rpwkA
 - How does traceroute work?
 
链接我
如果对上面提到c++学习路径 推荐书籍感兴趣
关注公共号:后端开发成长指南 回复电子书
如果更进一步交流 添加 微信:wang_cyi

为什么写这篇文章
1. 目标:冲击大厂,拿百万年薪
- 想进入一线大厂,但在C++学习和应用上存在瓶颈,渴望跨越最后一道坎。
 
2. 现状:缺乏实战,渴望提升动手能力
- 
公司的项目不会重构,没有重新设计的机会,导致难以深入理解需求。
 - 
想通过阅读优秀的源码,提高代码能力,从"不会写"到"敢写",提升C++编程自信。
 - 
需要掌握高效学习和实践的方法,弥补缺乏实战经验的短板。
 
3. 价值:成为优秀完成任务,成为团队、公司都认可的核心骨干。
优秀地完成任务= 高效能 + 高质量 + 可持续 + 可度量
错误示范:
- 不少同学工作很忙,天天加班,做了很多公司的事情。 但是 不是本团队事情,不是本部门事情,领导不认可,绩效不高
 - 做低优先级的任务,无法利他,绩效不高
 - 被招进来后可能随时被裁掉的一些征兆:
- 刻意提高工作难度
 - 工作中遭受不公平对待
 - 遭遇恶性竞争
 - 被捧杀
 
 
面试反馈
小义:为什么每次项目面试不到5分钟就结束了?
老王:当时你你怎么面试的?
小义回忆到:
面试官:
假如你重新设计一个系统 ,要求是你怎么设计?
我回答:线程怎么设计,并发怎么设, 刚说完。
面试官:有重复说一个题目 要求:
面试官:还是停留语法怎么,好了,到此结束了,
面试官:海量请求,如何解决性能 优化?
我回答:三个方面,底层靠网络 磁盘怎么 然后说了。。。
面试官:其他不熟,聚焦一个问题说清楚。 我回答: 。。。。
面试官:我没听明白,好了,到此结束了,