您需要学习多少Java才能找到第一份工作?

123 篇文章 0 订阅
96 篇文章 2 订阅

Java初中生可能需要知道什么才能获得第一份工作,甚至有资格在一家好的公司中担任实习生的职位?哪些工具可以帮助Java程序员达到新的水平?您应该学习哪些技术,哪些技术最好坚持下去?

这些问题没有标准答案,就像没有一个适合所有人的行动计划一样。一些公司正在努力发展,不断引进新技术并测试该语言新版本的功能,而另一些公司则顽固地坚持旧版本。也有中间选项,也许是大多数。

我经常被问到这个问题,以至于我决定写一篇文章,然后引用它来回答它。另外,它不仅对那些亲自问我的人有用,而且对已经决定(或未决定)将其生活与Java编程联系在一起的每个人都将是有用的。

我使用什么来源回答本文的主要问题?

为了尽可能完整地回答本文的主要问题,我依靠:

  • 我作为高级Java开发人员的经验,曾采访过许多潜在的Java初级人员
  • 我作为导师的经历(或更确切地说,是我学生的经历)
  • CodeGym
    Portal对校友进行的一项调查的结果
    互联网论坛的一些答案

首先:必不可少的Java核心

核心Java通常意味着编程语言的基本基础。它包含以下组件。

Java语法

  • 类,变量和方法
  • 原始数据类型
  • 弦乐 基本运算符
  • 基本结构:循环,分支

Java语法是该语言的一种ABC。学生通过边做边学,就像小孩子学习阅读和写作一样。这里最困难的概念是编程原理,例如循环和分支。对于绝对的初学者来说,它们可能很难,但是通常在编写了一些任务之后,未来的程序员开始对它们有所了解。

92.4%的程序员在获得Java开发人员或Java实习生的第一份工作之前就已经了解Java语法的优劣。其他的7.6%呢?他们在中级水平上就知道了,很幸运得到了实习生的录取通知书。但是,这纯属幸运。每个申请人都必须精通Java语法,而且谢天谢地,它既快速又易于掌握。

面向对象编程(OOP)

Java和OOP几乎是同义词,因为此编程语言中的所有内容都是对象。

如果您习惯了过程编程,那么刚开始重新排列和思考对象样式可能会很棘手。但是,实际上,OOP并不是那么困难。而且,这是一个非常美丽的概念。编写大量代码并同时考虑如何构建对象层次结构很重要。

OOP的主要子主题是类继承,接口实现,数据和行为的抽象,数据和类实现的封装,多态和虚拟方法。

从事Java的第一份工作的大多数人(80.3%)熟悉OOP原则并一直使用它们。

但是,“丰富的知识”有时会根据您的经验而有不同的定义。“我读了有关OOP的文章,并使用了继承和封装。我以为我很了解,但是我意识到我以前似乎知道一些东西,但是不了解细微差别。对抽象水平及其使用方法的真正深刻理解只有在作为一个大型项目的Java培训生时才出现在我身上。”安迪说,他现在是一家国际外包公司的Java大三。

根据CodeGym Portal的调查,有78.8%的Java初级和受训人员在工作中经常使用OOP,不时有12.1%的工作,而7.6%的受训人员很少使用OOP(通常他们会进行单元测试和不同的小任务)。

馆藏框架

表示为单个单元的一组单个对象是一个集合。Java为不同的集合提供了一个集合框架。集合基于流行的数据结构:列表,常规和连接的,集合,哈希图等。因此,在研究馆藏时,最好也对数据结构再熟悉一点。
主要副题:

  • List
  • Set
  • Map
  • ArrayList
  • LinkedList
  • Queue
  • Deque
  • HashSet,HashMap,HashTable
  • TreeSet,TreeMap学习馆藏的主要困难是弄清楚馆藏如何运作以及何时使用哪种结构。它来自实践。另外,在实际工作中的所有众多结构中,只有少数几个被不断使用。作为教程,重新创建您自己的集合版本可能很有用。几乎所有(96.9%)的Java初中和受训人员在第一份工作上都使用收集框架,并且80.3%的受访者在获得第一份工作之前就已经知道其收集的情况良好或出色。
    在这里插入图片描述

异常处理

