java關於工作,跳槽之總結

来源:https://www.cnblogs.com/2019lgg/archive/2019/06/20/11057665.html
-Advertisement-
Play Games

關於工作中: 如何展示自己項目中的亮點,技術或者難點: 總結我的經歷和技術倒是可以,但是我做的項目和我會的技術都很平庸,實在找不到亮點怎麼辦? 如果知道了你沒有亮點,也就是知道了你自己欠缺什麼,那麼下次跳槽就努力給自己製造亮點,彌補自己的欠缺就行了。 例如,你可以找一個大數據的工作,這樣你以後就多了 ...


關於工作中:

如何展示自己項目中的亮點,技術或者難點:

總結我的經歷和技術倒是可以,但是我做的項目和我會的技術都很平庸,實在找不到亮點怎麼辦?

如果知道了你沒有亮點,也就是知道了你自己欠缺什麼,那麼下次跳槽就努力給自己製造亮點,彌補自己的欠缺就行了。

例如,你可以找一個大數據的工作,這樣你以後就多了一個大數據的技術標簽,這算是你的亮點。或者你也可以找一個有高併發的項目去做,這樣你以後就有了高併發項目的經歷,這也算是你的亮點。

總而言之,在每次跳槽和麵試的時候,不斷總結自己,深度挖掘自己的亮點,比你去刷那些無聊的面試題,要有價值的多。這樣不僅可以幫助你的現在,還可以幫助你的未來。

關於面試:

面試前不建議去刷題,但是需要總結項目亮點,技術。也需要回顧一下淡忘的知識要點。

面試問題

第一個階段是主語言本身以及它的高級特性,第二個階段是講述自己的項目,併在中間穿插著問題。

1)Java的數據結構相關的類實現原理,比如LinkedList,ArrayList,HashMap,TreeMap這一類的。以下簡單模擬一個數據結構的連環炮。

比如,面試官先問你HashMap是不是有序的?

你肯定回答說,不是有序的。那面試官就會繼續問你,有沒有有順序的Map實現類?

你如果這個時候說不知道的話,那這個問題就到此結束了。如果你說有TreeMap和LinkedHashMap。

那麼面試官接下來就可能會問你,TreeMap和LinkedHashMap是如何保證它的順序的?

如果你回答不上來,那麼到此為止。如果你依然回答上來了,那麼面試官還會繼續問你,你覺得它們兩個哪個的有序實現比較好?

如果你依然可以回答的話,那麼面試官會繼續問你,你覺得還有沒有比它更好或者更高效的實現方式?

如果你還能說出來的話,那麼就你所說的實現方式肯定依然可以問你很多問題。

以上就是一個面試官一步一步提問的例子。所以,如果你瞭解的不多,千萬不要敷衍,因為可能下一個問題你就暴露了,還不如直接說不會,把這個問題結束掉,趕緊切換到你熟悉的領域。

2)Java併發包當中的類,它們都有哪些作用,以及它們的實現原理,這些類就是java.concurrent包下麵的。與上面一樣,咱們也簡單的模擬一個併發包的連環炮。

比如面試官可能會先問你,如果想實現所有的線程一起等待某個事件的發生,當某個事件發生時,所有線程一起開始往下執行的話,有什麼好的辦法嗎?

這個時候你可能會說可以用柵欄(Java的併發包中的CyclicBarrier),那麼面試官就會繼續問你,你知道它的實現原理嗎?

如果你繼續回答的話,面試官可能會繼續問你,你還知道其它的實現方式嗎?

如果你還能說出很多種實現方式的話,那麼繼續問你,你覺得這些方式里哪個方式更好?

如果你說出來某一個方式比較好的話,面試官依然可以繼續問你,那如果讓你來寫的話,你覺得還有比它更好的實現方式嗎?

如果你這個時候依然可以說出來你自己更好的實現方式,那麼面試官肯定還會揪著這個繼續問你。

為什麼說面試的時候要引導面試官,原因就在這了。因為面試官的提問很多時候都是有跡可循的,你如果抓住了他的軌跡,能夠猜到他下麵很可能會問什麼,那你在回答的時候就可以往你想要談的方向去說。這樣面試時就會顯得更加從容,更加的游刃有餘。

