当一个人开始自学或通过在线课程学习编程时,定义“活动领域”并将一切系统化非常重要。在本文中,我们介绍了这样一个系统化的 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