時(shí)刻保持對(duì)新技術(shù)的敏感度,并定期更新自己的技能儲(chǔ)備,是每個(gè)技術(shù)人的日常必修課。
要做到這一點(diǎn),最高效的辦法就是直接跟 BAT 等一線(xiàn)大廠(chǎng)取經(jīng)。說(shuō)白了,平臺(tái)足夠大,就會(huì)有更多資源和更廣闊的發(fā)展空間,在前沿技術(shù)領(lǐng)域的研究和投入也更大一些。
?但話(huà)說(shuō)回來(lái),并非所有程序員都混跡北上廣。我們中的相當(dāng)一部分人,平時(shí)很難有機(jī)會(huì)接觸國(guó)內(nèi)外大廠(chǎng)的實(shí)戰(zhàn)經(jīng)驗(yàn),對(duì)這些最佳實(shí)踐的認(rèn)知,基本停留在技術(shù)公號(hào)那些內(nèi)容換湯不換藥的干貨文上。

其實(shí),有些文章光看標(biāo)題就能猜出個(gè)大概,而在技術(shù)圈,變化才是永恒不變的主題。與其收藏那些“趨勢(shì)預(yù)測(cè)文”,不如聽(tīng)當(dāng)事人講講大廠(chǎng)到底是怎么做的。
?3 年經(jīng)驗(yàn)的大廠(chǎng)程序員,是 HR 眼中的香餑餑,本應(yīng)在招聘市場(chǎng)上受到追捧,然而,最近我發(fā)現(xiàn)一名履歷不錯(cuò)的程序員,跳槽時(shí)未能通過(guò)技術(shù)面,此反常結(jié)果令我感到疑惑。 在與他交談后,我又與多名相似履歷的程序員進(jìn)行溝通,發(fā)現(xiàn)不少 3 年工作經(jīng)驗(yàn)的大廠(chǎng)程序員,會(huì)因技術(shù)瓶頸陷入職業(yè)困境中。
觀(guān)察數(shù)名程序員所陳述的焦慮表現(xiàn)無(wú)非是:失去了主動(dòng)學(xué)習(xí)的熱情,不再刻苦鉆研技術(shù),長(zhǎng)時(shí)間消息閉塞,對(duì)新技術(shù)、新領(lǐng)域不了解。 他們處在自信與焦慮的掙扎點(diǎn),一方面對(duì)現(xiàn)有工作得心應(yīng)手,另一方面又找不到技術(shù)和職場(chǎng)的突破口。當(dāng)程序員們技術(shù)處在瓶頸期時(shí),自然會(huì)恐慌:無(wú)論資本處在狂熱還是寒冬,無(wú)法成長(zhǎng)的人,注定是競(jìng)爭(zhēng)中的犧牲品。
?我認(rèn)為,他們患上了「大廠(chǎng)通病」。