异常是在执行程序时可能会发生的异常情况。所有异常类都是java.lang.Exception该类的子类型。异常处理机制大大简化了程序中的错误捕获过程。通常,学生很早就开始使用异常,这个话题绝对值得您关注。
主要副题:

  • 异常处理机制
  • 最终尝试捕获
  • 投掷
  • Java中的异常层次结构
  • 已检查/未检查的异常
  • 错误和异常之间的区别
  • 无法到达的捕获块错误
  • 手动抛出异常

每个Java培训生和Java初级人员都在工作中使用异常,并且访问员经常问有关此机制的问题。

Java输入/输出流

Java使用流执行输入和输出操作。流是一种连续的数据流。在Java程序中,您需要经常读取或写入数据。对于初学者来说,这不是最简单的主题,有时它在新手的工作中并不经常使用(它实际上取决于他们从事的项目)。好吧,有22.7%的人从事过Java初级/学员的第一份工作,他们说他们经常使用I / O流,不时使用31.8%,很少使用25.8%。因此,只有不到20%的人在Java开发人员的第一年完全没有使用过它们。

主要副题:

  • 字节流(FileInputStream,FileOutputStream)
  • 字符流(FileReader,FileWriter)
  • 标准流(System.in,System.out)

Java多线程/并发

在这里,我们拥有了最高级的Java核心主题。几乎所有学生都在理解和使用多线程方面遇到困难,但是后来,当他们掌握了使用不同线程的技巧时,禅宗开始了,程序员开始了解这种技术在Java中的实现水平以及其有效性。

但是,如果您觉得很困难,那么多线程是您一开始无需研究的主题。因此,只有12.1%的受访者指出,他们在首次提出要约之前就已经很好地了解了该主题,而31.8%的受访者承认他们根本不了解该主题。接受调查的大多数人(56.2%)表示,他们在开始时就对多线程“有所了解”。因此,在Java初级面试中,多线程可以成为您的竞争优势。由您决定深入研究或获得初步想法。解决一些编码问题,并专注于其他主题。

主要副题:

  • 线程的生命周期(新的,可运行的,等待的,定时的等待,终止的)
  • 守护进程
  • 线程同步
  • 处理线程死锁
  • 线程操作
  • Wait,notify,notifyAll
  • 中断线程
  • Sleep,yield,join

在担任Java培训生或初级开发人员的第一年中,有9.1%的人经常使用多线程,不时有36.4%的人使用过,而39.4%的人很少使用它。

Lambda表达式

Java lambda表达式出现在Java 8中,但是初学者经常忽略此便捷工具。Lambdas扩展了Java,从而使函数式编程概念可用于该语言。Lambda表达式是一个可以创建的函数,不属于任何类,您可以将其作为对象传递或按需执行。只有22.7%的受访者在首次求职前很早就知道过lambda,而48.5%的受访者估计他们对该主题的了解为“接近零”。同时,超过85%的新程序员表示,他们在第一年就使用了lambda表达式。

主要副题:

  • Lambda,单方法界面
  • 匿名接口实现
  • Lambda类型推断
  • Lambda参数
  • Lambda功能主体
  • 从Lambda表达式返回值
  • Lambda作为对象
  • 可变捕获
  • 方法引用为lambdas

因此,我们可以说,对于任何潜在的Java初级甚至学员来说,都必须具备核心Java知识。当然,如果您完全了解所有主题,而多线程和lambda表达式则要少一些,那么您可以得到报价。但是,这些主题可以在您寻找工作时成为您的竞争优势。一样,您很可能需要同时使用两者。

在我的实践中,我遇到了一些只了解基本概念(Java语法和OOP)的人。大多数情况下,他们成为Java培训生,但有时我遇到的人是Java初级技能几乎为零的人。一方面,他们很幸运:他们实现了成为一名程序员的梦想,可以直接从工作中学习。另一方面,雇主很快意识到他们的技能水平很弱,并且很长一段时间以来,他们接受了相同类型的单调任务,这常常令人沮丧。我对这样的程序员的建议是要更快地成长,直到您对所有这些都感到厌倦为止。解决实际问题,请阅读-并进入下一个阶段。

算法和数据结构:可疑