3)IO包和NIO包中的內容。這部分裡面NIO會是重點,IO包大部分都會比較熟悉,因此可能會直接略過,直接問你NIO的內容。

IO包和NIO包的內容相對來說不是很多,首先NIO模型要熟悉,特別是其中的selector一定要非常清楚它的職責和實現原理。其實NIO的核心是IO線程池,一定要記住這個關鍵點。有的時候,面試官可能也會問你IO包的設計模式(裝飾器模式),為什麼要這樣設計?

有的面試官還會問你有沒有更好的設計,這個時候如果你不知道請果斷說自己現在的水平有限,想不出來更好的設計,千萬不要信口開河,隨意YY。

4)Java的虛擬機的內容。這部分主要包括三部分,GC、類載入機制,以及記憶體。

一個GC部分簡單的連環炮。

  面試官可以先問你什麼時候一個對象會被GC?

接著繼續問你為什麼要在這種時候對象才會被GC?

接著繼續問你GC策略都有哪些分類?

你如果說出來了,繼續問你這些策略分別都有什麼優劣勢?都適用於什麼場景?

你繼續說出來了以後,給你舉個實際的場景,讓你選擇一個GC策略?

你如果選出來了,繼續問你,為什麼要選擇這個策略?

下麵是關於類載入機制的簡單連環炮。

  首先肯定是先問你Java的類載入器都有哪些?

回答了這些以後,可能會問你每個類載入器都載入哪些類?

說完以後,可能會問你這些類載入之間的父子關係是怎樣的?

你在回答的時候可能會提到雙親委派模型,那麼可以繼續問你什麼是雙親委派模型?

你解釋完了以後,可能會繼續問你,為什麼Java的類載入器要使用雙親委派模型?

你回答完以後,可能會繼續問你如何自定義自己的類載入器,自己的類載入器和Java自帶的類載入器關係如何處理?

再來一個關於記憶體的連環炮。

  首先肯定就是問你記憶體分為哪幾部分,這些部分分別都存儲哪些數據?

然後繼續問你一個對象從創建到銷毀都是怎麼在這些部分里存活和轉移的?

接著可能會問你,記憶體的哪些部分會參與GC的回收?

完事以後,可能還會問你Java的記憶體模型是怎麼設計的?

你回答了以後,還會繼續問你為什麼要這麼設計?

問完以後,還可能會讓你結合記憶體模型的設計談談volatile關鍵字的作用?

你在談的時候,肯定會提到可見性,那麼接著可見性這三個字,還可以繼續問你併發的內容。

基本上Java語言本身以及語言稍微高級點的內容就是以上部分,如果你能把以上四部分瞭解的非常透徹,那基本上Java這部分就沒啥問題了,因為光以上的內容就夠你跟面試官聊很久了。你聊這些聊得久了,自然問你其它問題的時間就會短點。

  你從我寫這些問題的過程也應該能感受出來,很多時候,面試官都是順著一條線一路問下去的,如果你覺得這條線你不熟悉的話,就要及時拐彎,引導面試官去問其它方面的問題。千萬不要一直往下深入,直到自己跳不出來為止,那就尷了個尬了。

  2、講述自己的項目,併在中間穿插著問題

  這一部分是面試過程中必問,也是聊得最久的一個階段。除非你前面的語言部分非常扎實,扎實到面試官問了一兩個小時,依舊沒有探出你對語言本身的瞭解到底有多深。否則的話,你一定逃不過自己的項目這一關,而且一般情況下聊得時間不會太短。

這一部分內容,一般的模式就是你自己去講你做過的項目,然後面試官會冷不丁的讓你去解釋其中某一部分,比如讓你解釋當時為什麼要這麼做,或者問你現在覺得有沒有更好的辦法。而這些穿插的問題,大部分與你的項目所用到的技術有關。而你需要做的,就是充分、再充分的去總結自己做過的項目(尤其是最近的一兩個項目),挖掘出一個甚至N個亮點,以備於到時候可以讓面試官產生眼前一亮的感覺。如果你能達到這種效果的話,基本上離你成功就不遠了。

