金色九月,那些曾經難倒你的面試真題

前言

九月旺季已經來臨,曾經什麼時候,在17年的九月,通過再三考慮,我決定跳出一份幹了四年且比較安逸的開發工做,當時下定決心,選擇跳槽。最後跟着諸多農碼一塊兒涌進了一段爲期兩個月的面試高峯期。可是在選擇跳出後,好多人都問我:「阿光,如今不是作的好好的麼,怎麼忽然間就選擇離職了,再說了,如今外面的工做也很差找啊,並且在這裏薪資也還不錯,爲啥要走?」當時,面對這樣的問題,我只用了幾個字給回覆他們了:「我是作開發的,但如今的工做不是我想像的那種,我不要在天天作哪些業務代碼了,我要跳出溫馨區,我要迎接新的挑戰。」java

在這狂熱的九月裏,個人簡歷投了無數個,也面試好幾家不錯的一線互聯網公司,但最後都沒有面上,最後,仍是無心間經過一個羣的渠道,認識了幾位大牛,最後報名,獲取內推機會,最後通過努力,成功面入狗廠。算起來我仍是挺幸運的。程序員

如今也是九月,如今回味起來,那時候面試的路上也是蠻艱辛的。最近這幾天我抽空整理了一下17年的面試經驗,相信這些面試經驗對那些想跳出溫馨區,近期想換工做的碼農們,這些面試經驗,但願對大家有所幫助。——後面我還總結了個人工做心得。面試

源碼分析真題

  1. 你有沒有用過Spring的AOP? 是用來幹嗎的? 大概會怎麼使用?
  2. 說說你對Java註解的理解
  3. 什麼是依賴注入?什麼是控制反轉(IOC)? 在 Spring 中,有幾種依賴注入方式?
  4. 工廠模式你知道哪幾種?你用過哪幾種?每一種的用法知道麼?
  5. 在 Spring 中,有幾種配置 Bean 的方式?
  6. SpringMVC中RequestMapping能夠指定GET, POST用法麼?怎麼指定?
  7. SpringMVC若是但願把輸出的Object(例如XXResult或者XXResponse)這 種包裝爲JSON輸出, 應該怎麼處理?

clipboard.png

分佈式真題

一、說說HashMap和Hashtable的區別 算法

二、說一下實現一個保證迭代順序的HashMapspring

三、說一說排序算法,穩定性,複雜度編程

四、說一說GCspringboot

五、JVM如何加載一個類的過程,雙親委派模型中有哪些方法?性能優化

六、 TCP如何保證可靠傳輸?三次握手過程?數據結構

七、大家用什麼Redis客戶端? Redis高性能的緣由大概能夠講一些?架構

八、你熟悉哪些Redis的數據結構? zset是幹什麼的? 和set有什麼區別?

clipboard.png

微服務真題

一、什麼是微服務?你知道有哪些框架?用過哪些框架?

二、springCloud和dubbo 有哪些區別?

三、什麼是微服務熔斷?什麼是服務降級?

四、springboot和springcloud,請你談談對他們的理解?

五、你所知道的微服務技術棧有哪些?請列舉一二

六、說說 RPC的實現原理

七、說說 Dubbo的實現原理

clipboard.png

併發編程真題

一、併發瞭解麼?說說看你對併發的理解

二、什麼是線程?線程和進程有什麼區別?如何在Java中實現線程?

三、死鎖與活鎖的區別,死鎖與飢餓的區別?

四、你知道在java中守護線程和本地線程區別麼,說說你的見解?

五、Java中用到的線程調度算法是什麼?

clipboard.png

性能優化真題

一、JVM內存分哪幾個區,每一個區的做用是什麼?

二、如和判斷一個對象是否存活?(或者GC對象的斷定方法)

三、簡述java垃圾回收機制?

四、java中垃圾收集的方法有哪些?

五、如何自定義一個類加載器?你使用過哪些或者你在什麼場景下須要一個自定義的類加載器嗎?

六、作gc時,一個對象在內存各個Space中被移動的順序是什麼?

七、你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理 過程當中有哪些收穫?

clipboard.png

上面就是個人面試筆記記錄,這幾個面試點應該是面試比較喜歡問的了,特別是分佈式和JVM這些,若是想進大廠且薪資高的話,這兩個知識點是必學要弄清楚的。還有就是你的我的看法了,這些都是很是重要的了。廢話很少說,你們往下看個人近期總結學習心得,繼續往下看乾貨...........

(若是想和做者同樣系統化的學習面試真題後面的架構體系圖,你們能夠加文章末尾的羣號,裏面有學習資料,加羣備註便可領取。我只能幫大家到這裏了。我也在羣裏,但願和你們共同窗習進步。)

