Java

Hire the Top 3% of 自由Java开发人员

Toptal是面向顶级Java开发人员的市场, engineers, programmers, coders, architects, and consultants. Top companies and startups choose Toptal Java freelancers for their mission-critical software projects.

无风险试用,满意才付款.

Clients Rate Java开发人员总数4.5 / 5.0截至2023年11月1日,平均有1286条评论

雇佣自由Java开发人员和工程师

Radek Ostrowski

自由Java开发人员

ThailandToptal的自由Java开发人员 Since September 24, 2014

Radek is a certified Toptal blockchain engineer particularly interested in Ethereum and smart contracts. 在法币领域,他在大数据和机器学习项目方面经验丰富. 他是两次不同的国际IBM Apache Spark竞赛的三连冠得主, PlayStation 4后端的共同创造者, 一个成功的黑客马拉松选手, 并在澳大利亚的会议上发表演讲, Poland, and Serbia.

Show More

Rizwan Rizvi

自由Java开发人员

United StatesToptal的自由Java开发人员 Since June 13, 2018

里兹万以通过清晰的思维克服复杂的挑战而闻名, 创新的方法, 加强组织不同部门之间的沟通. 在他的职业生涯中, 他优化了多样化和分散的IT专业人员团队的工作,并在具有挑战性的环境中始终如一地交付了有利可图的项目.

Show More

Claudio Aldana

自由Java开发人员

United StatesToptal的自由Java开发人员 Since September 12, 2018

Claudio是一位专注于业务成果的经验丰富的IT专家, 还有扎实的工程背景. 他运用数据科学来优化客户满意度, 产品个性化, and customer churn. Claudio is also a certified SharePoint expert and has worked with prominent Microsoft customers, 帮助他们最大限度地提高安全性, performance, and usability.

Show More

Dan Kozlowski

自由Java开发人员

United StatesToptal的自由Java开发人员 Since June 18, 2020

Dan has been an expert in the technology field for 25 years and has collaborated with several large firms, 比如甲骨文和埃森哲, including startups. 他也有机会发展自己的事业. His latest technology focus has been on eCommerce, full-stack web development, and Elasticsearch. Dan有很多机会为客户构建和交付大规模解决方案,同时在他的职业生涯中一直与技术保持联系.

Show More

Keith Ewen

自由Java开发人员

United StatesToptal的自由Java开发人员 Since June 18, 2020

Keith在IT行业有近40年的经验,过去20多年, 使用Oracle数据库和Oracle eBusiness Suite进行设计和开发. He's also delivered presentations at Oracle Open World and Oracle Application User Group conferences. Keith has made individual contributions as well as managing on-shore/off-shore teams of up to ten resources. Keith非常注重细节,总是能提供高质量的产品.

Show More

Viacheslav Zhenylenko

自由Java开发人员

United StatesToptal的自由Java开发人员 Since June 13, 2019

Viacheslav在数据科学和软件工程方面有7年的经验. He is passionate about the insights gained from raw data and enjoys converting them to create exceptional business value. Viacheslav的主要专长是Python,并具有Java和c++的生产经验. 解决数据量大的项目, 他应用了先进的机器学习技术, 比如计算机视觉, NLP, 产品推荐系统, networking data, 经典数据科学.

Show More

Alex Gonzalez

自由Java开发人员

United StatesToptal的自由Java开发人员 Since April 15, 2019

Alex有超过十年的软件开发经验,尤其是网络和移动应用程序. 他领导了包括AT在内的公司的互动项目开发&T, EMC, Legendary Pictures, Hewlett Packard, Foundation Capital, UCLA, Anaheim Ducks, and LA18 Television. 他开发的应用程序曾被TechCrunch和iPod广告推荐. Alex graduated with a degree in Applied Mathematics from the University of California, Berkeley.

Show More

Ken Hoffman

自由Java开发人员

United StatesToptal的自由Java开发人员 Since August 27, 2018

Ken拥有超过20年的独立承包商经验,为他的客户提供应用程序开发服务. 在过去的12年里,他开发了应用程序 .NET platform. Ken提供增值解决方案和完成项目的动力为他赢得了客户的尊重, 形成长期的关系.

Show More

Joseph McNulty

自由Java开发人员

United StatesToptal的自由Java开发人员 Since February 2, 2018

约瑟夫是一位具有很强领导才能的专业人士, 在软件工程方面有丰富经验, 专门研究航天领域的关键任务系统, defense, 和电信. 他在使用各种技术设计和开发复杂的企业web应用程序方面拥有超过20年的经验, 最近的是ASP.NET MVC.

Show More

Fabian Ponce

自由Java开发人员

United StatesToptal的自由Java开发人员 Since January 26, 2018

