`

it技术高手的进攻

阅读更多

第一阶段 认真构建完整的知识体系

十几年前我投身软件行业的时候,光是讲解数据库原理、操作系统、TCP/IP、组网、算法等等基础知识的英文原版书摞起来就等身,认认真真看完,各种上手实践,入行后,读遍 C++ 各种经典著作,读遍各种协议原文,认认真真打基础。
很多工程师都说自己平常就是在某些 IT 门户上看看推荐的博文或新闻,我说这属于典型的零敲碎打,不够刺激。
聊到这时,我会举一个例子,为什么要阅读长篇小说,因为中短篇小说就像用针扎你,而长篇小说就像把你装进一个沙袋里吊起来,从四面八方用狼牙棒打你,酣畅淋漓。构建可用的知识体系,就得读书,书是有体系结构的,你关心不关心,现阶段你用到用不到,它都讲到了,从头到尾看几遍,针扎得透透的
 
何谓知识体系?
几年前,前支付宝架构师姚建东曾经在我们公司做过技术人员如何规划自己的分享讲座,他是这么论述的:
技术与技巧包括:
  • 计算机基础理论
    • 计算机模型:内存/IO/时钟/CPU……
    • 算法
    • 专项技术领域:
      • 数据挖掘
      • 数据管理
      • 智能推荐
      • 搜索
      • ……
  • 语言与工具
    • 语言与相关体系
    • 开发工具,分析工具,代码管理工具
    • HTML/CSS/JS/Ajax
    • 常用框架与第三方类库
  • 调试与测试
    • 调试方法和哲学
    • 定位问题
    • BUG管理工具
    • 单元测试
    • 集成测试
    • 性能测试
    • 安全测试
    • 兼容性测试与方法
    • JS/Ajax测试与方法
    • 服务层测试
    • Web层测试
  • 网络与系统
    • TCP/IP协议与模型,HTTP/SMTP等协议
    • Linux系统,网络分析工具,系统分析工具
    • 容量,流量与负载均衡
    • 应用部署、规范、规划
    • 安全
    • 监控与故障分析
    • 磁盘与存储
    • Shell
    • DNS与域名
    • 缓存,反向代理
    • 图片服务器(海量小文件)
  • 需求挖掘与分析
    • 需求文档格式
    • 需求访谈
    • 需求分析方法,需求分析工具
    • 领域知识与经验
  • 系统分析与设计
    • UML语言与模型
    • 分析模式
    • 设计模式,领域驱动
    • 系统分析文档格式
    • 系统设计文档格式
    • 功能性需求与非功能性需求
  • 数据与系统
    • 数据库
    • 可伸缩策略,扩展策略,备份,容灾,性能,安全,高可用……
    • 数据设计与范式,SQL/NoSQL,Cache,分布式文件
  • 架构设计
    • 架构模式,典型互联网公司架构演进历史
    • 架构原则,常用策略
    • 架构设计方法
    • 非功能性理解
      • 扩展性
      • 伸缩性
      • 稳定性
      • 一致性
      • 性能
      • 吞吐量
    • 容量预测与规划
    • 架构体系与相关技术
  • 过程与管理
    • 分析过程
    • 研发过程
    • 评审过程
    • 测试过程
    • 发布过程
    • 回滚过程
    • 文档管理
    • 知识管理
    • 项目管理
以上其实就是一份从业基础知识清单,你可以按图索骥,阅读相关书籍。
 

第二阶段 顺着一个Topic钻进去,锻炼自己的预研能力

无论公司业务还是自己喜欢做的事,都可以抽象出通用性课题,然后以做论文的方式杀进去。这个事情得反复操练,有意识操练。
做事方式为:
  1. 抽象出 Topic——如分布式锁,分布式并行计算引擎,防CSRF的FormToken自动生成框架,定时任务管理与调度平台,分布式跟踪,等等
  2. 向功课好的学生学习——有针对性地深入了解业界其他公司是如何分析问题和解决问题的,汇总各种方案,站在巨人的肩膀上
  3. 分析特定应用场景,技术选型
  4. 兼顾高可用性和可伸缩,做设计评审
  5. 做测试自证靠谱,梳理知识点,开技术分享会
  6. 上线商用,总结经验教训,开经验分享会
 
其中一个重点是汇总和分享。05年时,应电信级统一消息业务需要,我去研究了 SIP 协议,做了各种试验,分析报文,写了一系列的幻灯片,做了公开分享,一时间还颇受欢迎:
  1. SIP_to_Freshman_by_zhengyun.ppt
  2. SIP之穿越NAT_by_zhengyun.ppt
  3. SIP体系架构讲义及消息交互演示_by_zhengyun.ppt
  4. SIP多方会话消息之实例讲解_by_zhengyun.ppt
  5. SIP安全框架之认证[NTLM和Kerberos]_by_zhengyun.ppt
  6. SIP消息之逐项讲解_by_zhengyun.ppt
为什么要写出来、讲出来呢?
因为有一个学习金字塔理论,如下图所示:
学习金字塔
我们读过的事情能够记住学习内容的10%,
我们听过的事情能够记住20%,
我们看过的事情能够记住30%,
我们听过和看过的事情能够记住50%——如看影像/看展览/看演示/现场观摩,
我们说过的事情能够记住70%——如参与讨论/发言,
我们说过和做过的事情能够记住90%——如做报告,给别人讲,亲身体验,动手做。
这也就是我在《窝窝研发过去几年做对了哪些事》中阐述的管理方法:我们从入职之后就有意识地训练大家,让大家能够公开陈述、清晰表达。所以,试用期内,新人必须做一次技术分享和一次技术评审,面对各方的 challenge;预研的中间和结尾都要有分享会;平时也要定期组织技术讲座。
 

第三阶段 疯狂回答技术问题

知识体系慢慢构建,与业务相关的抽象 Topic 也在探索中。
但这还不够。
因为你亲身接触到的世界太小,可能不足以构成挑战,你可能意识不到自己缺多少知识和技能,不利于你分析问题、提出问题和解决问题的能力培养。
所以,要主动出击:
疯狂回答问题
 
我曾经在入行的头几年里几乎把我关注的垂直领域(包括语言领域和业务领域)里的所有问题都回答了一遍。我对外宣扬知无不言言无不尽,放出邮件地址和 MSN(那时候 MSN 很高大上),很多网友都会发邮件或者加我好友,问各种开发疑难问题,平均每天都有几个,然后我把解决问题的过程写成微软 KB(KnowledgeBase) 文体发表在我的博客上。
你想想看,工作中的问题你平均每隔几天才能遇到一个,而这么做,每天你都会遇到几个乃至于十几个,第一让你脑力激荡,第二接触到更多新知。
 
05年到06年期间,我因工作需要学习了 JavaME(或古老的称呼 J2ME),早年间 Symbian 手机上的客户端开发。那段时间我天天扫中文论坛的帖子,力求回答所有问题,尤其是那些 BUG 或故障。对于那些暂时没有人解决的,如流媒体实时播放,如仿 OperaMini 二级菜单界面,都上下求索,最后放出思路以及源码。
同时,我经常整理常见问题,梳理成册并发布。譬如我整理过的 J2ME 疑难问题:
  1. [J2ME Q&A]真机报告MontyThread -n的错误之解释
  2. [J2MEQ&A]WTK初始化WMAClient报错XXX has no IP address的解释
  3. [J2ME Q&A]untrusted domain is not configured问题回应
  4. [J2ME]“Cannot open socket for LIME events”错误解决
几个月后,我成为 J2ME 中文论坛超级版主。通过这个历程,我想告诉大家,回答网友问题,技巧得当的话,比如别老是重复回答新手问题,试着攻克那些疑难问题,或者离奇故障,绝对不会浪费你的时间。
为什么?
因为你要信奉:
你学过的每一样东西,你遭受的每一次苦难,都会在你一生中的某个时候派上用场。
——佩内洛普·菲兹杰拉德 《离岸》
 
Everything that you've learnt and all the hardships you've suffered will all come in handy at some point in your life.
 

第四阶段 RCA/总结

现在是你把经验教训变为财富的时刻了。
什么是好的技术 Leader?
随便一个业务需求或业务场景讲出来,你立刻把它抽象为几个模块/系统/Topic,然后侃侃而谈,业界都是怎么解决的,我们以前又是怎么分析怎么解决的,现在咱们这种情况下应该如何设计,可能会遇到什么问题,我们应该做哪些预防设计,blabla。
 
怎么做到这一点?
第一,写 RCA 报告。
我以前说过,『窝窝从 2011 年开始,一直坚持每错必查、错了又错就整改、每错必写,用身体力行告诉每一个新员工直面错误、公开技术细节、分享给所有人,长此以往,每一次事故和线上漏测都会变为我们的财富。这就是我们的 RCA(Root Cause Analysis)制度,截止到目前已经收集整理了近两百个详尽的 RCA 报告。』
RCA 报告格式为:
  1. 背景知识(Optional)
  2. 问题现象
  3. 影响范围
  4. 问题原因
  5. 问题分析过程(Optional)
  6. 解决办法
  7. 后续处理措施:如线上脏数据如何修复,如对用户造成的影响如何弥补等(Optional)
  8. 经验教训
  9. RCA类型:如代码问题、实施问题、配置问题、设计问题、测试问题
这样,作为一名合格的老兵,你见过了足够多的血,并且把它们变成了你的人生财富。
第二,写总结。
话说,要经常拉清单。
侃侃而谈得有资料,这些都得是你自己写才能印象深刻,关键时刻想得起来。
 
好了,这就是我告诉面试者的高手炼成四个阶段
分享到:
评论

相关推荐

    比赛结束了作文.doc

    1. 面对挑战:在IT行业中,我们经常遇到技术上的高手和强大的竞争对手。正如中国队面对巴西队,尽管实力悬殊,但仍然需要积极参与,学习并积累经验。在编程竞赛或项目开发中,我们可能也会遇到看似难以克服的难题,...

    人机博弈 象棋与五子棋

    在IT领域,人机博弈是计算机科学中的一个重要研究方向,主要涉及人工智能(AI)和算法设计。本资源“人机博弈 象棋与五子棋”提供了PC游戏编程的相关源代码,允许开发者深入理解如何构建一个能与人类玩家进行对抗的...

    texmacs-fedora-fonts-2.1-1.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统texmacs-fedora-fonts-2.1-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf texmacs-fedora-fonts-2.1-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    基于Matlab/Simulink的直流电动机双闭环调速系统建模与仿真

    内容概要:本文详细介绍了如何使用Matlab/Simulink对直流电动机双闭环调速系统进行建模与仿真。文中首先解释了双闭环调速系统的原理,即通过转速外环和电流内环的协同工作,使电机快速达到并维持稳定的运行状态。接着,逐步指导读者在Simulink中搭建模型,包括设置信号源、配置PI控制器参数、选择电机模块以及连接各个组件。此外,还提供了具体的参数设置示例和优化技巧,如调整PI控制器的比例系数和积分系数,确保系统的快速响应和平稳过渡。最后,通过对仿真结果的分析,展示了双闭环调速系统的优势及其在实际应用中的价值。 适合人群:从事电力电子实验的研究人员和技术爱好者,尤其是那些希望深入了解直流电动机控制系统原理的人。 使用场景及目标:适用于需要精确控制直流电动机转速的应用场合,如工业自动化设备、机器人等领域。通过学习本文,读者可以掌握使用Matlab/Simulink进行系统建模和仿真的方法,提高对复杂控制系统的理解和应用能力。 其他说明:文中提到的一些参数设置和优化技巧来源于实践经验,对于初学者来说可能需要多次尝试才能找到最适合自己的解决方案。同时,在撰写相关实验报告时,可以根据提供的建议整理和展示仿真数据,以便更好地表达研究成果。

    电气设备状态监测:温度监测与分析.zip

    电子仿真教程,从基础到精通,每个压缩包15篇教程,每篇教程5000字以上。

    电路仿真:电路基础理论.zip

    电子仿真教程,从基础到精通,每个压缩包15篇教程,每篇教程5000字以上。

    【Linux网络与Proxmox虚拟化】核心网络组件及虚拟化模型习题解析:掌握桥接、VLAN、Bonding与SDN配置技巧Linux网络基础

    内容概要:本文档详细介绍了Proxmox网络组件(vmbr、SDN)、Linux网络基础(桥接、VLAN、Bonding)以及虚拟化网络模型的核心概念,并通过一系列课后习题及其答案帮助读者巩固所学知识。第一部分讲解了Linux网桥与物理交换机的异同、桥接设备的配置方法、VLAN的相关概念及配置步骤;第二部分探讨了Proxmox中vmbr0的作用和创建新桥接接口的方法,以及SDN的核心组件和多租户场景下的优势;第三部分对比了桥接模型与NAT模型的适用场景及局限性,并提供了虚拟机无法访问互联网的排查步骤;第四部分通过故障案例分析和设计题,进一步加深对网络隔离和SDN网络设计的理解。 适合人群:具有Linux和网络基础知识的IT技术人员,特别是从事虚拟化、网络管理和云计算领域的工程师。 使用场景及目标:① 掌握Linux网络基础,包括桥接、VLAN、Bonding的配置与原理;② 理解Proxmox网络组件的功能及配置方法;③ 学习虚拟化网络模型的不同应用场景及优缺点;④ 提升网络故障排查能力和复杂网络的设计能力。 阅读建议:此文档不仅提供了理论知识,还结合了大量实际操作题目,建议读者在学习过程中动手实践,通过配置真实环境来加深理解。同时,对于关键知识点,可以查阅相关资料进行补充学习。

    立式插秧机sw16可编辑_三维3D设计图纸_包括零件图_机械3D图可修改打包下载_三维3D设计图纸_包括零件图_机械3D图可修改打包下载.zip

    立式插秧机sw16可编辑_三维3D设计图纸_包括零件图_机械3D图可修改打包下载_三维3D设计图纸_包括零件图_机械3D图可修改打包下载.zip

    机器人路径规划中A*与JPS+结合DWA算法的改进及多机器人场景应用

    内容概要:本文深入探讨了A*算法和跳点搜索算法(JPS+)在机器人路径规划领域的应用及其与动态窗口算法(DWA)相结合的改进。首先介绍了A*算法的基本原理和实现方式,然后详细解释了JPS+算法如何通过跳点搜索提高效率。接着讨论了这两种算法与DWA结合的具体方法,特别是在多机器人场景下的路径冲突避免和动态避障策略。文中还展示了多种改进措施的效果,如通过八叉树预处理地图、引入朝向变化惩罚以及采用异步优先级协商机制等。最后比较了单机器人和多机器人场景下的性能差异,强调了算法选择的重要性。 适合人群:从事机器人技术研发的专业人士,尤其是关注路径规划算法的研究人员和技术开发者。 使用场景及目标:适用于希望深入了解并优化机器人路径规划系统的团队和个人。目标是在单机器人和多机器人场景中提升路径规划的效率和灵活性,确保机器人能够在复杂的环境中稳定运行。 其他说明:文章不仅提供了理论分析,还包括了大量的代码片段和实际案例,有助于读者更好地理解和应用这些先进的路径规划技术。

    异步电机转差频率控制矢量仿真实验模型解析及应用

    内容概要:本文深入探讨了转差频率控制的异步电机矢量控制系统仿真模型。首先介绍了转差频率控制的基本原理,即通过控制转差频率间接调控电机转矩。接着阐述了矢量控制的思想,即将定子电流分解为励磁和转矩两个独立控制的分量。随后展示了仿真模型的具体实现,包括电机参数设定、状态空间模型构建、PI控制器参数配置以及关键模块如转差频率计算、坐标变换、磁链观测等的代码示例。最后强调了配套的50页说明文档对于理解和调试模型的重要价值。 适用人群:适用于电气工程专业学生、电机控制领域的研究人员和技术人员。 使用场景及目标:帮助读者掌握异步电机矢量控制的技术细节,提高对复杂控制系统的设计能力,同时提供实践指导,便于进行相关实验和项目开发。 其他说明:文中提供了大量MATLAB/Simulink代码片段作为实例,有助于加深理解并应用于实际工作中。此外,还分享了一些调试技巧和注意事项,如坐标变换系数选择、积分抗饱和处理等。

    Simulink黑鹰直升机非线性动力学模型解析及其MATLAB源码实现

    内容概要:本文详细介绍了基于Simulink平台构建的黑鹰单旋翼直升机非线性动力学模型。该模型涵盖了主旋翼挥舞角动力学、尾桨控制、机身气动力等多个关键模块,并提供了完整的MATLAB源码。文章深入剖析了各个模块的工作原理,如挥舞角计算、气动耦合补偿、侧向力计算等,并分享了多个实用的仿真技巧和常见问题解决方案。此外,文中还提到了一些优化建议,如调整时间常数、改进积分方法以及处理代数环错误等。 适合人群:从事直升机仿真研究的技术人员、航空航天领域的研究人员、高校相关专业的师生。 使用场景及目标:帮助读者理解和掌握直升机非线性动力学建模的方法和技术,提高仿真的精度和效率。适用于教学、科研项目以及工业应用中的直升机性能评估和控制系统设计。 其他说明:附带的文献资料进一步补充了模型背后的理论依据,特别是关于旋翼失速特性和地面效应的研究成果。对于希望深入了解直升机空气动力学特性的读者来说,这些资料非常有价值。

    python 基础:个人自用输入输出

    python 基础:个人自用输入输出

    电路仿真:瞬态分析.zip

    电子仿真教程,从基础到精通,每个压缩包15篇教程,每篇教程5000字以上。

    textern-0.8-1.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统textern-0.8-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf textern-0.8-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    互联网大厂200道高频Node.js面试题

    内容概要:本文档《互联网大厂200道高频Node.js面试题.pdf》涵盖了Node.js技术栈的核心知识点及实际应用技巧。文档详细列举了200个常见面试问题及其解答,内容涵盖Node.js的基础概念、事件循环机制、错误处理、模块系统、Buffer和Stream的使用、进程与线程的区别及应用、异步操作的多种实现方式、集群模式下的性能优化、WebSocket的实现、大文件处理、全局对象的使用、Promise和async/await的优势、RESTful API的设计、环境变量管理、跨域请求处理、调试工具、内存管理和优化、Worker Threads的应用、负载均衡策略、测试框架的选择、静态文件服务、日志管理、HTTP/2的支持、数据库连接方式、微服务架构的设计、JWT认证、性能监控、文件上传与下载、Reactor模式的理解、定时任务的设置、多语言支持、文件预览、安全实践、Server-Sent Events(SSE)的使用、微前端集成、长轮询、GraphQL服务的构建、命令行工具的开发、单元测试编写、process对象的功能、优雅退出的方法、os模块的作用、CPU密集型任务的处理、加密解密、文件锁定、TCP服务创建、DNS解析、事件循环优化、数据压缩、内存缓存、自定义协议、分布式锁、工具函数、文件分片处理、HTTPS实现、请求超时控制、日志切割、URL参数解析、请求重试机制、V8模块的作用、文件内容搜索、断言模块的使用、动态路由、国际化域名处理、性能测量、文件同步、REPL交互环境、请求限

    Matlab中3次B样条优化算法及其实现:提高曲线平滑度与计算效率的技术解析

    内容概要:本文详细介绍了3次B样条优化算法及其在Matlab中的具体实现。3次B样条作为一种广泛应用于计算机图形学和数据处理领域的曲线表示方法,因其良好的局部控制特性和光滑性而备受青睐。文中不仅阐述了3次B样条的基本理论,如基函数的递归计算公式,还给出了完整的Matlab代码实现,包括节点向量的生成、基函数的计算以及最终的曲线优化过程。此外,作者还分享了一些实用技巧,如避免常见的错误、提高计算效率的方法等。 适合人群:具有一定Matlab编程基础,对数值计算、数据拟合、计算机图形学等领域感兴趣的科研人员和技术开发者。 使用场景及目标:①需要对离散数据进行平滑处理的应用场合;②涉及轨迹规划、路径优化等问题的研究项目;③希望通过引入先进的数学工具改进现有算法性能的研发团队。 其他说明:文章提供的代码可以直接集成到现有的Matlab项目中,帮助用户快速实现3次B样条优化。同时,文中提到的一些优化建议和注意事项也有助于读者更好地理解和应用这一技术。

    COMSOL中层合材料超声波仿真的详细指南及实用技巧

    内容概要:本文详细介绍了如何使用COMSOL进行层合材料的超声波仿真,涵盖了从材料参数设置、几何建模、网格划分、物理场设置到求解器配置以及后处理的全过程。文中提供了大量MATLAB和Java代码片段,帮助用户快速构建并优化仿真模型。同时,作者分享了许多实践经验,如正确设置材料参数、采用合适的网格划分策略、调整求解器参数等,确保仿真结果更加贴近实际情况。 适合人群:从事复合材料研究的技术人员、超声波检测工程师、仿真软件使用者,尤其是有一定COMSOL使用基础的研究人员。 使用场景及目标:①掌握层合材料超声波仿真的完整流程;②提高仿真精度,解决常见的仿真误差问题;③通过实例学习如何优化模型设置,提升仿真效率。 其他说明:文章强调了材料参数设置、网格划分、求解器配置等方面的关键技术和注意事项,并提供了一些实用的代码示例和技巧,有助于读者更好地理解和应用这些知识点。

    Eclipse Memory Analyzer Tool (MAT) 的 macOS 安装包

    功能定位:这是一款专业的 Java 堆内存分析工具,主要用于: 诊断内存泄漏:通过分析堆转储文件(Heap Dump),定位未释放的无用对象。 优化内存使用:统计对象实例数量、内存占用及引用关系,提升应用性能。 支持场景:适用于开发调试、性能优化、故障排查(如 OOM 异常)等场景。

    电力系统调频技术:基于风储联合的四机两区系统频域建模与仿真

    内容概要:本文详细介绍了四机两区系统中风储联合调频仿真的构建与优化。首先,通过频域建模将风电渗透率提高到25%,并通过虚拟惯性控制和储能下垂控制来增强系统的频率稳定性。文中展示了关键的MATLAB代码片段,解释了虚拟惯性控制和储能SOC管理的具体实现方式。此外,还讨论了频域建模的优势及其在仿真速度上的显著提升。最后,提供了仿真结果的数据分析,验证了所提方法的有效性。 适合人群:从事电力系统调频研究的技术人员、研究生以及相关领域的研究人员。 使用场景及目标:适用于希望深入了解风储联合调频机制的研究人员和技术开发者,旨在提供一种高效的仿真方法,以应对高风电渗透率带来的频率波动挑战。 其他说明:文中提及了一些实用的经验技巧,如解决Simulink频域模块的代数环错误的方法,以及参考文献的选择,有助于读者更好地理解和应用相关内容。

    蓝牙单芯片解决方案BlueCore3-Flash:射频与基带集成及DSP优化

    内容概要:本文详细介绍了CSR公司BlueCore3-Flash芯片,这款2004年推出的蓝牙单芯片解决方案集成了射频前端、基带处理和6Mbit闪存。文章首先回顾了其硬件架构,包括RF前端、ARM7 TDMI处理器、DSP协处理器及其存储管理。接着深入探讨了DSP协处理器对CVSD编码的优化以及RF部分的天线匹配和寄存器配置技巧。文中还提到了Flash分区管理和一些有趣的细节,如复活节彩蛋代码和通过GPIO模拟I2C控制EEPROM的方法。此外,作者分享了许多实用的经验教训,如Flash编程时序要求、寄存器配置陷阱等。最后强调了800页逆向分析报告的价值,特别是在射频校准方面的指导意义。 适合人群:从事蓝牙开发的工程师和技术爱好者,尤其是对早期蓝牙技术和硬件设计感兴趣的读者。 使用场景及目标:帮助读者深入了解BlueCore3-Flash芯片的工作原理和设计思路,掌握射频调试、DSP优化等关键技术,避免常见错误,提高开发效率。 其他说明:尽管BlueCore3-Flash已停产多年,但其设计理念和技术细节仍然值得借鉴,对于理解和优化现代蓝牙低能耗(BLE)系统具有重要参考价值。

Global site tag (gtag.js) - Google Analytics