如何判断一个进程是否存活
文章目录
大家好,这是大厂面试拆解–项目篇 系列的第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分钟就结束了?
老王:当时你你怎么面试的?
小义回忆到:
面试官:
假如你重新设计一个系统 ,要求是你怎么设计?
我回答:线程怎么设计,并发怎么设, 刚说完。
面试官:有重复说一个题目 要求:
面试官:还是停留语法怎么,好了,到此结束了,
面试官:海量请求,如何解决性能 优化?
我回答:三个方面,底层靠网络 磁盘怎么 然后说了。。。
面试官:其他不熟,聚焦一个问题说清楚。 我回答: 。。。。
面试官:我没听明白,好了,到此结束了,