Fabian是一名DevOps专业人士,从早期创业公司到成熟企业,他都是一名实践经验丰富的个人贡献者, full-time, 以及顾问角色. 他有身兼数职的经验,并在高度监管的环境中工作.

Show More

Luigi Crispo

自由Java开发人员

阿拉伯联合酋长国Toptal的自由Java开发人员 Since December 6, 2019

Luigi是一位经验丰富的云和领导力专家,在各种环境中拥有超过二十年的专业经验. 他对技术和价值驱动的项目充满热情,并且具有很强的适应能力. Luigi已经直接参与了一些推动数字时代的领导者的重大行业转型浪潮.

Show More

现在注册以查看更多资料.

Start Hiring
经常成对

获得额外的专业知识

我们的客户经常将这些额外的服务与我们的自由Java开发人员配对.

A Hiring Guide

雇用优秀Java开发人员指南

掌握Java是一项不小的壮举. 它的扩展类库包含了大量的功能和细微差别, 一般的开发者都忽略了其中的许多内容. 那些掌握了该语言的人可以对您的团队的生产力和系统的性能产生重大的积极影响. 这里有一些有针对性的问题,可以帮助你找到真正的语言大师.

Read Hiring Guide

Java招聘资源

Trustpilot
总体优势

在无风险试用后,98%的Toptal客户选择雇用我们的人才.

Total's screening and matching process ensures exceptional talent are matched to your precise needs.

Start Hiring
Toptal in the press

... 允许公司快速组建具有特定项目所需技能的团队.

Despite accelerating demand for coders, Toptal prides itself on almost Ivy League-level vetting.

Our clients
构建一个跨平台的应用程序,在全球范围内使用
Thierry Jakicevic
构建一个跨平台的应用程序,在全球范围内使用
为游戏制作应用程序
Conor Kenney
为游戏制作应用程序
引领数字化转型
Elmar Platzer
引领数字化转型
挖掘实时数据将改变行业的游戏规则
挖掘实时数据将改变行业的游戏规则
Testimonials

没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.

Brantley Pace, CEO & Co-Founder

Tripcents

我对我们与Toptal的合作经验非常满意. 和我一起工作的专业人员在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.

保罗·芬利,局长

K Dunn & Associates

与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.

瑞安·洛克菲勒首席执行官

Radeeus

Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, 理解我们的愿景, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.

Jason Kulik,联合创始人

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. Toptal为我们提供了一位经验丰富的程序员,他能够立即投入工作并开始做出贡献. 这是一次很棒的经历,我们会马上再来一次.

斯图尔特·波克尼校长

现场专用软件解决方案

我们使用Toptal聘请了一位具有丰富的Amazon Web Services经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这个过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

Photo Kharma

Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. He is competent, professional, flexible, 并且非常迅速地理解需要什么以及如何实现它.

André Fischer, CTO

POSTIFY

我们需要一位能立即开始我们项目的专业工程师. 西马纳斯的工作超出了我们的预期. 不需要采访和追踪专家开发人员是一种非常节省时间的方法,并且让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. Toptal使这一过程变得简单方便. Toptal现在是我们寻求专家级帮助的首选之地.

Derek Minor, Web开发高级副总裁

网络传媒集团

Toptal的开发人员和架构师都非常专业,也很容易共事. 他们提供的解决方案价格合理,质量上乘,缩短了我们的发行时间. 再次感谢,Toptal.

Jeremy Wessels, CEO

Kognosi

我们与Toptal合作非常愉快. 他们为我们的应用程序找到了完美的开发人员,让整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. 我们强烈推荐Toptal,因为它可以快速无缝地找到高素质的人才.

Ryan Morrissey,首席技术官

应用商业技术有限责任公司

我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. 5 stars for Toptal.

Pietro Casoar, CEO

Ronin Play Pty Ltd

与Toptal合作是一次很棒的经历. Prior to using them, 我花了相当多的时间面试其他自由职业者,但没有找到我需要的. 在与Toptal合作后,他们在几天内就为我找到了合适的开发者. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. Highly recommended!

George Cheng, CEO

Bulavard, Inc.

作为一名Toptal合格的前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, Toptal是我唯一愿意推荐的地方. Toptal的所有候选人都是精英中的精英. Toptal is the best value for money I've found in nearly half a decade of professional online work.

Ethan Brooks, CTO

Langlotz Patent & 商标工程公司.

在希格尔的早期, 我们需要一流的开发者, at affordable rates, in a timely fashion. Toptal delivered!

Lara Aldag, CEO

Higgle

Toptal makes finding a candidate extremely easy and gives you peace-of-mind that they have the skills to deliver. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit

Toptal将我们的项目与最优秀的开发人员快速匹配的能力非常出色. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,没有比Toptal更好的了.

劳伦特·阿里,创始人

Livepress

Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

Jeff Kelly,联合创始人

协同解决方案

