JavaRush /Java 博客 /Random-ZH /要成为一名 Java Junior 需要了解什么,以及如何利用这些知识?

要成为一名 Java Junior 需要了解什么,以及如何利用这些知识?

已在 Random-ZH 群组中发布
潜在 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的了解程度一般。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