程序員應有的幾個階段

  • 第一階段----三年

我認爲三年對於程序員來講是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人。這一階段,咱們走出校園,邁入社會,成爲一名程序員,正式從書本上的內容邁向真正的企業級開發。咱們知道如何團隊協做、如何使用項目管理工具、項目版本如何控制、咱們寫的代碼如何測試如何在線上運行等等,積累了必定的開發經驗,也對代碼有了必定深刻的認識,是一個比較純粹的Coder的階段。

  • 第二階段----五年

五年又是區分程序員的第二個門檻。有些人在三年裏,除了完成工做,在空餘時間基本不會研究別的東西,這些人永遠就是個Coder,年紀大一些勢必被更年輕的人給頂替;有些人在三年裏,除了寫代碼以外,還熱衷於研究各類技術實現細節、看了N多好書、寫一些博客、在Github上分享技術,這些人在五年後必然具有在技術上獨當一面的能力而且清楚本身將來的發展方向,從一個Coder逐步走向系統分析師或是架構師,成爲項目組中不可或缺的人物。

  • 第三階段----十年

十年又是另外一個門檻了,轉行或是繼續作一名程序員就在這個節點上。若是在前幾年就抱定不轉行的思路而且爲之努力的話,那麼在十年的這個節點上,有些人必然成長爲一名對行業有着深刻認識、對技術有着深刻認識、能從零開始對一個產品進行分析的程序員,這樣的人在公司基本擔任的都是CTO、技術專家、首席架構師等最關鍵的職位,這對於本身絕對是一件榮耀的事,固然老闆在經濟上也毫不會虧待你。

我認爲,隨着你工做年限的增加、對生活對生命認識的深刻,應當不斷思考三個問題:

  1. 我到底適不適合當一名程序員?
  2. 我到底應不該該一生以程序員爲職業?
  3. 我對編程到底持有的是一種什麼樣的態度,是夠用就好呢仍是不斷研究?

最終,明確本身的職業規劃,對本身的規劃負責併爲之努力。

如何成爲一名優秀的程序員

1.願意學習新技術

隨着技術的不斷進步,咱們學到和實施的技術會很快地過期。因此,做爲一個程序員,你就須要更新你的技能,保持與時俱進。市場上出現的所謂新技術一般由一些進程和語法變化而構成,但邏輯是相通的,因此你能夠很快地掌握它。

2.調試技巧

程序員不但須要建立代碼,並且當軟件不按預期方式工做時,程序員還必須可以快速而有效地解決問題。

所以,與其更改全部代碼,還不如在建立程序時製做適當的流程文檔,以便你能夠快速檢查代碼並儘快找到問題。製做正確的文檔能夠方便你快速調試程序,而不浪費時間。

3.解決問題的技巧

當一名普通的程序員得到項目/模塊時,他們會直接寫代碼。但一名成功的程序員會試圖找出代碼出現問題的根源,並通知團隊領導或項目負責人。由於有時在文檔化項目需求並啓動項目後,或者甚至在完成項目後,咱們纔會在項目中遇到一些問題。因此最好在出現問題以前先找到問題。

此外,快速地找到解決問題的方法。

4.對工做的熱情

咱們的工做時間大多爲朝九晚五,可是當你對工做迸發激情時,那麼不要到了休息日就將工做束之高閣。一直工做直到完成它。固然,個人意思不是說若是你沒有解決方案,還得整天垂頭喪氣對着電腦,個人意思是若是你已經接近於完成的時候,那麼索性一氣呵成搞定吧。

你的經理或高層將會欣賞你的工做,而且當你有一個良好的環境時,你的激情將會愈加高昂。

另外,在沒有工做的時候也不要無所事事。不妨嘗試構建一些新的應用程序,如遊戲,拼圖,聊天應用程序等,這將有助於使你更加熱愛你的工做。

5.懶惰…個人意思是更高效!

當有不少任務而且快沒有時間來完成項目的時候,這時只有懶惰的程序員才能找到更好和最快的解決方案,由於他很是瞭解如何才能事半功倍。

若是你想找到作事的最好方式,那麼就去問懶惰的人;不少時候這些所謂的懶人會找到最好、最快和最有效的方法,由於他們總在試圖尋找更高效的路徑方法。

你們以爲文章對你仍是有一點點幫助的,你們能夠點擊下方二維碼進行關注。 《Java爛豬皮》 公衆號聊的不只僅是Java技術知識,還有面試等乾貨,後期還有大量架構乾貨。你們一塊兒關注吧!關注爛豬皮,你會了解的更多..............

相關文章
相關標籤/搜索