一個3年Java程式員的坎與選擇

来源:https://www.cnblogs.com/ocean234/archive/2018/03/31/8644391.html
-Advertisement-
Play Games

前言 LZ 15年本科畢業,不知不覺3年過去了,去年底裸辭回到成都來發展,年後開始找工作,面試了幾家公司,現在整理整理做個總結,也方便規划下一個3到5年以及和廣大想要進階的Java程式員同胞們共勉。 首先談談裸辭的感受吧:走之前部門很多同事都神秘兮兮的過來問我“小伙子下一家在哪呀?”,LZ很直白:“ ...


前言

  LZ 15年本科畢業,不知不覺3年過去了,去年底裸辭回到成都來發展,年後開始找工作,面試了幾家公司,現在整理整理做個總結,也方便規划下一個3到5年以及和廣大想要進階的Java程式員同胞們共勉。

  首先談談裸辭的感受吧:走之前部門很多同事都神秘兮兮的過來問我“小伙子下一家在哪呀?”,LZ很直白:“回家種田喲”,當然錶面笑嘻嘻,其實內心心理壓力還是有的,而且也在後面的求職過程中印證了這一點:“裸辭是多麼痛的領悟”。

 

失敗的面試

1)京東成都:在智聯招聘上投了簡歷,半個小時不到HR就給我打電話約面試(不得不說京東這個效率還是很厲害,當然物流效率也很厲害)。

  面試是兩個面試官,一個看起來35歲左右(應該是技術骨幹)另一個年輕一點,當然基本所有面試的開場都是自我介紹,然後“骨幹”開口了,“你是來面試的高級噶?”,LZ表示沒有概念(智聯的JD也只是說Java開發)但是沒辦法也只好隨聲附和了一下。

  “骨幹”:“我看簡歷上寫了你們項目也用到了微服務架構,那你說說Dubbo數據傳輸時你們是用的什麼壓縮演算法?”,啊,,LZ有點懵,趕緊解釋說我們是用的公司內部自己研發的一個服務治理框架。。

       “那你們數據壓縮怎麼處理的?”  --“骨幹”毫不放棄希望

   LZ:“我們的服務治理框架只做了服務註冊,發現和治理,服務間的通信協議是用的HTTP,數據報文沒做壓縮。。”  --Dubbo的數據壓縮我真的不知道唉,第一個問題就被問倒。。

  “年輕面試官”:“你們註冊中心怎麼實現的?”,

   LZ:“也是用的ZooKeeper,原理和機制都類似Dubbo,只不過功能上要簡陋很多。。”

  “年輕面試官”:“那你們怎麼保證單點的問題?”

   LZ:“集群”  --是不是答錯了。。

  各自沉默1分鐘後“骨幹”接著問:“問題基礎點的吧,JDK1.8中 HashMap有哪些新特性?什麼情況下HashMap會產生死鎖?”

   LZ:“額,不知道”

  “骨幹”還是不放棄:“那如果Hash表上的拉鏈太長,你怎麼優化?”

   LZ:“調小載入因數,或者優化hash演算法吧。。”

   “骨幹”:“如果就是因為某些原因導致某個拉鏈太長怎麼辦?”  --絕望,平時工作中都只用到1.6 1.7也很少關註這類信息,再次被問倒

  後面還問了很多問題,兩個人輪流問。。像ConcurrentHashMap原理,Netty和Mina,ThreadLocal,垃圾回收器,JVM調優,多線程,怎樣設計一個高併發系統,分散式鎖,Redis集群的hash一致性演算法,Linux命令,Spring IOC,AOP原理和機制,MQ,JS緩存問題等等。

  總結:京東的面試還是很考驗基礎功底和知識面以及深入理解的程度,可惜LZ目前還是太菜,結果也就可想而知了。雖然失敗的滋味很不好受,但是這何嘗不是一種美妙的經歷呢,把失敗帶來的沮喪轉化成進取的動力,促進自己以後的學習和進步。

2)美團點評:在Boss直聘上投的簡歷,面試時間也是上午10點,面試開始,面試官問了幾個Java基礎問題,然後。。

  “說一下HashMap在1.8中有哪些改進?”  --唉,怎麼都愛問這個呢,有了前面的教訓,LZ當然是很慶幸的,現在想想面試官其實想考驗的只是你平時對新知識新技術的關註程度和自我更新自我學習的能力(以後的工作中要註意這些,保持對新技術新知識的渴望)。

  接下來是資料庫基礎,MySQL索引的實現方式,存儲引擎,優化經驗,,  --這部分沒答好

  傳統關係資料庫的ACID,事務隔離級別,資料庫死鎖,死鎖產生的4個必要條件,怎麼避免死鎖

  JVM記憶體模型,volatile關鍵字,指令重排序,調優,垃圾收集演算法,常用設計模式等等

  然後:手寫單例,單鏈表倒數第K元素,青蛙跳臺階。。  --單鏈表的問題忘了做邊界檢查,青蛙的問題由於沒時間了,問我思路,當時緊張也沒想出來,就說是用排列組合或者遞歸。。

  總結:應對女面試官的方法就是好好複習書上的知識點,LZ雖然前段時間也把《Java編程思想》拿來出來再啃了一遍,不過還是沒能背不出來死鎖的必要條件,只是記得A占了B的鎖,B占了A的鎖,然後相互請求等待。。。美團應該是有一套面試題庫,將近90分鐘面試過程問了很多概念性的問題,框架,項目經歷等等已經沒時間問了,感覺這次的面試比較適合應屆的畢業生,對概念性知識有很牢靠的記憶(當然這樣說有點為自己開脫的嫌疑,總歸還是自己基礎不牢靠,面試沒準備好)。

 3)螞蟻金服:其實收到阿裡的電話面試還是很意外,因為LZ認為以目前的渣渣水平肯定是沒機會的,不過好在面試官是個態度很和藹攻城獅,面試問的一些問題也不算很偏,但是LZ也只是把問題回答了出來,沒有表現出亮點來,stop the world,分散式事務,冪等性這一塊答的也不是很好,所以P6P7什麼的就還是不要想了吧。

  還有其他幾家通過的面試經歷LZ這裡就不再講了,前面提到裸辭的感受,特別是在經歷過幾次失敗的面試後這種無形的壓力、惆悵和不知所措才更加讓人刻骨銘心,當然所有好的不好的都是一種經歷,也更加有利於以後對自己的鞭策,現目前在一家創業型的互聯網公司,從做項目轉換到做產品,對軟體開發有了新的體會,不管怎樣總算是定了下來,也可以抽時間好好想想以後的規劃和自己的成長道路。

 

