前段時間高考不是剛落下帷幕嘛。每一年高考一結束,怎麼選專業,怎麼填志願就成了熱門話題。git
去年幫老家那邊兩個親戚家小孩參考過志願,今年也接到了老家幾個叔嬸的電話。家長比小孩還急呀,也各類打聽,各類調研的。程序員
去年是一個去了計算機,一個去了師範。今年估計家那邊兩個小孩應該也會填計算機(或相關)吧,學的理科。github
固然這不是說我推薦他們填計算機。我我的始終以爲興趣很重要,可是一問有沒有興趣專業,都說沒啥明確目標,但願填個熱門好就業的。何況如今互聯網這麼發達,小孩們本身一查,也知道這幾年計算機火,而後也詳細調研一些有關計算機的狀況。孩子們關心的就是好很差學,家長關心的就是好很差就業。面試
可是我會建議說衝一衝、穩一穩、保一保。能衝進計算機相關專業固然沒問題,但若是投檔進不了,那通訊/電子也不是不能夠,保底嘛。算法
我至今依然以爲工科類專業是對咱們這些普通家庭出身的理科生比較友好的選擇吧。沒有什麼過高壁壘,你有技術就有機會,學完最起碼有點實用的技術傍身。數據庫
只要你有興趣學,選這個通常沒啥問題。固然這個興趣不是說要特別特別地強,有時候不討厭也是一種興趣。編程
尤爲是計算機相關專業,這幾年的確是工科界的頂流。後端
首先你們都知道工資高。稍微好一點學校出來的應屆畢業生,在北上廣深一畢業年薪拿幾十個基本都沒啥問題。因此學計算機出來必定是能夠知足咱們安身立命,反哺家庭,以及對將來美好生活嚮往的目標。我盤點了一下本身熟悉的同窗也是,通訊/電子/計算機這一塊的,發展得也都還能夠。所以選計算機專業確實也比較迎合市場。緩存
另一個,我的感受計算機的學習門檻好像不算高吧。通常來講理科出身,具有點邏輯思惟,通常都能學得不差。何況計算機的各類學習資源不要太多,開源世界也很豐富,網上都能找到,沒有什麼明顯的學習壁壘,有一臺電腦就能學。並且付出與回報成正比,也不拼其餘的,就純靠技術了。安全
因此可能也正由於這些方方面面的緣由吧,如今報計算機的人實在太多了,那叫一個火。除了高考志願填計算機的,還有轉專業到計算機的,考研跨考計算機的,工做後轉行從事計算機的,甚至包括培訓班培訓計算機的...因此我也會跟他們說壓力和競爭是不小的,要有心理準備。
聊到卷的問題,從兩個最多見的點就能看出來,一是考研,另一個就是找工做的面試難度,我想不少小夥伴可能有親歷體會。
如今考研不只是計算機,但凡熱門一點的工科專業壓力都大。咱們那時候考研多少分?300出頭就有學上。如今看看呢,好點學校的計算機相關專業400分神仙打架的多的很,報的人多,大神也多。
而聊到求職面試。之前背一背八股文,而後刷刷題,找個還行的工做沒啥問題。什麼叫八股文呢?就能夠背的,好比像什麼OOP特性、接口和抽象類的區別、hashmap原理、List和Set區別、Java運行時內存區、Get和Post請求、三次握手四次揮手、OS頁面置換算法...等等,你們可能也背過。
而後刷題,咱們那時候劍指Offer上四五十個題目刷完基本就能夠保個底,LeetCode我記得好像也沒有如今這麼多題目吧。
可是站在當下的時間再看一看面試都問啥。
問底層,深刻到骨髓。像什麼JVM底層原理、JVM調優實踐、JDK源碼、JUC併發包、鎖的實現原理、數據庫底層原理、索引優化、SQL調優、Spring源碼、各類框架的機制,而後還有像什麼集羣、分佈式鎖、緩存一致性...等等一些問題也是被高頻地問起。
而後就是問項目。要麼就是往底層挖,最後也是底層原理,像上面同樣,要麼就是往架構層面上升,好比架構設計、框架選型、鏈路設計、架構擴展...等等。
除了這些還有手撕算法題。如今求職LeetCode沒個幾百道題量,怕是連筆試都很難找到感受吧,面過的小夥伴必定有所感覺。
因此如今自學,包括面試準備的時候,真的不是說背一背八股文,會用個Spring Boot,Spring Cloud就能夠的。比較值錢的兩個方面剛也聊過:
要麼就底層原理:操做系統底層、JVM底層、框架底層、算法原理、源碼的理解和掌握...
要麼就架構思惟:架構設計的能力、框架選型和對比、鏈路的設計和把握、架構的擴容和擴展...
而這些通常是須要理解並實踐的。
何況我的明顯感受身邊的應屆生計算機素養廣泛很高。無論是是面試的時候,仍是工做後觀察身邊的一些新人。除了自己計算機方面思惟很好,學東西賊快以外,並且還特別年輕,精力也旺盛,難頂哦。
因此基於這些,我也會跟家那面填志願的小孩說,隨大流無腦梭哈計算機也不行。想報能夠,首先要有心理準備,能Hold得住壓力,其次就是對這個東西要有點興趣(最起碼不討厭吧),最後還得有很強的自學能力和習慣,否則就算進去也很痛苦的。
而後一個問題就是關於編程難不難的話題?這是老家那邊幾個同窗最近在調研專業的時候所共有的問題。
編程難嗎?其實這個問題真不知道怎麼回答。
我的感受計算機的學習門檻應該不算高吧。都是學理科的,具有一點邏輯思惟通常都還行吧。固然這裏不是說那種學到極致的天才型選手,咱們指的是學個通常,作個普通開發的角度來聊的。
就以最多見的編程工做爲例吧。它對人的思惟能力是有點要求的,其實簡單一點理解,差很少就是分析問題,而後抽象出要素,最後創建模型的思惟過程。若是以爲編程難,或者說代碼無從下手,那大機率可能仍是沒有造成這種思考方式吧。說明首先基礎可能有待增強,另外則是可能鍛鍊得還不夠多,沒有突破那個閾值。
尤爲參加工做後,作的那些系統和各類業務。其實講白了就是把一個個實際需求抽象建模,用合適的數據結構和算法流程把它表示出來,而後輔助於一些框架或者工具,用編程語言把它描述出來,而後通過一系列處理,最後交由計算機執行。
先把功能實現,流程跑通,而後再考慮怎麼才能作得更快,怎麼才能併發更高,怎麼才能更加安全。咱們能夠回想一下,項目裏那些複雜的系統每每不都是這麼演變過來的嘛。
因此不少剛入職的小夥伴所頭疼的一個問題就是說剛入職團隊,剛接觸實際項目,項目太大了,一時半會搞不懂吃不透。
爲啥呢?由於這裏面不少的演進和迭代過程,你並無看到。其實一開始系統沒那麼複雜的,只不事後面迭代了好多個版本,改了不少東西,又加了不少東西。這時候若是沒有比較靠譜的迭代記錄,文檔,或者註釋,的確是很難看懂,太正常不過了。因此這時候只能靠本身多問,多想,多悟,上下文/先後段,由總體到局部,由局部再到整理,就這麼來回反覆摩擦,慢慢就吃透了。
因此有時候想想,好像事情也沒那麼複雜。可是你又想過沒,爲何如今的互聯網開發世界那麼繁榮呢?尤爲以前咱們在梳理像大數據、後端開發那些知識點和學習路線時,涉及到的各類技術點和框架實在太多了。
其實細想一下,它們不少時候都是在作輔助用的。它們的出現不少時候都是爲了應對企業級應用開發的所面臨的的諸如複雜性、代碼質量、可測試性、可擴展性、可維護性等一系列問題。一句話總結,都是爲了更好地工程化迭代。
舉個例子可能更好理解一些。好比作Java後端開發的用Spring框架不少,其實咱們在寫這些Web化服務時,不用Spring也徹底能夠。用樸素的方式也能夠寫,這樣的話不一樣人都本身去造輪子,本身去封裝工具類,封裝本身的工具方法,也沒問題,能完成需求。
可是這時候由於不一樣人的思惟方式不一樣,習慣不一樣,能力也不一樣,你們寫出來的代碼頗有可能良莠不齊,質量不一,那就很難達到企業級開發所講究的那些代碼質量、可測試性、可擴展性、可維護性、可迭代性。這樣寫出來的項目後面可能很差維護,沒辦法長期迭代演進了。
而這些框架它們內部用到了不少的機制,實現了不少的工具類,方法,以及流程,本身也規定了不少約束性寫法,給開發者或暴露API,或暴露接口...其實某一程度上來講均可以理解爲提供了一種約束性編程。你要用個人框架?能夠。那你就得遵照我這邊的遊戲規則(編碼規則)。Spring典型不就是這樣嘛,IoC容器用來幹嗎的?方便管理對象,而後還搞了一堆像什麼切面式編程、接口式編程、聲名式編程...等等,咱們就能夠理解爲一種約束性的編程。這樣才能保證寫出來的代碼,在完成需求的同時,還能便於測試、擴展、維護、甚至便於和其餘技術進行集成,來創造業務價值。
不過寫到這裏,好像扯得有點遠了,時間也不早了,之後有機會再聊吧。
另外最近花了大把力氣,把自用的編程學習資源作了個大整理。
都是純肝貨,目錄以下。
該內容 GitHub https://github.com/rd2coding/Road2Coding 已經收錄,裏面還有我整理的6大編程方向的自學路線+知識點大梳理、個人簡歷、面試考點、幾本硬核pdf筆記,以及個人程序員人生,歡迎star。
整理不易,歡迎支持,下期見!