1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        知乎爆了......

        共 4323字,需瀏覽 9分鐘

         ·

        2021-04-12 12:26

        大家好,我是小北。

        昨天在知乎上回答了一個(gè)問題:

        程序員需要達(dá)到什么水平才能順利拿到 20k 無壓力?

        點(diǎn)贊很高,一夜之間漲了 2000 + 贊,閱讀幾十萬,很多小可愛說相見恨晚,可惜沒在大一、大二看到。

        所以也在公眾號(hào)給小可愛們發(fā)一遍(有些內(nèi)容以前發(fā)過,但是我覺得有些同學(xué)可能沒看到,再發(fā)一次,看過的可以忽略嘻嘻)。

        以下是原回答:

        2020 屆本科,從我身邊同學(xué)(室友、群友)拿到的 offer 來看,去一二線大廠的普遍能拿到 30 w以上,月薪 20k 上下,甚至有更高的。

        說實(shí)話,現(xiàn)在技術(shù)崗(主要指后端(Java、C++、Go........)之類。

        能做到以下幾點(diǎn),拿到一二線大廠offer 20K 上下的薪資非常容易:

        • 算法題,技術(shù)面試筆試都考這個(gè),所以Leetcode至少得刷兩三百道吧,《劍指offer》所有題目過一遍,搞過ACM當(dāng)然更好,不刷題的話,那只有掛等著你了,畢竟現(xiàn)在很卷,面試官也只能通過算法題來加大篩選。

        • 數(shù)據(jù)結(jié)構(gòu),不要求你手寫紅黑樹,但是 AVL 哈希表 堆這些簡單的數(shù)據(jù)結(jié)構(gòu)得自己實(shí)現(xiàn)過;鏈表、線性表必須熟悉到不能再熟悉,語言的標(biāo)準(zhǔn)庫實(shí)現(xiàn)得了解下吧?什么 Java hashmap,C++ vector 你得知道實(shí)現(xiàn)吧。

        • 計(jì)算機(jī)系統(tǒng)知識(shí),內(nèi)存、堆棧、函數(shù)調(diào)用、數(shù)的表示等等,至少《CSAPP》得過一遍吧?(PS:這本書真的很適合程序員補(bǔ)齊計(jì)算機(jī)基礎(chǔ)。

        • 操作系統(tǒng),這些東西你總得知道吧:操作系統(tǒng)由哪些構(gòu)成、進(jìn)程的狀態(tài)、切換、調(diào)度 進(jìn)程間通信方式(共享內(nèi)存、管道、消息)、進(jìn)程和線程的區(qū)別、線程的實(shí)現(xiàn)方式(一對一、多對一等) 互斥與同步(信號(hào)量、管程、鎖)、死鎖檢測與避免

          并發(fā)經(jīng)典的問題:讀者寫者、哲學(xué)家就餐問題

          為什么需要虛擬內(nèi)存,MMU 具體如何做地址轉(zhuǎn)換的

          內(nèi)存為什么分段、分頁、頁面置換算法

          文件系統(tǒng)是如何組織的、虛擬文件系統(tǒng)(VFS)是如何抽象的

          最好再結(jié)合Linux實(shí)現(xiàn)看下,推薦《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》,比如linux中就沒有線程和進(jìn)程的區(qū)分,就是一個(gè)task_struct

          另外,學(xué)習(xí)操作系統(tǒng)我也非常推薦去做下 MIT6.828,實(shí)現(xiàn)一些線程管理、文件系統(tǒng)等,計(jì)算機(jī)科班不就是搞這些的么。

        • 計(jì)算機(jī)網(wǎng)絡(luò),這個(gè)感覺相對簡單,但是計(jì)網(wǎng)知識(shí)比較繁雜,很多同學(xué)都反映網(wǎng)絡(luò)很難學(xué),一大堆的網(wǎng)絡(luò)協(xié)議,依次學(xué)完后,還是不知道網(wǎng)絡(luò)是怎么構(gòu)成的。

          這就是沒有用對學(xué)習(xí)方法,導(dǎo)致只見樹木,不見森林。

          學(xué)習(xí)時(shí),推薦你抓住一條主線 「一個(gè)數(shù)據(jù)包是如何發(fā)送出去的?」

          帶著這個(gè)問題依次去學(xué)應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層,思考這些層之間是如何串聯(lián)起來的。

          這就是自頂向下的思路,那自然要推薦:

          《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》 這本書從我們最常接觸的 HTTP、FTP、SMTP 等應(yīng)用層協(xié)議講起,可以清晰看到引入各個(gè)層的作用。學(xué)習(xí)每層協(xié)議的時(shí)候,最好自己抓包看下,wireshark抓包遇到三次快速重傳會(huì)怎么樣?這樣映像會(huì)更加深刻

        • 數(shù)據(jù)庫:sql得會(huì)寫吧,這個(gè)推薦看下《SQL必知必會(huì)》,幾個(gè)范式有沒有正式運(yùn)用過? 如何進(jìn)行領(lǐng)域建模、數(shù)據(jù)庫設(shè)計(jì),才能夠使得每次查詢的開銷最小?

          數(shù)據(jù)庫原理方面可以看看《數(shù)據(jù)庫系統(tǒng)概念》,這本書挺厚的,包含了從 SQL 到數(shù)據(jù)庫設(shè)計(jì)再到數(shù)據(jù)庫原理、分布式數(shù)據(jù)庫都有,可以挑著看,比如關(guān)系模型、數(shù)據(jù)庫設(shè)計(jì)(三大范式)、數(shù)據(jù)磁盤存儲(chǔ)和組織方式、索引、并發(fā)控制等。

          當(dāng)然了整個(gè)數(shù)據(jù)庫最重要的還是索引和并發(fā)控制(鎖、MVCC等),這部分也是面試??嫉模?/p>

          索引存儲(chǔ)結(jié)構(gòu):B樹、B+樹索引、Hash索引 索引的使用:主鍵索引、覆蓋索引、最左前綴原則、索引下推等 鎖:樂觀鎖、悲觀鎖、表鎖,行鎖,意向鎖,讀鎖,寫鎖等等 MySQL InnoDB MVCC 實(shí)現(xiàn)機(jī)制 存儲(chǔ)引擎:InnoDB、MyISAM等,各自的優(yōu)缺點(diǎn) 事務(wù):ACID理論 這部分推薦兩本書:

        • 網(wǎng)絡(luò)編程,后臺(tái)開發(fā)基本是離不開網(wǎng)絡(luò)編程的,其實(shí)甚至整個(gè)后臺(tái)開發(fā)也可以看做是在做網(wǎng)絡(luò)編程。只不過別人的框架幫我們做了協(xié)議解析、網(wǎng)絡(luò)數(shù)據(jù)傳輸、解封包這些底層操作。

          比如 SpringBoot 這種保姆級(jí)框架,基本上屬于將一個(gè)框架能干的事都干完了,以至于我們開發(fā)業(yè)務(wù)只需要定義接收和返回包的數(shù)據(jù)格式,然后做邏輯處理就完了。

          像序列化、解封包、IO 處理這種網(wǎng)絡(luò)編程必備的臟活業(yè)務(wù)開發(fā)根本不會(huì)接觸到。

          但是網(wǎng)絡(luò)編程技能還是很重要的,特別是對于 Linux C++ 開發(fā)來說。

        • Linux 下網(wǎng)絡(luò)編程核心的包括系統(tǒng)編程和網(wǎng)絡(luò) IO 兩個(gè)部分:

          進(jìn)程間通信方式:信號(hào)量、管道、共享內(nèi)存、socket 等 多線程編程:互斥鎖、條件變量、讀寫鎖、線程池等 五大 IO 模型:同步、異步、阻塞、非阻塞、信號(hào)驅(qū)動(dòng) 高性能 IO 兩種模式:Reactor 和 Proactor( 但是 Linux 下由于缺少異步 IO 支持,基本沒有 Proactor IO 復(fù)用機(jī)制:epoll、select、poll(破解 C10K 問題的利器) 推薦幾本書:

          《Linux高性能服務(wù)器編程》 《Unix網(wǎng)絡(luò)編程》 《Unix環(huán)境高級(jí)編程》

        • 編程語言:雖然說語言不重要,但是總得擅長一門語言吧?C++的話,那幾本書(Effective三部曲,《Effective C++》、《More Effective C++》、《Effective STL》、STL 源碼剖析、對象模型)都得過一遍吧?Java的話,JVM原理得看下吧?GC 得看下吧?JDK重要集合類庫得看吧

        • 項(xiàng)目:說句實(shí)話,學(xué)校里接觸的項(xiàng)目能有多高大上?如果只是用幾個(gè)框架的那種,我建議不要寫到簡歷上,不如去github上參與開源項(xiàng)目,GSOC了解一下?當(dāng)然如果你的實(shí)驗(yàn)室很厲害,跟導(dǎo)師做的項(xiàng)目很牛逼另說。還有一條路就是上面的5,6,7,任何一個(gè)花上半年時(shí)間去實(shí)現(xiàn)一個(gè)簡陋的原型(比如實(shí)現(xiàn)一個(gè)簡單的內(nèi)核),都是非常好的簡歷加分項(xiàng)。事實(shí)上,國外名校這些課的最后的project都是讓你實(shí)現(xiàn)一個(gè)原型。

        • 英語:這個(gè)面試一般不會(huì)涉及到(除非是英文面試),但是我仍然認(rèn)為英語是很重要的能力。具體的來說,就是“遇到一個(gè)撒比問題不去打擾同事自己谷歌或者bing從stackoverflow找到回答并且獨(dú)立解決” 或者“老板讓我去接觸一個(gè)沒搞過的東西我硬著頭皮點(diǎn)開文檔看了兩天兩頁終于能解決問題” 的能力。

        • 信息采集能力:對于學(xué)校不太好(非C9)的同學(xué),這個(gè)能力其實(shí)是最關(guān)鍵的。最優(yōu)秀的同齡人在學(xué)習(xí)些什么?我想去的公司想招聘什么樣的人才?面試會(huì)問什么?春招秋招到底是什么,如何投遞?實(shí)習(xí)真的很重要嗎?這些問題,你去百度,去知乎搜索,去??途W(wǎng)搜索,其實(shí)都有回答。

          為什么說這個(gè)能力重要?舉個(gè)例子,BAT熱門崗位留給秋招的坑寥寥無幾,因?yàn)榭佣急粚?shí)習(xí)轉(zhuǎn)正的同學(xué)占了,如果你之前不知道春招,沒有去實(shí)習(xí),能去BAT熱門崗位的機(jī)會(huì)自然就很渺茫了。

          又比如,秋招各家公司筆試難度都明顯高于面試難度,原因一方面是篩人,另一方面是筆試作弊現(xiàn)象很嚴(yán)重。如果你知道春招、秋招提前批是不用筆試的,是不是你的機(jī)會(huì)又多了幾分?

        當(dāng)然,知乎上很多同學(xué)評(píng)論說這個(gè)要求太高了,大多數(shù)都達(dá)不到。

        的確,我上面說的這些要求,對于絕大多數(shù)同學(xué)來說都非常遙不可及,即便是 985 能做到 60% 的也不多。我只是給出一個(gè)方向,僅此而已,有人能做到 80%,有人 20% 都難。

        但是,如果你在一個(gè)很普通的高校,不拿最高的標(biāo)準(zhǔn)要求自己,那你的結(jié)局就是和你的那些學(xué)長學(xué)姐一樣,去個(gè)普普通通的公司。

        古人云:”求其上者得其中;求其中者得其下“,選擇都在我們的手上,求上還是求中,都可以,只要自己能接受就可以。

        另外,如果你還是大一、大二的學(xué)弟學(xué)妹,再給幾點(diǎn)建議:

        其實(shí)這是我一直推崇的 CS 科班學(xué)生的典型學(xué)習(xí)路線,基本上基礎(chǔ)課跟著國外 CS 名校課程來,準(zhǔn)沒錯(cuò)。

        能夠做到 50%,應(yīng)該國內(nèi) BAT 這種公司的 offer 就比較好拿了,但是問題在于,我們剛上大學(xué)的時(shí)候其實(shí)很難從一開始就有如此清晰而明確的規(guī)劃。

        不少同學(xué)往往是到了大三下,發(fā)現(xiàn)身邊有同學(xué)都拿到頭條、騰訊的實(shí)習(xí)offer了,突然意識(shí)到,好像快要找工作了。

        然后才匆匆開始認(rèn)真撿起來學(xué)習(xí),而平時(shí)都是把老師布置的作業(yè)完成就好了。

        這樣當(dāng)然是很難拿到滿意的 offer 的。

        所以對于還在校的CS專業(yè)學(xué)弟學(xué)妹,有幾點(diǎn)建議:

        • 提高信息搜索、采集能力 做公眾號(hào)這段時(shí)間,很多同學(xué)問我要xx Lab的資料,csapp的 lab 資料,其實(shí)我想說這些東西我去找和你去找都是一樣的,打開Google,輸入對我發(fā)的那些關(guān)鍵字,你就能找到。而且你找到的將會(huì)是一手資料,而我發(fā)給你以及諸如網(wǎng)盤上下載的,其實(shí)都是 N 手了。
        • 多看信息密度大、質(zhì)量高的資料 比如那些經(jīng)典的書籍、課程,不要整天在CSDN、掘金這些博客平臺(tái)逛,當(dāng)然,我不是說這些博客都不好。而是,你學(xué)習(xí)的資料,大概決定了你所能學(xué)到知識(shí)的上限,這些博客大多也是作者看完了其它書、專欄之后自己寫的總結(jié)。快速了解可以看博客,但是想要學(xué)得深入,不該省的時(shí)間終究是省不了的。自己看書,雖然更費(fèi)時(shí)間,但是知識(shí)會(huì)更加的系統(tǒng)和全面。
        • 要有危機(jī)意識(shí) 現(xiàn)在計(jì)算機(jī)很火,各種轉(zhuǎn)碼、跨考計(jì)算機(jī)的同學(xué)很多,競爭也很大,每年看??蜕系慕?jīng)驗(yàn)貼,都會(huì)發(fā)現(xiàn),cpp primer 雖然很厚,但總會(huì)有人過了兩三遍,而你也許一遍還沒過完,也總有人 leetcode 刷了七八百道,而你也許直到面試前,劍指offer還沒看完呢。想要拿到滿意的offer,就早點(diǎn)開始認(rèn)真學(xué)習(xí)、好好準(zhǔn)備、刷題,面向就業(yè)學(xué)習(xí)蠻好的。
        • 每個(gè)人都能學(xué)好計(jì)算機(jī),你需要的是持續(xù)不斷的努力 我們會(huì)在各種論壇上看到一些前輩侃侃而談他們的經(jīng)驗(yàn),也許有很多技巧、有天賦。但最本質(zhì)的一定是他們持續(xù)不斷的付出,一萬小時(shí)定律我一直堅(jiān)信。換到 CS 專業(yè),可以類比出”10 W行代碼”定律,在本科四年,或者研究生三年,不說10w 行,幾萬行代碼總的有吧。寫代碼很多情況下,就是無他,唯手熟爾。自己粗略的統(tǒng)計(jì)了下,加上寫的各種 lab,大學(xué)寫的代碼應(yīng)該是接近10w 行的。 

        — 【 THE END 】—
        本公眾號(hào)全部博文已整理成一個(gè)目錄,請?jiān)诠娞?hào)里回復(fù)「m」獲取!


        3T技術(shù)資源大放送!包括但不限于:Java、C/C++,Linux,Python,大數(shù)據(jù),人工智能等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取?。?/span>






        瀏覽 95
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            精品永久 | 大香蕉伊人婷婷 | 色视频在线| 超碰成人欧美 | 国产精品视频麻豆 | 亚洲精品自拍视频 | 亚洲综合色色色 | 91av成人亚洲 | free动漫cartoonxxxxxxxx | 午夜成人69视频 |