学习任何编程语言中最有争议的问题之一是学生是否应该学习标准的排序和搜索算法。一方坚持认为,所有有效的算法早已被编写并包含在库中。因此,任何人都可以使用它们。

他们的反对者确信,自己编写算法是程序员思考方面的​​绝佳练习,此外,这也是对学生中算法存在的一种考验。我更可能属于后者,尤其是考虑到在Java初级访问中他们经常被要求编写一个或另一个算法,有时甚至是写在一张纸上的事实。尽管算法知识与Java知识本身无关,但我建议所有未来的程序员都致力于该主题。它不会是多余的。

另一件事是,在程序员的实际工作中,您很可能不需要冒泡排序算法等。知道可以在哪个库中找到标准算法将变得更加重要。在调查中,有69.6%的学生声称在获得第一份工作机会之前,他们对分类和搜索算法的了解和编码水平良好且平均。

当我们谈论Java集合时,我们已经解决了数据结构的问题。同样,我认为有必要了解他们的体系结构,以便知道在哪里使用什么以及为什么使用。因此,我经常要求我的学生为这种数据结构编写自己的课程。

同样,在工作时,每个人通常都使用标准数据结构,而不是全部使用。

单元测试

每个优秀的程序员不仅可以测试自己的代码,还可以测试代码,因此,请学习如何为您的代码编写单元测试。有时,新手忽略了倾向于System.out.println验证类型的单元测试(如果您已经尝试编写代码,那么您知道我的意思)。请记住,单元测试比使用控制台输出进行检查要有用得多。单元测试也是公司通常信任新开发人员编写的第一件事。根据调查,有57.5%的受访者在首次成功进行Java相关面试之前使用了JUnit,并且超过83%的受访者在他们的第一个工作年度就已经使用了单元测试。

实用程序库和有用的组件

一些雇主期望未来的程序员了解许多有助于他们工作的工具和库。

  • Servlet是扩展服务器功能的Java软件组件。
  • JDBC是Java应用程序与数据库之间交互的独立于平台的标准。JDBC被实现为JavaSE(标准版)附带的java.sql软件包。
  • log4j是最著名的用于记录消息的库。它使您可以用Java代码编写库调用,然后在不更改已编写代码的情况下灵活地对其进行自定义。
  • 杰克逊/JSON。JSON(JavaScript对象表示法)是一种非常流行的开放标准文件格式和数据交换格式,而Jackson是Java的高性能JSON处理器。

一半以上的受访者在获得第一份与Java相关的工作之前就已经知道这些技术。所有新人在工作中都使用JSON / Jackson,其中大多数人使用JDBC(84.8%)或log4j2(83.3%)。三分之二的受访者在第一年以Java初级和培训生的身份使用servlet。

  • Guava是Java通用库的开源集,主要由Google工程师开发。
  • ApacheCommons是一个庞大的Apache项目,专注于可重用Java组件的各个方面。

在学习时,我建议您花时间在log4j,JSON,JDBC(以及SQL和数据库工具)上。但是,列表和库中的其他技术也可能有用。

设计和建筑模式以及编程原理

设计模式是经过验证的解决方案,可以解决某些特定问题。如果您不认识他们,那么您会令您的未来雇主感到头疼。花时间阅读有关模式并将其应用于实践。对于建筑模式,例如MVC,情况也是一样。我总是要求我的学生使用MVC创建一些程序。它变得更加困难,但是在那之后,他们知道如何使用它。

同样,根据KISS,DRY和SOLID原理,阅读简单易读的代码也将是有益的。老实说,它们很容易理解,但是在实践中使用它们会花费一些时间。这就是为什么,当我面试初级职位的申请人时,我从来没有要求申请人对这些原则有扎实的知识,意识到他们是与实践相伴而生的。

构建自动化工具,应用服务器和非Java

大多数IT专业人员都应该掌握其技术和技能。它们与Java没有直接关系,但我仍会提及它们-在初始级别学习它们并不困难。此外,最好在开始工作之前执行此操作,因为这时您将没有时间为他们服务。

结论
嗯……看起来有点吓人,不是吗?另一方面,如果您喜欢编程,对技术感兴趣并且决心成为一名程序员,那么就不必担心。一步一步地工作,练习,学习,并可能与您同在。这条路将由步行者掌控。

个人Java学习园地

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值