ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

程序员基本功的术语大全的庖丁解牛

程序员基本功的术语大全的庖丁解牛 根因很多程序员把基本功等同于背诵API、熟练使用框架。但框架、工具、编程语言版本会持续迭代几年就会更新换代。程序员基本功是一套稳定不变的底层认知与动手能力不绑定任何框架。它的核心价值当遇到陌生技术、诡异偶现Bug、性能瓶颈、线上故障时可以穿透表层现象定位根因做出合理技术取舍。基本功不是一次性学完而是持续打磨分为四大板块计算机底层理论、编码能力、工程实践能力、排障与学习能力。核心矛盾上层框架屏蔽了底层细节容易让人只懂调用不懂原理基本功就是把被框架封装隐藏的底层逻辑重新捡回来。原子术语逐个拆解一、计算机底层基础二进制 Binary计算机硬件只识别高低电平用0、1存储一切数据。所有文本、图片、程序、网络报文底层全部是二进制流。位运算、内存存储、文件解析都建立在二进制之上。位 Bit / 字节 Bytebit是最小信息单位1 Byte 8 bit。内存容量、文件大小、网络传输流量计量单位。编码 Encoding文字和二进制字节之间的映射规则。UTF-8、GBK都是编码。同一个字符不同编码对应的字节序列不一样乱码根源就是编码不匹配。内存 Memory程序运行时临时存放指令与数据的空间断电丢失。区分物理内存、虚拟内存、栈、堆。理解内存分配、拷贝、回收看懂变量在内存中的形态。寻址 AddressingCPU通过内存地址定位数据。数组下标、指针、虚拟内存、页表都围绕寻址。CPU 中央处理器执行机器指令运算、跳转、读取内存。寄存器是CPU内部高速存储单元。理解指令执行流水线、缓存层级看懂性能瓶颈。ALU算术逻辑单元CPU内部负责算术运算、位运算的模块。加减、与或异或运算都在这里执行。操作系统 OS管理硬件资源的软件。对程序做进程隔离、内存管理、调度、IO管理、文件系统、网络协议栈。程序不能直接操作硬件必须调用操作系统系统调用。进程 Process程序加载进内存运行后的实例拥有独立地址空间操作系统资源隔离单位。线程 Thread进程内的执行流共享进程内存资源轻于进程。操作系统调度的最小单位。并发 Concurrency宏观上多个任务交替推进不一定多核并行。并行Parallelism多核CPU同一时刻同时执行多个任务。上下文切换 Context SwitchCPU从一个线程切到另一个线程保存/恢复寄存器、栈信息。有性能开销过多上下文切换会造成服务卡顿。IO Input/Output程序和外部设备的数据交互。磁盘IO、网络IO。IO速度远慢于CPU运算绝大多数系统瓶颈来自IO。文件系统 File System操作系统管理磁盘数据的方式把磁盘二进制数据抽象成文件、目录。Socket套接字操作系统提供的网络通信端点用来实现TCP/UDP通信。TCP 传输控制协议面向连接、可靠传输。三次握手、四次挥手、滑动窗口、拥塞控制、重传。HTTP、HTTPS底层依赖TCP。UDP 用户数据报协议无连接、不可靠开销小不保证送达、顺序。直播、DNS常用。二、数据结构与算法基本功时间复杂度 Time Complexity衡量算法随数据量增长的运行时间增长趋势大O表示法。不统计绝对耗时衡量量级。空间复杂度 Space Complexity算法运行额外占用内存空间的量级。数组 Array连续内存存储随机访问快中间增删慢。PHP底层HashTable实现的数组是复合结构。链表 Linked List内存不连续节点保存数据下一个节点指针。随机访问慢头尾增删快。栈 Stack后进先出LIFO。函数调用栈、表达式求值。栈空间有限递归太深栈溢出。队列 Queue先进先出FIFO。任务排队、消息处理。哈希表 Hash Table通过哈希函数key映射到存储位置平均O(1)查找。存在哈希碰撞需要冲突解决方案。PHP数组底层就是哈希表。树 Tree分层非线性结构。二叉树、平衡树、B树。数据库索引底层就是B树。排序 Sort基础算法冒泡、插入、快排、归并。理解各自复杂度、稳定性、适用场景。查找 Search顺序查找、二分查找。二分查找前提是有序数组。递归 Recursion函数调用自身分解大问题为同类型子问题。必须具备终止条件注意栈溢出风险。贪心 Greedy每一步选当前局部最优不一定得到全局最优。动态规划 DP拆分问题保存子问题结果避免重复计算解决最优解问题。三、编码基本功语法 Syntax编程语言的语法规则语句、表达式、关键字。语法错误程序无法解析。词法分析、语法分析、AST抽象语法树源码解析的基础流程解释器/编译器读懂代码的过程。变量 Variable命名内存空间。理解作用域、生命周期、值拷贝、引用、写时复制。函数 Function封装一段可复用逻辑输入参数输出返回值。理解参数传递、闭包、副作用、纯函数。控制流 Control Flow代码执行顺序顺序、分支if/switch、循环for/while、跳转。注释 Comment给人阅读的说明机器忽略。注释解释为什么这么写而不是复述代码做了什么。命名规范 Naming Convention变量、函数、类命名。做到见名知意降低团队认知负载。好命名减少大量注释。代码可读性 Readability代码首要读者是人其次是机器。精简逻辑、合理拆分拒绝炫技晦涩写法。模块化 Modularization拆分代码为独立模块高内聚低耦合。单一职责原则。抽象 Abstraction屏蔽底层细节对外暴露简洁接口。理解抽象泄漏不滥用抽象。异常处理 Exception Handling捕获异常、兜底、错误返回。预判异常场景防止程序崩溃。单元测试 Unit Test最小代码单元的自动化测试。验证函数逻辑正确性修改代码快速发现回归bug。防御性编程 Defensive Programming校验入参、处理边界、兜底逻辑提前规避非法输入造成的异常。重构 Refactor不改变外部功能优化内部代码结构清理技术债务。四、工程与工具基本功Git 版本控制源代码版本管理。提交、分支、合并、冲突解决、回滚、标签。团队协作必备基本功。Linux 基础文件操作、权限、进程查看、日志查看、管道、文本处理命令。后端开发必备。Shell命令行脚本自动化批量任务。正则表达式 Regex文本匹配、提取、替换。日志处理、表单校验常用。SQL 基础增删改查、where、join、group by、索引、事务。理解索引原理会写不产生全表扫描的SQL。索引 Index数据库加速查询的数据结构提升读性能降低写入性能。事务 Transaction数据库ACID保证一组操作要么全部成功要么全部回滚。隔离级别、锁、脏读、不可重复读、幻读。HTTP/HTTPS请求响应模型、请求方法、状态码、Header、Cookie、Session、缓存机制。Web开发基本功。调试 Debug断点、打印日志、观测变量定位代码错误。不是靠猜bug靠证据定位。日志 Log分级记录程序运行信息。INFO、WARN、ERROR。日志是线上排障核心手段。基准测试 Benchmark测试代码、接口性能量化QPS、延迟找到性能瓶颈。CI/CD 持续集成持续交付自动构建、自动测试、自动部署。工程自动化。五、思维基本功根因分析 Root Cause Analysis不只修复现象找到问题最底层诱因。区分表象和根本原因。Trade-off 技术取舍没有完美方案任何选型都有得有失。能清晰说出方案收益与代价。边界条件 Edge Case正常流程之外极端场景空值、极值、并发、超时。Bug大多藏在边界。系统思维 System Thinking跳出单一代码片段看完整调用链路。接口慢不只看代码看数据库、网络、依赖服务。元认知 Metacognition思考自己的思考识别知识盲区搭建知识体系。区分“看懂demo”和“真正掌握原理”。最小验证 Demo遇到不确定猜想写最小复现代码验证猜想而不是直接大规模开发。估算能力 Back-of-the-envelope calculation粗略估算内存、流量、QPS评估方案可行性。通俗类比程序员基本功如同木匠的基础手艺。框架和第三方库 成品电动工具拿来就能快速加工木料基本功 看懂木材纹理、测量、锯、刨、凿的基础能力。只会用电动工具的人工具一出故障就无法继续干活基本功扎实的人哪怕换一套全新工具也能快速上手看懂问题判断材料与工艺取舍。底层计算机原理就是木材、力学的基础知识算法是下料规划Linux、Git、SQL是量具与工作台调试、根因分析就是排查木料开裂、加工瑕疵的能力。误区澄清基本功不等于熟记所有算法难题。不是刷难题而是理解基础数据结构、复杂度、底层原理能应用到业务中。基本功不是脱离业务纸上谈兵。学习底层的目的是解决业务问题不是单纯钻研理论炫技。会写代码 ≠ 基本功扎实。能调通功能只是入门能预判风险、定位诡异线上问题、权衡方案才体现基本功。基本功不是一次性学完。需要在写代码、排故障、做项目的过程中反复巩固持续加深理解。编程语言高级特性不属于基本功。基本功偏向通用能力换语言依然可用语言语法属于上层知识。扎实的基本功是前面所有概念的地基。写Web服务、反向代理、PHP脚本、设计API底层都建立在进程、内存、TCP、IO、哈希表这些基本功之上。基本功扎实更容易理解程序、脚本、Web环境、反向代理的运行原理在遇到故障时快速做根因分析做出合理的技术取舍也就是前面提到的程序员觉醒。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进