回覆列表
  • 1 # 阿風的架構筆記

    要做到這一點,最高效的辦法就是直接跟 BAT 等一線大廠取經。說白了,平臺足夠大,就會有更多資源和更廣闊的發展空間,在前沿技術領域的研究和投入也更大一些。

    但話說回來,並非所有程式設計師都混跡北上廣。我們中的相當一部分人,平時很難有機會接觸國內外大廠的實戰經驗,對這些最佳實踐的認知,基本停留在技術公號那些內容換湯不換藥的乾貨文上。

    其實,有些文章光看標題就能猜出個大概,而在技術圈,變化才是永恆不變的主題。與其收藏那些“趨勢預測文”,不如聽當事人講講大廠到底是怎麼做的。

    3 年經驗的大廠程式設計師,是 HR 眼中的香餑餑,本應在招聘市場上受到追捧,然而,最近我發現一名履歷不錯的程式設計師,跳槽時未能透過技術面,此反常結果令我感到疑惑。

    在與他交談後,我又與多名相似履歷的程式設計師進行溝通,發現不少 3 年工作經驗的大廠程式設計師,會因技術瓶頸陷入職業困境中。

    觀察數名程式設計師所陳述的焦慮表現無非是:失去了主動學習的熱情,不再刻苦鑽研技術,長時間訊息閉塞,對新技術、新領域不瞭解。

    他們處在自信與焦慮的掙扎點,一方面對現有工作得心應手,另一方面又找不到技術和職場的突破口。當程式設計師們技術處在瓶頸期時,自然會恐慌:無論資本處在狂熱還是寒冬,無法成長的人,註定是競爭中的犧牲品。

    我認為,他們患上了「大廠通病」。

    大廠通病:3 年時遇見技術瓶頸

    技術瓶頸的外在表現,往往源於內因。根據候選人們的表述,無法提升的內因如下:

    1)成為熟練工種後,不再嘗試挑戰

    2)大廠加班過多導致缺乏個人思考時間

    3)精力過於分散,無法集中精力做程式設計

    然而,細究所謂「大廠通病」,我們難以認同這些「內因」,它們更像是藉口,也形成悖論:熟練工種會認為工作無壓力,真正覺得工作輕鬆的人,會常無效加班、精力易分散嗎?

    讓我們分別分析「內因」背後的「藉口」是什麼。

    藉口一 : 成為熟練工種後,不再嘗試挑戰

    很多出現技術瓶頸的大廠程式設計師表示:他們技術提升最快速都在工作第一年,會花費大量時間鑽研與學習。理由無非有二:1. 剛畢業具有衝勁和好奇心 2. 工作對於新人難度大,會在磨練中成長。

    當技能逐漸熟練,解決工作內容顯得得心應手時,他們會失去好奇心,失去壓迫感,從而滿足現狀:放低自身要求,認為程式設計技術在滿足開發軟體需求情況下,編出來就行,如果要達到更苛刻標準,純看上司要求,或自身興趣,無奈他們已然沒了興趣。

    拆穿藉口:熟練是偽裝外皮,無危機感、無上升意識是本質。他們最大問題在於:技術仍停留在一兩年前,沒有所謂 3 年工作經驗,錯將重複性操作當作技能經驗。

    藉口二 :大廠加班過多導致缺乏個人思考時間

    一名 4 年工作經驗的 Java 候選人,正在 100offer 看機會,如今有份 A 廠的 offer 擺在他面前,leader 雖認可他的技術基礎能力和業務理解能力,但仍在觀望中,offer 還未給到我們的候選人,深究原因,令人深思——

    A 廠目前在佈局大資料,需要大量人才,在缺少 Scala 工程師的前提下,A 廠會需要 Java 工程師來做大資料工作。該候選人表示:首先,這與他現在做的 SDN 開發有太大出入,其次,他雖然有 4 年 Java 經驗,但大廠通常愛加班,導致他幾乎沒有個人時間,從而漸漸失去了解新領域、新技術的精力和興趣,對於大資料崛起也只是略有耳聞。

    認為加班使得個人成長停滯不前的人不止他一個人,駭人聽聞的996、週末輪班工作等制度,會讓他們精力過多被消耗,對待工作稍顯應付,回到家中也無暇思考。

    拆穿藉口:不關注外界資訊和加班多無必然聯絡,並且,問題在於,他們自身成長速度完全取決於其工作內容的強度和難度,當工齡久了,工作只有加班強度,沒有技術難度,成長便會停滯。

    藉口三 :精力過於分散,無法集中精力做程式設計

    某 F 輪後 O2O 大廠的 Java 候選人,正在準備尋求新機會,問他為何選擇離開前景大好的公司時,他和我們描述了兩個原因。

    第一,該公司盈利重點處在轉型期,餐飲、金融、物流都打算髮力,戰略轉型使得各部門資源都不足,打法顯得混亂,甚至有爭奪資源產生內耗的現象。身為基層技術 leader 的他,漸漸感覺精力過於消耗。

    第二,新任領導的管理風格更讓他不滿,作為中間層的技術管理,大部分時間和精力都浪費在了上下級的溝通中,至於技術,很早以前就處於停滯不前的狀態了。

    不止他一人有以上煩惱,3 年工作經驗的程式設計師,不會再只做程式設計,還會參與到軟體設計、專案管理、與使用者或領導溝通中,精力難以集中。如果遇上公司轉型期或動盪期,更會分身乏力,導致無論是主動學習還是鑽研技術上,都失去熱情。

    拆穿藉口:不需要溝通的技術人員根本不存在,合理利用精力用於溝通,是用技術解決問題的快捷方式之一。

    我並不是否認以上三點「大廠通病」不存在,的確是多數3年工作經驗大廠程式設計師的共有困惑,但是,撕下藉口的偽裝,從逼迫自己改變開始,才是正解。

    如何解決「大廠通病」所帶來的技術瓶頸?

    扔掉藉口從改變環境做起,跳槽 or 轉崗?無論怎麼選,都是逼迫自己改變的開始,陷在悖論中倒不如去打破僵局,打破的方法是什麼呢?

    學習瞭解目前網際網路最新最流行的技術

    首先是大廠面試高頻考點:分散式技術

    到底什麼是分散式經驗,想要回答好面試官的問題,需要會哪些和分散式有關的知識呢,大概可以總結如下:

    分散式服務框架。如Dubbo、SpringCloud

    分散式事務。2PC、3PC、TCC

    分散式鎖。Redis實現、zk實現

    訊息中介軟體。Kafka、RabbitMQ、RocketMQ

    分散式快取。Redis、Memcached

    分散式搜尋系統。Elasticsearch

    分散式理論。CAP、BASE

    高效能、高可用、高併發。分庫分表、讀寫分離、快取、限流、降級、非同步訊息

    如果沒有實操經驗,那就充實自己的理論知識,爭取早日進入大廠,把理論付諸於實踐。

    閱讀原始碼

    大部分Java開發者去大廠面試前,都會把一些基礎的原始碼慢慢都啃了一遍。

    最基本的HashMap 和 ConcurrentHashMap執行緒池的原始碼實現阻塞佇列BlockingQueue相關實現ReentrantLock 實現,以及其內部同步器Sync的實現原理Future的實現原理AtomicXXX是如何運轉的JDK原始碼

    不過,說到原始碼,有些朋友似乎比較反感,總覺得會寫程式碼就成,為什麼一定要去了解原始碼是怎麼實現?

    看原始碼的幾個好處:

    從原始碼中學習如何效能最佳化、設計模式等深入原始碼,才能瞭解真相瞭解原始碼,才能更好的解決問題你懂原始碼,面試官更懂你

    原始碼怎麼讀,才比較有效率?

    從問題出發,帶著問題看原始碼面向debug學原始碼寫寫寫,做筆記

    好了,希望大家都養成讀原始碼的好習慣,輕鬆搞定面試官刨根問題的面試方式。

  • 2 # WhatAKittyDaily

    1. 總結自己的思維框架,形成自己的知識樹【最重要】;

    3. 在家多自學,緊跟OpenJDK的更新迭代以及現實Web標準Spring全家桶的更新迭代,在初期可以嘗試參與ISSUE的回答甚至BUG的修正活動裡。

  • 3 # 程式設計師風風

    1.加班

    2.八小時外的自學

    3.不斷挑戰自己的弱點

    4.多熬夜,多做專案

    要想做人上人,就得吃得苦中苦,永遠不要相信有什麼一步登天的道理,說白了,就一句話:天道酬勤

  • 4 # 碼農理財

    能去大廠,理論+實踐經驗豐富;

    1.書要多看,各種科技類的書,java程式設計思想,架構,多執行緒全部瞭解其原理;

    2.專案多做:如果工作之於有時間,多做專案,多做demo,遇到問題解決問題,然後總結;反覆的實踐;

  • 5 # 程式設計師夏天

    我列舉一下吧:

    工程化與工具:專案管理工具Maven、Gradle,持續整合Jenkins,程式碼質量管理Sonar,版本管理Git;

    一些常用的框架:Spring,Spring MVC這兩個挺老了,但是一直很經典;Spring Boot;Spring Security、Shiro;Spring的挺多框架都可以學習學習;ORM框架除了Hibernate、MyBatis之外,可以看看JPA;

    資料庫相關:關心型資料庫是必修課,選哪一個資料庫學習還是看專案;SQL最佳化;分庫分表(專案中);記憶體資料庫(做單元測試的時候挺好用的);另外常用的Nosql資料庫,Redis、MongoDB等。

    另外一些框架或中介軟體或技術:Spring Cloud(也有公司用Dubbo的)、Docker與虛擬化、Zookeeper;分散式日誌收集;各種MQ會一兩個常用的;分散式架構。

    個人建議,巴分巴秒這個平臺確實不錯,如果是真的想達到高開甚至架構師的話,是可以到巴分巴秒這個平臺去看看,平臺都把實際需要的專案以及必備知識點列舉出來了,按照上面去學習,尋找思路即可。

  • 中秋節和大豐收的關聯?
  • 給你一個機遇讓你去做明星,全方面地打造你,你願意嗎?理由是什麼?