你的编程能力从什么时候开始突飞猛进?
回顾一下,我的技术能力(不仅仅是编程,而是解决问题的能力)的进步大约有几个重要的节点:
1. 刚入行时的入门练习题
这个是当年狼厂网页搜索部门的传统,不知道现在还有没有,入职第一个任务是完成两道练习题。
最近很多小伙伴找我,说想要一些c语言的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!
评论区回复“888”,关注我之后私信回复“666”,即可拿走。一题是在Linux上用纯C(不许用C++,没有stl可用)完成一个多线程的网页抓取器,另一题是同样的环境语言完成2G大小的query(搜索查询词)的top100提取,有时间要求。
入厂之前我在Linux上没有写过代码。
两天时间从Linux基本命令的熟悉,vim gcc gdb的使用学习,从malloc和free开始搞内存管理,从0开始码hashtable(还得自己写hash函数),从socket开始实现http client和各种协议码解析,使用pthread多线程和信号量互斥同步,基本把操作系统计算机网络复习了一遍。
这两天把我四年本科三年研究生没搞扎实的工程基础全部补上了。
结论:有目的的练习,尤其是一个完整的应用问题的解决,是学习的不二法门。
2. 接手一个完整的模块(子系统)
搞完入门练习,leader过来跟我说:小胡,现在有一个重要的模块交给你,赶紧熟悉一下,然后完成如下功能升级。
这个模块是前厂存储网页的核心模块,在当年内存4g的奔腾主机上单机存储几千万网页,几台机器存下了当时整个中文互联网。支持高性能的随机存取和顺序读,可以说把机器性能压榨到了极致。
3w行,纯C。