大廠(chǎng)通?。? 年時(shí)遇見(jiàn)技術(shù)瓶頸
技術(shù)瓶頸的外在表現(xiàn),往往源于內(nèi)因。根據(jù)候選人們的表述,無(wú)法提升的內(nèi)因如下: 1)成為熟練工種后,不再?lài)L試挑戰(zhàn)
2)大廠(chǎng)加班過(guò)多導(dǎo)致缺乏個(gè)人思考時(shí)間
3)精力過(guò)于分散,無(wú)法集中精力做編程
?然而,細(xì)究所謂「大廠(chǎng)通病」,我們難以認(rèn)同這些「內(nèi)因」,它們更像是借口,也形成悖論:熟練工種會(huì)認(rèn)為工作無(wú)壓力,真正覺(jué)得工作輕松的人,會(huì)常無(wú)效加班、精力易分散嗎? 讓我們分別分析「內(nèi)因」背后的「借口」是什么。
?借口一 : 成為熟練工種后,不再?lài)L試挑戰(zhàn)
很多出現(xiàn)技術(shù)瓶頸的大廠(chǎng)程序員表示:他們技術(shù)提升最快速都在工作第一年,會(huì)花費(fèi)大量時(shí)間鉆研與學(xué)習(xí)。理由無(wú)非有二:1. 剛畢業(yè)具有沖勁和好奇心 2. 工作對(duì)于新人難度大,會(huì)在磨練中成長(zhǎng)。 當(dāng)技能逐漸熟練,解決工作內(nèi)容顯得得心應(yīng)手時(shí),他們會(huì)失去好奇心,失去壓迫感,從而滿(mǎn)足現(xiàn)狀:放低自身要求,認(rèn)為編程技術(shù)在滿(mǎn)足開(kāi)發(fā)軟件需求情況下,編出來(lái)就行,如果要達(dá)到更苛刻標(biāo)準(zhǔn),純看上司要求,或自身興趣,無(wú)奈他們已然沒(méi)了興趣。 拆穿借口:熟練是偽裝外皮,無(wú)危機(jī)感、無(wú)上升意識(shí)是本質(zhì)。他們最大問(wèn)題在于:技術(shù)仍停留在一兩年前,沒(méi)有所謂 3 年工作經(jīng)驗(yàn),錯(cuò)將重復(fù)性操作當(dāng)作技能經(jīng)驗(yàn)。
借口二 :大廠(chǎng)加班過(guò)多導(dǎo)致缺乏個(gè)人思考時(shí)間
一名 4 年工作經(jīng)驗(yàn)的 Java 候選人,正在 100offer 看機(jī)會(huì),如今有份 A 廠(chǎng)的 offer 擺在他面前,leader 雖認(rèn)可他的技術(shù)基礎(chǔ)能力和業(yè)務(wù)理解能力,但仍在觀(guān)望中,offer 還未給到我們的候選人,深究原因,令人深思—— A 廠(chǎng)目前在布局大數(shù)據(jù),需要大量人才,在缺少 Scala 工程師的前提下,A 廠(chǎng)會(huì)需要 Java 工程師來(lái)做大數(shù)據(jù)工作。該候選人表示:首先,這與他現(xiàn)在做的 SDN 開(kāi)發(fā)有太大出入,其次,他雖然有 4 年 Java 經(jīng)驗(yàn),但大廠(chǎng)通常愛(ài)加班,導(dǎo)致他幾乎沒(méi)有個(gè)人時(shí)間,從而漸漸失去了解新領(lǐng)域、新技術(shù)的精力和興趣,對(duì)于大數(shù)據(jù)崛起也只是略有耳聞。 認(rèn)為加班使得個(gè)人成長(zhǎng)停滯不前的人不止他一個(gè)人,駭人聽(tīng)聞的996、周末輪班工作等制度,會(huì)讓他們精力過(guò)多被消耗,對(duì)待工作稍顯應(yīng)付,回到家中也無(wú)暇思考。 拆穿借口:不關(guān)注外界信息和加班多無(wú)必然聯(lián)系,并且,問(wèn)題在于,他們自身成長(zhǎng)速度完全取決于其工作內(nèi)容的強(qiáng)度和難度,當(dāng)工齡久了,工作只有加班強(qiáng)度,沒(méi)有技術(shù)難度,成長(zhǎng)便會(huì)停滯。
?借口三 :精力過(guò)于分散,無(wú)法集中精力做編程
?某 F 輪后 O2O 大廠(chǎng)的 Java 候選人,正在準(zhǔn)備尋求新機(jī)會(huì),問(wèn)他為何選擇離開(kāi)前景大好的公司時(shí),他和我們描述了兩個(gè)原因。
?第一,該公司盈利重點(diǎn)處在轉(zhuǎn)型期,餐飲、金融、物流都打算發(fā)力,戰(zhàn)略轉(zhuǎn)型使得各部門(mén)資源都不足,打法顯得混亂,甚至有爭(zhēng)奪資源產(chǎn)生內(nèi)耗的現(xiàn)象。身為基層技術(shù) leader 的他,漸漸感覺(jué)精力過(guò)于消耗。
第二,新任領(lǐng)導(dǎo)的管理風(fēng)格更讓他不滿(mǎn),作為中間層的技術(shù)管理,大部分時(shí)間和精力都浪費(fèi)在了上下級(jí)的溝通中,至于技術(shù),很早以前就處于停滯不前的狀態(tài)了。 不止他一人有以上煩惱,3 年工作經(jīng)驗(yàn)的程序員,不會(huì)再只做編程,還會(huì)參與到軟件設(shè)計(jì)、項(xiàng)目管理、與用戶(hù)或領(lǐng)導(dǎo)溝通中,精力難以集中。如果遇上公司轉(zhuǎn)型期或動(dòng)蕩期,更會(huì)分身乏力,導(dǎo)致無(wú)論是主動(dòng)學(xué)習(xí)還是鉆研技術(shù)上,都失去熱情。
拆穿借口:不需要溝通的技術(shù)人員根本不存在,合理利用精力用于溝通,是用技術(shù)解決問(wèn)題的快捷方式之一。
我并不是否認(rèn)以上三點(diǎn)「大廠(chǎng)通病」不存在,的確是多數(shù)3年工作經(jīng)驗(yàn)大廠(chǎng)程序員的共有困惑,但是,撕下借口的偽裝,從逼迫自己改變開(kāi)始,才是正解。
?如何解決「大廠(chǎng)通病」所帶來(lái)的技術(shù)瓶頸?
扔掉借口從改變環(huán)境做起,跳槽 or 轉(zhuǎn)崗?無(wú)論怎么選,都是逼迫自己改變的開(kāi)始,陷在悖論中倒不如去打破僵局,打破的方法是什么呢?
?學(xué)習(xí)了解目前互聯(lián)網(wǎng)最新最流行的技術(shù)
首先是大廠(chǎng)面試高頻考點(diǎn):分布式技術(shù) 到底什么是分布式經(jīng)驗(yàn),想要回答好面試官的問(wèn)題,需要會(huì)哪些和分布式有關(guān)的知識(shí)呢,大概可以總結(jié)如下:
?分布式服務(wù)框架。如Dubbo、SpringCloud
分布式事務(wù)。2PC、3PC、TCC
分布式鎖。Redis實(shí)現(xiàn)、zk實(shí)現(xiàn)
消息中間件。Kafka、RabbitMQ、RocketMQ
分布式緩存。Redis、Memcached
分布式搜索系統(tǒng)。Elasticsearch
分布式理論。CAP、BASE
高性能、高可用、高并發(fā)。分庫(kù)分表、讀寫(xiě)分離、緩存、限流、降級(jí)、異步消息
如果沒(méi)有實(shí)操經(jīng)驗(yàn),那就充實(shí)自己的理論知識(shí),爭(zhēng)取早日進(jìn)入大廠(chǎng),把理論付諸于實(shí)踐。
閱讀源碼
?大部分Java開(kāi)發(fā)者去大廠(chǎng)面試前,都會(huì)把一些基礎(chǔ)的源碼慢慢都啃了一遍。
??最基本的HashMap 和 ConcurrentHashMap
??線(xiàn)程池的源碼實(shí)現(xiàn)
?阻塞隊(duì)列BlockingQueue相關(guān)實(shí)現(xiàn)
?ReentrantLock 實(shí)現(xiàn),以及其內(nèi)部同步器Sync的實(shí)現(xiàn)原理
?Future的實(shí)現(xiàn)原理
??AtomicXXX是如何運(yùn)轉(zhuǎn)的
?JDK源碼
? 不過(guò),說(shuō)到源碼,有些朋友似乎比較反感,總覺(jué)得會(huì)寫(xiě)代碼就成,為什么一定要去了解源碼是怎么實(shí)現(xiàn)?
看源碼的幾個(gè)好處:
??從源碼中學(xué)習(xí)如何性能優(yōu)化、設(shè)計(jì)模式等
?深入源碼,才能了解真相
?了解源碼,才能更好的解決問(wèn)題
?你懂源碼,面試官更懂你
? 源碼怎么讀,才比較有效率?
??從問(wèn)題出發(fā),帶著問(wèn)題看源碼
??面向debug學(xué)源碼
?寫(xiě)寫(xiě)寫(xiě),做筆記
? 好了,希望大家都養(yǎng)成讀源碼的好習(xí)慣,輕松搞定面試官刨根問(wèn)題的面試方式。

?最后,給大家推薦一些免費(fèi)的分布式、源碼等學(xué)習(xí)的資料,有需要的可以關(guān)注一下小編,也有Java資料群可以加 894180257