當一個人開始自學或透過線上課程學習程式設計時,定義「活動領域」並將一切系統化非常重要。在本文中,我們介紹了這樣一個系統化的 Java 初學者任務,顯示在學習程式設計JavaRush的線上課程中如何全面地呈現特定類型以及有用的連結。
在哪裡可以找到謎題:
語言文法問題
基礎知識,初學者的第一個 Java 程式設計任務 - 從“Hello World”到循環和數組。JavaRush 上有許多這類內容:它們特別集中在前六個層級的Java 語法任務中。你不太可能需要尋找任何額外的資源來吸收它們——這裡有足夠的資源。此外,當解決任何更複雜的問題時,您會自動重複語法。但如果您突然需要它們,任何針對初學者的 Java 問題書都包含類似的練習。只是在這些習題書中不會像 JavaRush 那樣進行即時檢查。收集任務
集合是新手程式設計師在學習過程中遇到的第一個「嚴肅」的話題。針對初學者的 Java 問題,專門針對集合,在 JavaRush 上也得到了廣泛的體現 - 在Java 語法任務的第七和第八級。在這裡,學生將第一次了解 Java 集合框架,使用 Set、List 和 Map 介面及其一些實作。然而,在此階段您只會熟悉這個有用的工具和簡單的 Java 任務。在Java Collections探索期間將對集合進行更徹底的研究。你看這個物體有多重要,因為整個任務都是以它命名的!異常問題
Java 中有一個特殊的機制負責處理異常情況,這大大簡化了程式中錯誤的「捕獲」。但為了充分使用它,您需要了解 Java 中異常處理的工作原理。JavaRush 中有很多這樣的任務,甚至可以在第一個 Java 語法任務中找到它們。類型轉換問題
當然,這一組可以歸類為基本文法任務。然而,以我們的愚見,此類任務常常被低估,並且初學者在這些任務上舉步維艱。因此,讓我們遠離模板:我們不是像通常那樣從一開始就學習「基本類型轉換」主題的 Java 初學者任務,而是稍後 - 在第一個 Java 語法任務結束時。然後我們將透過學習Java Core任務中的 OOP 來學習如何轉換非原始類型(物件) 。JavaRush 中有很多這樣的任務;您無需尋找任何額外的東西。理解 OOP 的任務
OOP 不是最困難的主題,但它極為重要。此外,它還包含許多面試官喜歡用來捕捉未來「後輩」的微妙之處。JavaRush 課程包含初學者的實用程式設計問題,將幫助您理解物件導向的方法。然而,要真正理解 OOP,我們建議閱讀有關該主題的文獻(例如 Kay Horstmann、Gary Cornell 的 Professional's Library、McLaughlin 的物件導向分析和設計或其他書籍)。I/O 執行緒上的任務
我們早在理解 I/O 流之前就開始使用它們了——這是 Java,寶貝,向新手解釋 System.out 和 System.in 是很困難的,而且在第一階段沒有必要。但在Java Core探索期間,知識足以理解這個有點令人困惑的主題,我們不僅討論控制台輸入/輸出,還討論使用檔案系統。最重要的是不要跳過這些任務(JavaRush 中有很多這樣的任務),並一致地理解理論。謎題
我們所說的「謎題」是指複雜性增加的任務,這些任務不需要太多知識,而是需要以非標準方式應用知識的能力。這些都是 Java Junior 的典型任務——它們在面試中很常見,但在實際工作中,這種意義上的難題並不常見。這就是為什麼 JavaRush 中有這樣的人,但數量不是很多(通常在 Captain Bobrov 的課堂上)。- http://acm.timus.ru/problemset.aspx?space=1&tag=tricky
- https://tproger.ru/category/problems/
- https://www.codechef.com/
- https://www.codewars.com/?language=java
演算法和資料結構
關於演算法和資料結構關於未來程式設計師對它們的需求程度一直存在爭議。我們將再次回答:對於思維的發展 - 它們是需要的,直接用於工作 - 很少。因為對於 Java 和其他語言來說,已經用所有已知的排序、搜尋和其他演算法的實作編寫了函式庫。然而,創建自己的演算法實作非常有用,加深對演算法複雜性的理解也非常有用。特別是對於在學校只學數學的人來說。原則上,這些任務都穿插著謎題,唯一的區別是它們都在網路上被多次描述和解決。您甚至不需要驗證器來進行驗證。選擇任何課程,例如普林斯頓大學、他們來自加州的同事或Stepic 的課程。順便說一下,我們在JavaRush上翻譯的CS50課程中,討論了幾個重要的演算法和資料結構。我們強烈建議觀看 2-5 級的影片並用 Java 實現任務。 圖題: 資料結構任務:多執行緒
任何人都可以寫一個列印「Hello World」的程式...如何使用 Java Thread API 以便從附加執行緒列印這句著名的片語?這樣它就可以從五個不同的線程打印“Hello world”五次,並且行不會交替?.. 多線程是學習 Java Core 時真正的“實力測試”。JavaRush 上的一整個任務專門針對這個非常困難的主題,稱為Java 多線程,它包含大量任務,讓學生能夠感受到並行進程的「痛苦和美麗」。通常,學生的第一個「真正」專案或多或少涉及多線程。例如,簡單的遊戲。
多執行緒任務 五位沉默的哲學家坐在圓桌旁。他們每人面前都放著一盤義大利麵。叉子放在桌子上每個哲學家的左邊和右邊(在他們之間)。哲學家要嘛吃飯,要嘛思考。此外,他只有拿著兩把叉子才能吃東西──一把放在他的右邊,一把放在他的左邊。「拿起叉子」和「放下叉子」是按順序執行的單獨動作。 |
泛型任務
泛化是自動化的本質,從某種意義上來說,就是程式設計。因此,Java 中的泛化或泛型主題也不應該被忽略。JavaRush 具有一般程式設計任務(主要是在 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
- Joshua Bloch 所寫的《Effective Java》一書
設計模式任務
在某個階段(大約 JavaRush 課程的 2/3),初級程式設計師需要開始仔細研究程式設計中的良好禮儀規則。我們正在討論正確的程式碼格式(這更容易)和設計模式(這更困難)。JavaRush 有這樣的任務。還需要其他的 - 例如,可以在《Java》一書(第 4 部分)中找到它們。程式方法» Blinov 和 Romanchik。或考慮如何將已經解決的問題放入模板中。單元測試
任何程式設計師的重要技能(通常被錯誤地完全歸因於測試人員)是為自己的程式碼編寫單元(或單元)測試。JavaRush 有一些單元測試任務,但您真的不應該費心去尋找新的任務。一旦你弄清楚如何寫測試,就養成用單元測試覆蓋程式碼的習慣(在你自己的專案中,在教育任務中)。這比使用控制台輸出進行檢查有用得多,而這是學生程式設計師往往會遇到的問題。此外,通常公司委託「初級人員」做的第一件事就是為別人的程式碼編寫單元測試。- 單元測試傻瓜- Habr 的一篇有用的文章,之後就會清楚為什麼需要單元測試
- Junit - 測試人員的 Java - Yuri Tkach 的影片教學
正規表示式問題
這是一個簡單的話題,幾乎沒有一個初學者能理解,因為它不尋常而且很懶。事實上,值得花幾天時間研究這個主題,了解「常客」並比那些沒有這樣做的人獲得優勢。這也很有用,因為它們幾乎獨立於程式語言:學習一次,就可以在任何地方使用它。JavaRush 中不存在專注於正規表示式的問題,儘管有些問題可以使用正規表示式來解決。這裡有一些用於理解該主題的額外資源:- Java 中的正規表示式- Jeff Friesen 文章的翻譯
- 測試正規表示式- 您可以在線上測試正規表示式的資源
- Mike Fitzgerald 正規表示式是一個簡短的教學。
GO TO FULL VERSION