我们需要一些Scala的短期工作,Toptal在24小时内为我们找到了一位优秀的开发人员. 这在其他平台上是不可能实现的.

Franco Arda,联合创始人

WhatAdsWork.com

Toptal为快速发展和规模化的企业提供不妥协的解决方案. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.

Greg Kimball,联合创始人

nifti.com

如何通过Toptal招聘Java开发人员

1

与我们的行业专家交谈

Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
2

与精心挑选的人才一起工作

几天之内,我们将为您的项目介绍合适的Java开发人员. 平均匹配时间在24小时以下.
3

绝对合适

与新的Java开发人员一起试用一段时间(只在满意的情况下付费), 在订婚前确保他们是合适的人选.

寻找拥有相关技能的专家

Access a vast pool of skilled developers in our talent network and hire the top 3% within just 48 hours.

FAQs

  • total Java开发人员有何不同?

    At Toptal, we thoroughly screen our Java developers to ensure we only match you with talent of the highest caliber. 在200多个中,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. You’ll work with engineering experts (never generalized recruiters or HR reps) to understand your goals, technical needs, and team dynamics. The end result: expert vetted talent from our network, custom matched to fit your business needs.

  • 我可以在48小时内通过Toptal雇佣Java开发人员吗?

    取决于可用性和进度, 您可以在注册后48小时内开始与Java开发人员合作.

  • Toptal Java开发人员的无风险试用期是什么?

    We make sure that each engagement between you and your Java developer begins with a trial period of up to two weeks. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, 我们要么分道扬镳, or we can provide you with another expert who may be a better fit and with whom we will begin a second, no-risk trial.

Share
Java

如何聘请优秀的Java开发人员

The Challenge

今天,在它最初发布近20年后,据报道Java是世界上最伟大的语言 最受欢迎的语言技能,并且遥遥领先(受欢迎程度是亚军PHP的两倍)。.

Java应用程序的使用如此普遍, 简历上不乏会Java的开发人员. 但就像任何技术一样,首先要了解Java,然后 really knowing Java. 那么,如何才能确定谁是真正的Java开发专家呢?

Java mastery, 就像生活中的许多技能一样, 要充分利用它的力量需要时间和健康的好奇心. 因此,如我们的帖子所述 寻找少数精英, an effective recruiting process needs to evaluate many dimensions of a candidate beyond just technical knowledge; attributes such as drive, integrity, 创造力同样是一个软件开发大师的基本属性. 评估候选人的这些方面,然后可以用问题(例如本文中提出的问题)来扩充,以帮助确定哪些人是真正的高质量Java专家.

评估基金会

我们从一些问题开始,这些问题可以帮助评估候选人对一些基本Java范例和概念的理解深度.

问:什么是匿名类? 何时、为何以及如何使用它们? Provide an example.

匿名类是内联表达式, 为了方便,通常是一次性使用的类, 这有助于使您的代码更简洁. 下面的示例实例化了一个new ActionListener 处理与按钮相关的事件:

button.addActionListener(new ActionListener()) {
    公共无效actionPerformed(ActionEvent e) {
        /*响应按钮动作事件*/
    }
});

这是有意义的,因为类不在其他地方使用,也不需要名称. However, 如果将匿名类传递给注册方法, for instance, 您可能需要跟踪它的引用, 以便以后能够注销它. 让我们扩展上面的例子来演示这一点:

ActionListener = new ActionListener() {
    公共无效actionPerformed(ActionEvent e) {
        /*响应按钮动作事件*/
    };
button.addActionListener(听众);

/* some time later... */

button.removeActionListener(听众);

问:什么是抽象类? 何时、为何以及如何使用它们? Provide an example.

Abstract classes 是有用的定义抽象模板方法,具体子类必须实现. 因此,所有具体的子类都保证遵循由它们继承的抽象类中的抽象方法指定的API. 这在某种程度上类似于Java interface 为实现它的所有类指定一个API.

公共用例是指有一类对象具有共同的行为(例如.g., 所有形状都有一个面积), but the details of calculating or performing those functions varies from one object to another. For example:

 公共抽象类Shape {
     公共抽象双区();
 }
 
 公共类Circle extends Shape {
     专用双半径;
     
     公共圆(双半径){
         this.radius = radius;
     }
     public double area(){返回数学.PI * Math.pow(this.radius,2); }
 }
 
 公共类矩形扩展形状{
     私人双宽、高;
     
     公共矩形(双宽,双高){
         this.width = width;
         this.height = height;
     }
     Public double area(){返回这个.width * this.height; }
 }

以下几点值得注意:

  • Abstract classes may not be instantiated directly; only their concrete subclasses are instantiable.
  • 一个类可以被声明为抽象的,即使它没有抽象方法. 这将阻止该类被实例化. This can be useful, for example, if a base class in a class hierarchy has no abstract methods but is not itself meant to be instantiated.

问:比较和对比已检查和未检查的异常. Provide examples.

未经检查的异常 例外是 not 被认为是可恢复的. Java不会因为它们表示异常而强制您捕获或处理它们, 代码中的意外问题,例如 NullPointerException, ArithmeticException and IndexOutOfBoundsException. 也就是说,这些都是你需要修复或预防的问题. 未检查异常都派生自 RuntimeException.

Checked exceptions are exceptions that are 被认为是可恢复的. Checked exceptions must explicitly be specified as part of a method’s API; that is, 可能抛出一个或多个受控异常的方法必须将这些潜在异常列为其方法声明的一部分(Java编译器实际上会强制执行这一点)。.

当调用引发异常的方法时,调用者必须处理(i.e.(捕获)这些异常,或者必须自己抛出它们. For example, 如果方法抛出检查异常, 调用者可能决定忽略错误并继续(吞下它), 向用户显示一个对话框, 或者重新抛出异常,让调用链更上层的方法处理它(在这种情况下,它还必须声明它抛出检查异常)。.

For example:

readFile(文件文件)抛出IOException, MyReadFileException {
    try {
        FileInputStream fis = new FileInputStream(file);
    } catch(FileNotFoundException e) {
        //捕获FileNotFoundException并抛出IOException;
        //所以我们没有在上面的"throws"子句中包含FileNotFoundException. 
        抛出新的IOException();
    }
    
    if (somethingBadHappened) {
        //我们在这里显式抛出自己的MyReadFileException,
        //所以我们把它包含在上面的"throws"子句中.
        抛出新的MyReadFileException();
    }
}

检查异常清楚地传达并强制处理错误条件. 然而,对于开发人员来说,不断地需要包含它也是一种痛苦 try/catch 块来处理来自它们调用的方法的所有已知异常. 尽管在Java中确实允许大量的检查异常, 事情可能会变得有点笨拙. For example:

抛出DataFormatException, InterruptedException, 
	IOException, SQLException, TimeoutException, ParseException {
...
}

因此,有 raging debate for years on whether to use checked or unchecked exceptions when writing libaries, for example. 很多这样的辩论都是如此, 事实上,没有放之四海而皆准的方法, 全部正确答案. 检查异常和未检查异常各有优缺点, 因此,决定使用哪一种主要取决于情况和背景.

问:描述泛型,并提供Java中泛型方法和类的例子.

Java generics 使程序员能够指定, 使用单个方法或类声明, 可以应用于多种不同数据类型的功能. 泛型还提供编译时类型安全性,允许Java编程专家在编译时捕获无效类型.

例如,这里是a generic method that uses 作为泛型类型的占位符:

public  void printArray( E[] inputArray ) {
    //显示数组元素              
    for (E element: inputArray) {        
        System.out.Printf(“%s”,元素);
    }
    System.out.println();
}

The above method could then be invoked with various types of arrays and would handle them all appropriately; e.g.:

//使用Double数组调用printArray方法
Double[] doubleArray = {1.1, 2.2, 3.3, 4.4 };
printArray (doubleArray);

//使用字符数组调用通用printArray方法
字符[]charArray ={‘H’,‘E’,‘L’,‘L’,”O '};
printArray (charArray);

There may be times, though, when you want to restrict the kinds of types that are allowed to be passed to a generic type parameter. For example, a method that operates on numbers might only want to accept instances of Number or its subclasses. 这是在一般情况下使用 有界型参数,其中列出了类型参数的名称,后面跟着 extends keyword. For example:

//确定三个可比对象中最大的
public static > T maximum(T x, T y, T z) {                      
  T max = x; // assume x is initially the largest       
  if ( y.compareTo( max ) > 0 ) {
     max = y; // y is the largest so far
  }
  if ( z.compareTo( max ) > 0 ) {
     max = z; // z is the largest now                 
  }
  return max; // returns the largest object   
}

与泛型方法一样,类的类型参数部分 generic class 可以使用逗号分隔一个或多个类型参数吗. For example:

public class Cell {
  private T val;

  public void set(T val){这个.val = val; }

  public T get() { return val; }

  public static void main(String[] args) {
     Cell integerCell = new Box();
     Cell stringCell = new Box();
    
     integerCell.(新添加整数(10));
     stringCell.add(new String("Hello World"));

     System.out.printf("整数值:%d\n\n", integerCell.get());
     System.out.printf("字符串值:%s\n", stringCell.get());
  }
}

问:什么是多重继承? 它有哪些潜在的问题?为什么Java传统上不支持它? 随着Java 8的发布,这种情况发生了什么变化?

多重继承 是一些面向对象的计算机编程语言的一个特征,其中一个对象或类可以从多个父对象或父类继承特征和功能. 它不同于