當有人開始學習如何編程時,無論是單獨學習還是通過在線課程,強調某些領域並構建所有內容都非常重要。在本文中,我們展示了我們的結構——面向初學者的 Java 任務,並指出了CodeGym在線編程課程中代表了多少特定類型的任務,以及有用的鏈接。
練習語言句法
這些是面向初學者的第一個 Java 編程任務——基礎——從“Hello, World”到循環和數組。CodeGym 有很多:它們特別集中在Java 語法任務的前六個級別。您不太可能需要在其他地方尋找更多。我們當然有足夠的能力來掌握它們。更重要的是,當您完成任何更困難的任務時,您會自動複習語法。但是如果你突然發現自己有需要,任何一本面向初學者的 Java 教科書都包含類似的問題。但與 CodeGym 不同的是,這些練習冊不會進行即時任務驗證。練習集合
集合是新手程序員在學習中遇到的第一個“嚴肅”話題。專門針對 Java 集合的初學者任務在 CodeGym 上也有很好的表現——在Java 語法任務的第七和第八級。在這裡,學生將首先了解 Java 集合框架,並將稍微使用 Set、List 和 Map 接口以及它們的一些實現。但是,在這個階段,您只會得到對這個有用工具和簡單 Java 任務的介紹。在Java Collections任務期間,您將更徹底地研究集合。您可以看到這個主題有多麼重要——整個任務都以它命名!練習有例外
Java 提供了一種處理異常情況的特殊機制,顯著簡化了“捕獲”應用程序錯誤的過程。但是要充分利用它,您需要弄清楚異常處理在 Java 中是如何工作的。CodeGym 有很多這樣的任務。您甚至會在第一個任務 — Java 語法中遇到它們。練習類型轉換
這組任務當然可以歸類為語法上的基本任務。然而,以我們的愚見,人們往往低估了這些任務,新手在其中掙扎。這就是我們打破常規的原因:我們不像其他人經常做的那樣,在一開始就研究原始類型轉換任務。相反,我們稍後再解決它們——在 Java 語法任務的末尾。然後,當我們在Java Core任務中學習 OOP 時,我們將學習轉換非原始類型(對象)。CodeGym 有足夠的這些任務。你不需要再看下去了。練習 OOP
OOP 不是最困難的主題,但它非常重要。它隱藏了許多面試官喜歡用來抓住潛在初級開發人員的微妙之處。CodeGym 課程包含面向初學者的實用編程任務,可幫助您理解面向對象的哲學。但要真正理解 OOP,我們建議您閱讀相關文獻(例如,Cay Horstmann 和 Gary Cornell 的《Core Java》、McLaughlin 的《面向對象的分析與設計》或其他書籍)。練習輸入/輸出流
我們在理解 I/O 流之前很久就開始使用它們了。這就是 Java,我的小螞蚱!解釋 System.out,更不用說 System.in,在您剛開始時是困難且不必要的。但是當您完成Java Core任務時,您所知道的就足以理解這個有點令人困惑的主題,我們不僅討論控制台 I/O,還討論使用文件系統。最主要的是不要跳過這些任務(CodeGym 有很多任務)並始終如一地鑽研理論。腦筋急轉彎
通過“腦筋急轉彎”,我們指的是增加複雜性的任務,與其說是關於知識,不如說是關於以非常規方式應用你所知道的能力的任務。這些是初級 Java 開發人員的常見任務。公司很喜歡在面試的時候問他們,但是在實際工作中,這種腦筋急轉彎的情況並不多見。所以 CodeGym 有一些,但不是很多(您通常會在 Captain Squirrels 的課程中看到這些)。 我在哪裡可以找到腦筋急轉彎?- https://javahungry.blogspot.com/2014/03/java-programming-puzzles-tackling-brainteaser-in-java-interv...
- https://howtodoinjava.com/java-interview-puzzles-answers/
- https://www.codechef.com/
- https://www.codewars.com/?language=java
算法和數據結構
至於算法和數據結構,關於未來的程序員需要多少它們的爭論一直存在。我們將再次回答:它們對於建立正確的心態至關重要,但很少直接用於工作。這是因為 Java 和其他編程語言都有庫,其中包含各種可以想像的排序、搜索等算法的實現。儘管如此,編寫您自己的算法實現仍然非常有幫助,並且可以讓您了解其複雜性。特別是對於那些只在高中學習數學的人。基本上,這些任務可以與腦筋急轉彎互換,唯一的區別是它們都在網上反复描述和解決。您甚至不需要驗證器工具。選擇任何課程,比如普林斯頓大學或加利福尼亞的一所大學。 數據結構練習:多線程
任何人都可以寫出“Hello, World!” 程序。但是如何使用 Java Thread API 從單獨的線程中顯示著名的短語呢?或者顯示“Hello, World!”怎麼樣?在不混淆琴弦的情況下從五個不同的線程中重複五次?多線程將是你學習Java Core時最好的“考驗你的實力”。名為Java 多線程的整個 CodeGym 任務專門針對這個主題,這絕非易事。它包含大量任務,讓學生感受並行處理的“痛苦與美好”。學生的第一個“真實”項目通常包含某種程度的多線程。比如簡單的遊戲。
練習多線程 五位沉默的哲學家坐在一張圓桌旁。他們每人面前擺著一盤意大利面。每個哲學家之間的桌子上都有叉子(左邊一個,右邊一個)。每個哲學家都可以吃或思考深刻的思想。但是他或她必須拿著兩把叉子才能吃東西,即拿起左邊的一把和右邊的一把。“拿起叉子”和“放下叉子”是按順序執行的不同動作。 |
練習泛型
泛化是自動化的本質,所以在某種意義上它是編程的本質。因此,我們不能忽視 Java 中泛型的話題。CodeGym 有涉及泛型的編程任務(主要是在 Java Collections 任務中,從第 5 級開始)。在哪裡可以找到有關泛型的有用練習和材料?- https://docs.oracle.com/javase/tutorial/java/generics/QandE/generics-questions.html
- https://www.geeksforgeeks.org/generics-in-java/
- http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html
- Bruce Eckel 的“Effective Java”
實踐設計模式
在某個時候(CodeGym 課程的三分之二),初級程序員必須開始了解在編程中實現良好形式的規則。我們正在談論正確的代碼格式(更簡單)和設計模式(更難)。CodeGym 有這方面的任務。您將需要更多,您可以在 Elisabeth Freeman 和 Kathy Sierra 合著的“ Head First Design Patterns ”中找到它們。或者您可以考慮如何將設計模式應用到以前解決的任務中。單元測試
對於任何程序員來說,一項經常被錯誤地歸因於測試人員的重要技能是為他或她自己的代碼編寫單元測試的能力。CodeGym 有一些與單元測試相關的任務,但您真的不需要費心搜索更多。當您了解如何編寫單元測試時,養成用它們覆蓋您的代碼(在您自己的項目中,在您的學習中)的習慣。這比使用控制台輸出執行檢查更有幫助,這是一種通常困擾學生程序員的做法。此外,新的初級開發人員在公司的第一件事通常是為其他人的代碼編寫單元測試。練習正則表達式
這是一個簡單的話題,幾乎沒有初學者理解,因為它不熟悉而且他們很懶。花幾天時間研究這個主題,深入了解“正則表達式”,並且比那些沒有這樣做的人有優勢,這真的是值得的。這也很有用,因為正則表達式幾乎與語言無關:如果您學過一次,就可以在任何地方使用它們。CodeGym 沒有任何專用於正則表達式的任務,但有些任務可以在他們的幫助下解決。以下是用於理解此主題的其他資源:- regex101.com — 一個可以在線檢查正則表達式的網站
- Mike Fitzgerald 的“Introducing Regular Expressions”——簡明扼要的入門讀物。
GO TO FULL VERSION