這部分內容由於和每個人自己的經歷息息相關,因此這裡也沒法列舉可能問到的問題。這篇文章《程式員面經:面試前到底該不該刷題以及面試前該如何準備》是我之前寫的,裡面大概討論了下如何在面試前總結,有興趣的可以去瞭解一下。

3、額外的加分項

上面兩個階段基本上是必問的,還有一些加分項。這些加分項中,有些內容面試官也會問你(比如TCP/IP協議、演算法),但更多的是會先問你瞭解不瞭解,你瞭解的話再繼續聊,不瞭解的話就直接略過了,不至於因為這種問題而直接把你打入地獄。

下麵我列舉一下這些加分項,如果可以的話,這些加分項還是要爭取一下的。

  1、電腦系統原理。

  2、網路通信協議(TCP/IP,HTTP等)。

  3、數據結構與演算法。

  4、著名開源項目的源碼。

  5、你自己有很棒的開源項目。

  6、你的個人博客。

  7、待評論區補充。

這幾項當中,對於前1-3項,如果你之前就比較瞭解,只是由於時間問題忘記了的話,還是可以臨時抱佛腳一下的。至於後面4-6項,就需要你日常的積累了,不是一時半會兒能做到的。如果你平日里沒有積累,那麼後面這三個加分項只能拋棄了。

4、與你職位相關的內容

其實這最後一項是對前面三項的補充,你應該儘量去主攻和你面試的職位相關的內容。比如你面試一個實時計算的職位,那麼你的演算法最好要厲害,對於著名的實時計算開源項目要熟悉,最好閱讀過源碼,而且還要對分散式系統有一定的見解。

因此,這個第4部分沒有具體的內容,只是提醒你,如果你很明確自己的面試職位,最好在面試前準備的時候,儘量朝職位的需求方向靠攏,這樣成功的可能性更大。


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

-Advertisement-
Play Games
更多相關文章
  • 一 sbt的使用 SBT = (not so) Simple Build Tool,是scala的構建工具,與java的maven地位相同。其設計宗旨是讓簡單的項目可以簡單的配置,而複雜的項目可以複雜的配置。 sbt使用了ivy,預設將依賴包保存在用戶目錄.ivy下麵,如果覺得預設路徑不合適,可以把 ...
  • $query1 = Class1::find()->where($where);$query2 = Class1::find()->alias('a')->join('left join', Class2::tableName() . 'as b', 'b.id = a.objId')->selec ...
  • P1020 導彈攔截 鏈接:https://www.luogu.org/problemnew/show/P1020 題意:某導彈攔截系統,它每次所攔截的導彈高度均不能超過前一次所攔截的高度(第一次可以達到任意高度),求該系統最多能攔截幾枚導彈以及最少需要多少個這樣的系統才能攔截所有的導彈。 思路:最 ...
  • 策略模式是針對一組演算法,將每一種演算法都封裝到具有共同介面的獨立的類中,從而是它們可以相互替換。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。 ...
  • 1.range 運算結果: 2. 運算結果: ...
  • 當對象間存在一對多關係時,則使用觀察者模式。比如,當一個對象被修改時,則會自動通知它的依賴對象。觀察者模式屬於行為型模式。 運行結果: ...
  • 定義一個操作中演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構即可重定義該演算法的某些特定步驟。 通俗點的理解就是 :完成一件事情,有固定的數個步驟,但是每個步驟根據對象的不同,而實現細節不同;就可以在父類中定義一個完成該事情的總方法,按照完成事件需要的步驟去調用其每個步驟的 ...
  • 本人剛到大三時前面兩年荒廢了 什麼都沒學到所以打算自學個編程 自己對Java非常感興趣 就打算自學Java 但是一開始看書 有很多看不懂 非常苦惱 也打算過去培訓 但是培訓太貴了 最後打算還是先自學一段時間 不行再去培訓 最後買了一套教程 覺得這套教程非常不錯 老師講解非常細緻 通俗易懂 自學了幾個 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...