JavaRush /Java Blog /Random-TW /要成為 Java Junior 需要了解什麼,以及如何運用這些知識?

要成為 Java Junior 需要了解什麼,以及如何運用這些知識?

在 Random-TW 群組發布
潛在 Java 開發人員的需求不斷變化且難以跟上。光是了解 Java Core 就足以成為實習生嗎?您需要對 Spring 和 Hibernate 了解多少才能獲得 Java Junior 職位?值得學習資料庫並了解排序和搜尋演算法嗎?由於 JavaRush 學生經常關心這些問題,我們決定向那些已經作為 Java Junior 或在公司實習的 Java Trainees 的畢業生詢問這些問題。請注意,13% 的受訪者很幸運在第一次嘗試時就獲得了 Java Middle 職位,繞過了 Junior 階段。 要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 1受訪者分享了他們需要哪些技術才能通過面試以及他們在第一份 Java 工作的第一年使用了哪些技術。

每個人都需要 Java Core

Java Core 這個術語相當廣泛。這個名稱既指該語言的基本語法,也指多線程這樣的複雜主題。事實上,JavaRush 課程主要是針對 Core 的。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 2Java 語法。語言基礎。所有這些資料類型、運算符、循環和分支。當然,92.4% 的求職者將自己的文法知識評為「良好或優秀」。然而,7.6% 的受訪者成功成為具有一般文法知識的 Java 培訓生。然而,這應該更多地被視為運氣(或受訪者的吹噓:))。當然,每個申請程式設計師工作的人都應該了解該語言的語法。 物件導向程式設計(OOP)。Java 中的一切都是由物件組成的,因此 OOP 可以被認為是該語言最重要的主題之一。物件導向的方法一開始可能看起來很陌生,特別是如果你之前只學過過程語言,但切換到物件並不困難。對於初學者來說最大的困難是抽象層次及其獨立分佈 - 新手程式設計師必須能夠正確創建物件的層次結構,了解介面將負責什麼以及可以將什麼放入抽象類別中,創建繼承梯子等。像往常一樣,這個困難可以透過練習來解決。大多數受訪者,即找到第一份工作的受訪者中的 80.3%,都非常了解 OOP 原則並經常使用它們。在擔任 Java 初級人員和實習生的第一年中,78.8% 的受訪者經常使用 OOP 原則,12.1% 則偶爾使用。7.6% 的聽眾很少使用它們——這些人主要忙於單元測試和各種小任務。也就是說,當然,他們也使用類別或物件(在 Java 中你不能沒有這個),但很少創建類別層次結構。 集合框架。集合是作為整體呈現的各個物件的集合。Java 有一個非常聰明的集合框架來表示集合。集合基於流行的資料結構 - 列表、普通資料結構和連接資料結構、集合、雜湊表。因此,在探索集合時,最好是更加熟悉資料結構。研究集合的主要困難是理解和記住它們是如何運作的。如果您了解它們如何存取元素、從集合中提取元素並將其添加到集合中,那麼您就開始了解在哪裡應用這個或那個結構。它是透過練習而來的。但幸運的是,並非所有大量的集合都在實際工作中積極使用。80.3%的受訪者表示,在收到第一份工作之前,他們對收藏品有很好甚至非常好的了解,幾乎96.9%的初級和實習生在他們的第一份工作中都使用了收藏品。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 3異常處理。異常是執行程式時可能發生的異常情況。所有異常類別都是 java.lang.Exception 類別的子類型。異常處理機制大大簡化了查找程式錯誤的過程。通常,學生很早就開始使用異常,例如在 JavaRush 中。在 JavaRush 中,這個主題是在第一個 Java 語法任務中提出的。幾乎所有獲得第一份工作的 JavaRush 畢業生都知道如何處理異常,並且自然地在工作時使用它們。 Java I/O 流。第一個用 Java 寫的程式通常包含類似 System.out.println(“Hello world”) 的內容。通常,新手知道 println 方法會將一行列印到控制台,但不知道為什麼 System 和 out 在那裡以及它們如何運作。稍後,我們發現 Java 使用流(連續的資料流)執行輸入和輸出操作。線程並不是最容易理解的主題,而且在新手工作中也不經常使用:只有22.7% 的第一份Java Junior/Trainee 工作的人表示他們經常使用I/O 線程,31.8% 的人有時會使用I /O 線程。時間,25.8% - 很少。因此,只有不到 20% 的人在成為 Java 開發人員的第一年裡根本沒有使用過它們。在他們的學習過程中,18.2%的人沒有遇到任何關於流程的特殊困難,並且很了解它們,36.4%的人認為他們的知識很好,但10.6%的人忽略了這個話題。 多執行緒(Java 多執行緒/並發)。也許這是引起新手開發人員最大誤解的話題。儘管Java中的多執行緒實作得很好,但它很難理解,即使編寫簡單的程式(例如多執行緒“Hello,world”)也會出現問題。許多雇主都明白這一點,並且不要求初學者對多線程有深入的了解,期望它會帶來經驗。只有 12% 的受訪者表示,他們在收到第一份錄取通知書之前對該主題有很好的了解,而近 32% 的受訪者承認他們對該主題一無所知。大多數人(56.2%)表示他們對多線程「有一定了解」。因此,如果您現在認為使用線程的困難似乎無法克服,那麼這些數字可能會讓您放心。然而,如果您想在面試中獲得競爭優勢,這個主題可能是您的強項。在實際專案中,初學者也很少被允許使用線程。因此,15.1%的新手程式設計師在工作中根本沒有遇到過Java多線程,39.4%的人遇到過,但很少。通常在工作的第一年,只有 9.1% 的受訪者必須使用多執行緒。 拉姆達表達式。Java 8 中出現了 Lambda 表達式和函數式程式設計的提示,但新手並不常使用這個方便的工具。lambda 表達式是一個可以建立的函數,不屬於任何類,您可以將其作為物件傳遞或按需執行。在受訪的畢業生中,只有 22.7% 在收到第一份工作之前就很了解 Lambda 表達式,48.5% 的人認為自己對該主題的了解「接近於零」。同時,超過 85% 的新程式設計師表示他們在第一年就使用了 lambda 表達式。公平地說,我們指出,了解該主題的人比例較低,可能是因為在 JavaRush 中,lambda 表達式迄今為止僅在新的Java Syntax Pro任務和文章中出現。因此,我們可以有把握地說,核心 Java 知識對於任何潛在的 Java Junior 甚至 Trainee 來說都是必要的。當然,有些主題,例如多線程,稍微了解一點是可以接受的,但是 Java 語法、OOP 和集合應該牢牢地紮根在您的意識中。