下一個3-5年

  首先回顧前一個3年,LZ一直在做電信核心系統的開發,雖然隨著時間的推移,對整個系統架構,框架技術,業務知識有了更深入的瞭解,但是放眼整個互聯網行業來講自己的知識面和技術局限性就顯露無疑了,通過最近的面試也得到很多體會,高併發,分散式,微服務等等,特別是Paas層的框架,有太多太多可以學的東西了,前面三年左右搖擺不定,沒想清楚自己是要往業務線走下去還是深入技術擴大知識面,現在想想所有的技術都是為業務服務的,業務可能會有五花八門,但是技術的方向卻是很明確的。以前看過京東成都研究院一個大拿寫的一篇文章《逃離局部最優點》https://www.cnblogs.com/mindwind/p/7886278.html,裡面寫的很好,如果你感覺到在一家公司的上升空間(不管是職級還是技術方面)已經被擠壓到自己不能忍受的地步的時候,那麼你就應該好好考慮作為一個局部最優解的下一步的發展道路了。

  下一個3-5年,希望夯實基礎,研究技術專題,研究框架,立足PaaS層向著中間件的方向發展。

 

構建自己的技術棧

  回顧這幾次的面試經歷,作為一名Java程式員,基礎知識是重中之重,不管各種PaaS框架遍地生花,基礎就是基礎,再怎麼強調也都不過分,《Java編程思想》是本很好的書,有空就應該拿出來翻一翻,書上的例題都應該親自敲一敲,接下來是IO/Socket原理,多線程,RMI,reflect,JDK當中的API,JVM等的專題,再就是框架和設計模式:Spring全家桶,ORM,Redis,AOP,Dubbo,FastDFS,JMS等等。

這裡再盜一張大拿的圖:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 優先順序從高到低排列,瀏覽器優先滿足前面的規則 1,!important優先順序最高 2,內聯樣式 3,作者>讀者>瀏覽器 4,優先順序權重加法 id選擇器+100/個 類/偽類選擇器+10/個 元素名+1/個 5,權重值相等則以後出現的為準 ...
  • 在iPhone中調試,大體上與上文 安卓中的移動頁面調試 類似,區別主要是iOS系統中的一些限制,導致某些工具無法使用。 本文基於此,簡要介紹在iPhone中如何調試頁面。 最終可以實現在Mac平臺使用Safari(或結合ios_webkit_dubug_proxy使用Chrome)調試手機中Saf ...
  • 筆者最近在做一個項目的後臺,用到了EasyUI的datagrid控制項,並開啟了行內編輯功能,實際上也就是使用了edatagird這個空間,引用了edatagrid.js,一切似乎都做的順風順水,添加數據、修改數據都沒有問題,然而到刪除數據的時候居然沒有反應,折騰了好幾天也沒有任何進展。截圖如下: 前 ...
  • css: *{ margin: 0; padding: 0; /* 禁止用戶點選網頁內容 */ -webkit-touch-callout:none; -webkit-user-select:none; -khtml-user-select:none; -moz-user-select:none; ...
  • 內容:String Buffer/String Builder方法 + 兩個簡單練習是緩衝區,最後都會轉成字元串處理,有局限性###########方法添加元素: .append()插入元素: .insert(index,value)刪除元素: .delete(start,end)修改元素: .re ...
  • 從零開發項目概述 最近這一直在複習數據結構和演算法,也就是前面發出去的排序演算法 "八大基礎排序總結" , "Java實現單向鏈表" , "棧和隊列就是這麼簡單" , "十道簡單演算法題" 等等... 被虐得不要不要的,即使是非常簡單有時候繞半天,想不明白。 本來這篇博文是想留到我最後Java基礎複習完再 ...
  • 學習目的: 爬蟲有請求庫(request、selenium)、解析庫、存儲庫(MongoDB、Redis)、工具庫,此節學習安裝常用庫的安裝 正式步驟 Step1:urllib和re庫 導入時,沒有回顯,就表示安裝正確,可以正常使用 Step2:requests庫安裝 Step3:selenium庫 ...
  • Makedown === [TOC] 介紹 Makedown的創建者是 "John Gruber" Q:什麼是markdown呢? markdown和html類似是markup language(標記語言)的一種,使用特有標記語法來編排文本格式,然後通過標記語言的解釋引擎[^footnote1],將 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...