你的編程能力從什么時(shí)候開始突飛猛進(jìn)?
你的編程能力從什么時(shí)候開始突飛猛進(jìn)?
回顧一下,我的技術(shù)能力(不僅僅是編程,而是解決問題的能力)的進(jìn)步大約有幾個(gè)重要的節(jié)點(diǎn):
1. 剛?cè)胄袝r(shí)的入門練習(xí)題
這個(gè)是當(dāng)年狼廠網(wǎng)頁搜索部門的傳統(tǒng),不知道現(xiàn)在還有沒有,入職第一個(gè)任務(wù)是完成兩道練習(xí)題。
最近很多小伙伴找我,說想要一些c語言的資料,然后我根據(jù)自己從業(yè)十年經(jīng)驗(yàn),熬夜搞了幾個(gè)通宵,精心整理了一份「c語言專業(yè)入門到高級教程+工具包」,點(diǎn)個(gè)關(guān)注,全部無償共享給大家?。。?/p>
評論區(qū)回復(fù)“888”,關(guān)注我之后私信回復(fù)“666”,即可拿走。一題是在Linux上用純C(不許用C++,沒有stl可用)完成一個(gè)多線程的網(wǎng)頁抓取器,另一題是同樣的環(huán)境語言完成2G大小的query(搜索查詢詞)的top100提取,有時(shí)間要求。
入廠之前我在Linux上沒有寫過代碼。
兩天時(shí)間從Linux基本命令的熟悉,vim gcc gdb的使用學(xué)習(xí),從malloc和free開始搞內(nèi)存管理,從0開始碼hashtable(還得自己寫hash函數(shù)),從socket開始實(shí)現(xiàn)http client和各種協(xié)議碼解析,使用pthread多線程和信號量互斥同步,基本把操作系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)復(fù)習(xí)了一遍。
這兩天把我四年本科三年研究生沒搞扎實(shí)的工程基礎(chǔ)全部補(bǔ)上了。
結(jié)論:有目的的練習(xí),尤其是一個(gè)完整的應(yīng)用問題的解決,是學(xué)習(xí)的不二法門。
2. 接手一個(gè)完整的模塊(子系統(tǒng))
搞完入門練習(xí),leader過來跟我說:小胡,現(xiàn)在有一個(gè)重要的模塊交給你,趕緊熟悉一下,然后完成如下功能升級。
這個(gè)模塊是前廠存儲網(wǎng)頁的核心模塊,在當(dāng)年內(nèi)存4g的奔騰主機(jī)上單機(jī)存儲幾千萬網(wǎng)頁,幾臺機(jī)器存下了當(dāng)時(shí)整個(gè)中文互聯(lián)網(wǎng)。支持高性能的隨機(jī)存取和順序讀,可以說把機(jī)器性能壓榨到了極致。
3w行,純C。