演算法和資料結構

關於排序和搜尋演算法的研究一直存在爭論。一方面,最好的演算法早已被編寫出來並包含在所有流行程式語言(包括 Java)的函式庫中。而且它們可以合法使用,而無需編寫自己的程式碼。然而,培訓程式設計師的專家仍然建議每個新手開發人員透過編寫所有這些氣泡演算法、合併、二分搜尋等來訓練自己的大腦。首先,這些演算法是對程式設計師技能(即不是知識,而是技能)以及一個人對程式設計原理的理解的試金石。如果你的大腦已經很好地適應了這種工作,那麼你將相對容易地編寫演算法。然而,你應該記住:你需要精確的演算法來訓練你的大腦......並且為了通過面試:進行面試的腐蝕性高級開發人員非常喜歡透過要求編寫這個或那個演算法來折磨申請人。但在他們的工作中,大多數(48.5%)使用標準庫演算法,有效且經過驗證,而 16% 的受訪者在作為程式設計師的第一年根本沒有使用排序。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 469.6%的畢業生表示,在收到第一份工作之前,他們對排序和搜尋演算法有很好的了解,並且可以自己編寫。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 5當我們談論 Java 集合時,我們已經觸及了資料結構的主題。是的,最好理解它們,以便知道在哪裡應用以及應用什麼結構。按照圖書館資料結構的形象創建自己的資料結構是一個很好的練習,可以幫助您更好地理解它們。例如,您可以嘗試編寫自己的 ArrayList 版本或提出自己的單鍊錶(Java 中常見的 LinkedList 是雙向鍊錶)。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 6新手程式設計師在工作時主要使用標準資料結構。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 7

單元測試

JUnit 函式庫負責 Java 中的單元測試。事實上,您幾乎可以在訓練一開始就開始單元測試。至少,當您承擔第一個獨立項目時,即使是一個非常小的項目,您最好已經精通這個工具。編寫單元測試並不那麼困難,儘管存在一些細微差別。學習 JUnit 不會花費太多時間,但了解它的好處是巨大的。您將能夠透過測試覆蓋您自己和其他人的程式碼。很多時候,新手的任務是為同事編寫單元測試,因此這在他們的新工作中可以直接發揮作用。57.5% 的受訪者表示,他們在第一次成功的 Java 面試之前使用過 JUnit,超過 83% 的受訪者在第一年就已經使用過單元測試。

實用程式庫、GUI 和有用的元件

