当有人开始学习如何编程时,无论是单独学习还是通过在线课程,强调某些领域并构建所有内容都非常重要。在本文中,我们展示了我们的结构——面向初学者的 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