我們詢問 JavaRush 畢業生對多種工具的熟悉程度,其中一些工具已在我們的課程中介紹過。
  • Servlet 是擴展伺服器功能的 Java 軟體元件。
  • JDBC 是一種獨立於平台的標準,用於 Java 應用程式和資料庫之間的互通性。JDBC 作為 java 套件實作。sql 包含在 Java SE(標準版)中。
  • log4j 是最著名的訊息日誌庫。它允許你用java程式碼編寫函式庫調用,然後靈活地自訂它,而無需更改已經編寫的程式碼。
  • 傑克遜/JSON。JSON(JavaScript Object Notation)是一種極為流行的開放式標準檔案和資料交換格式,Jackson 是 Java 的高效能 JSON 處理器。
所有這些工具都非常有用,並且在工作中經常使用,大多數學生在準備面試時並沒有忽略它們。對於 Jackson 來說尤其如此,72.7% 的 Java 程式設計師職位申請者遇到過 JDBC——超過 78% 的受訪者嘗試過這個程式庫。幾乎每個人在工作中都使用了這些技巧。Java 開發人員並不常遇到 GUI。我們問了一個關於 JavaFX 的問題:只有 18% 的受訪者在工作中遇到這項技術。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 8三分之二的受訪者使用 servlet;少數受訪者在研究期間嘗試過它們。事實證明,一些新的 Java 程式設計師遇到 Apache Commons(一組專注於可重複使用 Java 元件各個方面的程式庫)和 Guava(一組 Java 開源公共庫,主要由 Google 工程師開發)等專案。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 9

架構架

以前,沒有人期望 Java Junior 會了解 Spring 或 Hibernate。但時代在變,如今,即使是見習生,有時也會出現這樣的情況。自己學習這些技術並不容易。即使一切看起來都很清楚,學生們也常常很快忘記事情的真相。有時即使是用 Spring 獨立編寫的應用程式也不是萬能的。只有積極的工作才會有幫助。然而,在一次成功的面試之前,三分之一的受訪者對Spring有很好的熟悉程度,45.5%的人對它的了解程度一般。Spring boot 的情況有些糟糕(36.4% 根本不知道),而接受調查的 JavaRush 畢業生中,近 44% 的人表示他們對 Hibernate 有很好的了解。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 10同時,在工作時,幾乎 88% 的新程式設計師使用了主要的 Java 框架,Spring Boot - 83%,Hibernate - 81%。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 十一點

建立自動化工具和應用程式伺服器

大多數受訪的 JavaRush 畢業生都嘗試過與專案建構者合作。最常見的是 Maven(40.9% 在實踐中嘗試過,另外 30.3% 不時使用它,12.1% 在學習期間不斷使用它)。在使用 Maven 時,我遇到的是 72.7%(經常)、7.6%(有時)和 3%(很少)。至於Gradle,情況就更糟一些。只有 22.7% 的人練習過該收集器,而且大多數人剛剛嘗試過該技術。幾乎一半的受訪者在工作中使用 Gradle。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 12螞蟻早已失去了它的地位,這反映在它在我們畢業生中的受歡迎程度:只有 3% 的受訪者曾對它進行過修改。回答問題的人中有 12% 曾與他合作過。Tomcat 是應用程式伺服器中的領先者;超過 77% 的受訪者在研究中發現了這一點,11% 的人嘗試過 GlassFish,12% 的人嘗試過 JBoss。伺服器在已經工作的人中的受歡迎程度看起來相似。只有 31.8% 的求職者沒有使用 Tomcat 的經驗。此外,JavaRush 畢業生在擔任程式設計師的第一年,嘗試過 WebSphere、Jetty、Netty、Wildfly、Weblogic 等伺服器。要成為 Java Junior 需要了解什麼,以及如何運用這些知識? - 13

還有什麼?

絕大多數受訪者甚至在找到第一份工作之前:
  • 了解 HTML、CSS 和 JavaScript;
  • 使用資料庫,了解 SQL;
  • 幾乎每個人都使用 Git 和 GitHub;
  • 嘗試使用純 XML。
所有這些技術對他們進一步的工作都有用。預設情況下,Java 程式設計師或其他任何人都應該熟悉上述所有內容。這是熟悉,而不是深入的知識。因此,我們建議有時暫時離開 Java,透過研究這些技術來拓寬您的視野。此外,一些回答問題的人指出,在面試時,他們應該具備設計模式、架構模式的知識,至少是理論知識,以及良好的程式設計方式(所有這些 KISS、DRY、SOLID)。然而,在訪談中,大多數情況下,只有定義就足夠了:進行訪談的人都清楚,對這些事情的真正理解只有透過不斷的練習才能實現。它們對你的工作有用嗎?當然它們很有用。

結論

我們希望您沒有因為必須學習的技術數量而感到太害怕。並非所有這些都需要徹底了解,而且弄清楚這一切也很有趣。你決定成為程式設計師並不是無緣無故的,對吧?因此,繼續學習 Java 並保持動力。祝你好運!PS如果你已經找到工作,想談談自己的經歷,歡迎留言!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION