C#

Hire the Top 3% of Freelance C# Developers

Toptal是一个面向顶级c#开发人员的市场, engineers, programmers, coders, architects, and consultants. 顶级公司和初创公司可以雇佣专职(全职), hourly, 或者兼职的c#自由职业者,用于他们的关键任务软件项目.

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

雇佣自由的c#开发人员和工程师

Rory Woods

Freelance C# Developer

United StatesToptal的自由c#开发人员 Since June 5, 2014

Rory是一名软件顾问,提供满足企业需求的解决方案. 他带来了技术技能和经验,不仅指导团队如何构建,还指导团队构建什么. 他在微软web堆栈方面拥有丰富的经验,包括ASP.NET MVC、Web API、SQL Server和Azure.

Show More

Rizwan Rizvi

Freelance C# Developer

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

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

Show More

Dan Napierski

Freelance C# Developer

United StatesToptal的自由c#开发人员 Since April 28, 2016

Dan是一名专注于区块链技术应用的软件架构师和技术专家. 他拥有多年的专业咨询服务经验,为从初创公司到跨国公司的客户提供服务. 他擅长将严格的测试和防弹代码引入棘手的工程挑战. 他在人工智能的许多方面都有深厚的专业知识, blockchain, machine learning, and automation.

Show More

Cheryl Hoskins

Freelance C# Developer

United StatesToptal的自由c#开发人员 Since February 4, 2016

谢丽尔是一名具有强大沟通技巧的开发人员,她寻求提供令客户满意的软件解决方案. 她喜欢使用React、Node.js, REST APIs, GraphQL, SQL, MongoDB, 和JavaScript最近准备开始把她的技能为你工作. 除了她的技术背景, Cheryl拥有MBA学位,可以将您的业务需求转化为高质量的软件解决方案.

Show More

Scott Hankinson

Freelance C# Developer

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

斯科特开发的技术被微软(Microsoft)和谷歌(google)等公司使用&P Global. 他为面向大型实体的公司开发了软件集成, 以及帮助公司通过IPO上市. 斯科特有设计的能力, develop, 并将数据库解决方案交付到生产环境中. 作为架构师,他能够控制软件开发团队的各个方面, developer, and project leader.

Show More

Mukesh Agrawal

Freelance C# Developer

IndiaToptal的自由c#开发人员 Since April 30, 2014

Mukesh拥有超过16年的软件开发和设计经验,专门从事微软技术堆栈和高效开发的能力, scalable, 以及复杂问题的容错解决方案. 他在软件开发周期的各个阶段都有丰富的经验.

Show More

Charles Cook, Ph.D.

Freelance C# Developer

United StatesToptal的自由c#开发人员 Since July 29, 2014

Charles has a Ph.D. 并花了三年时间为NASA开发定制数据处理和分析程序. He specializes in scalable, 企业级应用程序开发和高吞吐量工程解决方案. 他也是GreatVocab的创始人和所有者.为此,他利用数据分析和控制理论中的新概念开发了核心系统.

Show More

Dmitry Pavlov

Freelance C# Developer

RussiaToptal的自由c#开发人员 Since July 16, 2012

Dmitry是一位拥有20多年创作经验的顶尖开发者 .NET web applications. He mostly deals with ASP.NET Core and Blazor (C#, .. NET Core)软件开发和体系结构设计. Dmitry曾9次获得微软MVP(开发者技术)奖,是一位有能力的社区领袖. 他还获得了计算机科学、构造地质学和建模的硕士学位. 客户称他为“编码机器”."

Show More

Claudio Aldana

Freelance C# Developer

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

Claudio是一位专注于业务成果的经验丰富的IT专家, 还有扎实的工程背景. 他运用数据科学来优化客户满意度, product personalization, and customer churn. Claudio也是一名认证的SharePoint专家,曾与微软的知名客户合作过, 帮助他们最大限度地提高安全性, performance, and usability.

Show More

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

Start Hiring
Frequently paired together

Get Additional Expertise

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

A Hiring Guide

招聘优秀c#开发人员指南

c#就像一个新来的孩子. At first it was ignored, then it was ridiculed, 然后它就被反对了, 但现在它继续赢得世界各地的开发者. 这种增长的直接结果是大量的开发人员正在使用c#. 本指南涵盖了每个c#开发人员都需要掌握的主题, 这在你下次招聘时是必不可少的.

Read Hiring Guide

C# Hiring Resources

Trustpilot
THE TOPTAL ADVANTAGE

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

Toptal的筛选和匹配过程确保卓越的人才与您的精确需求相匹配.

Start Hiring
Toptal in the press

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

尽管对程序员的需求在不断增加,但Toptal对自己近乎常春藤联盟级别的审查感到自豪.

Our clients
为游戏制作应用程序
Conor Kenney
为游戏制作应用程序
构建一个跨平台的应用程序,在全球范围内使用
Thierry Jakicevic
构建一个跨平台的应用程序,在全球范围内使用
引领数字化转型
Elmar Platzer
引领数字化转型
挖掘实时数据将改变行业的游戏规则
挖掘实时数据将改变行业的游戏规则
What our clients think
Clients Rate Toptal C# Developers4.4 / 5.0截至2023年12月24日,平均有1019条评论
Testimonials

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

Brantley Pace, CEO & Co-Founder

Tripcents

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

Paul Fenley, Director

K Dunn & Associates

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

Ryan Rockefeller, CEO

Radeeus

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

Jason Kulik, Co-Founder

ProHatch

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

Stuart Pocknee , Principal

现场专用软件解决方案

我们使用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开发高级副总裁

Networld Media Group

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

Jeremy Wessels, CEO

Kognosi

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

Ryan Morrissey, CTO

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

我对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是我在近5年的专业在线工作中发现的性价比最高的网站.

Ethan Brooks, CTO

Langlotz Patent & Trademark Works, Inc.

In Higgle's early days, 我们需要一流的开发者, at affordable rates, in a timely fashion. Toptal delivered!

Lara Aldag, CEO

Higgle

Toptal能让你轻松找到合适的人选,让你放心,因为他们有能力. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit

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

Laurent Alis, Founder

Livepress

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

Jeff Kelly, Co-Founder

Concerted Solutions

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

Franco Arda, Co-Founder

WhatAdsWork.com

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

Greg Kimball, Co-Founder

nifti.com

如何通过Toptal招聘c#开发人员

1

与我们的行业专家交谈

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

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

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

The Right Fit, Guaranteed

与你的新c#开发人员一起试用一段时间(如果满意才支付报酬), 在订婚前确保他们是合适的人选.

寻找拥有相关技能的专家

在我们的人才网络中访问大量熟练的开发人员,并在48小时内雇用最优秀的3%.

FAQs

  • Toptal c#开发者有何不同?

    At Toptal, 我们对c#开发人员进行了彻底的筛选,以确保我们只为您匹配最优秀的人才. Of the more than 200,每年有5000人申请加入Toptal网络, fewer than 3% make the cut. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.

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

    取决于可用性和进度, 你可以在注册后48小时内开始与c#开发人员一起工作.

  • Toptal c#开发人员的无风险试用期是多长?

    我们确保您和您的c#开发人员之间的每次约定都以长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.

Share
C#

如何聘请优秀的c#开发人员

Remember the Y2K bug? 显然,由于全球计算机网络的严重破坏,世界本应结束. Just one year before that, 我们听说1999年将是世界末日,因为它的名字中有一个倒写的666. In such turbulent times, 当时很多人在地下室里堆食物, 希望世界末日不会找到他们, 有几个有远见的人还在发明一些很酷的东西. One of them is Anders Hejlsberg, 是谁召集了微软的开发团队,创造了Cool, 哪个是新的类c语言的第一个版本, 后来被命名为c#(发音为“C Sharp”).

历经14年和5个版本,c#已成为业界最流行的语言之一. Despite the fact that James Gosling and Bill Joy 认为c#只是对Java的模仿, 而其他一些批评者甚至称c#是一种无聊的重复,缺乏创新, c#现在在世界各地数以百万计的开发人员使用的所有其他平台旁边站得很高.

c#是一种包含强类型的多范式编程语言, as well as imperative, declarative, functional, generic, 面向对象(基于类), 以及面向组件的编程原则. 您可以使用它来构建任何类型的应用程序, whether it is a service, console, desktop, Web或甚至智能手机应用程序.

每种应用类型都需要在标准c#语法之上的一套特定的技能, 找到一个优秀的c#程序员, 无论是全职还是兼职, is not an easy task. 如果你正在寻找一个web开发人员,你应该期望在HTTP协议的技术专长, Web Forms, MVC框架和Razor视图引擎, 而其他一些应用程序将有自己的挑战.

本文将帮助您识别一个从本质上理解c#的开发人员. 无论应用程序类型如何, 下面提到的技术和技巧对所有c#开发专家来说都应该是通用的,他们都应该能够展示出对这些主题的广泛理解.

我将尝试涵盖每个开发人员都必须了解的一般主题. 本文的目的是指出几个特定的主题. 要深入评估他们每一个人的知识,需要的远不止一两个问题.

Generics

泛型是c#语言最早的特性之一. 泛型可以设计延迟指定一个或多个类型的类和方法,直到类或方法由客户端代码声明和实例化.

问:考虑以下代码,这是控制台应用程序的一部分:

静态void Main(string[] args)
{
  listOfDevelopers = new DeveloperList();
  listOfNumbers = new IntegerList();
  
  listOfNumbers.DoSomething(5);
  listOfDevelopers.DoSomething(新开发人员());
}

public class Developer
{
  public string Name { get; set; }
  public List Skills { get; set; }
}

public class DeveloperList
{
  DoSomething(开发者)
  {
    Console.WriteLine(“与开发人员一起做某事”);
  }
}

public class IntegerList
{
  public void DoSomething(Int32 number)
  {
    Console.WriteLine(“做一些与数字有关的事情”);
  }
}

以优化的方式替换代码 DeveloperList and IntegerList with one class named GenericList that will contain single doSomething method. 一定要处理好这个案子 GenericList 由意外类型实例化.

解决方案应该类似于这样:

静态void Main(string[] args)
{
  GenericList listOfNumbers = new GenericList();
  GenericList listOfDevelopers = new GenericList();
  GenericList listOfStrings = new GenericList();
  
  listOfNumbers.DoSomething(5);
  listOfDevelopers.DoSomething(新开发人员());
  listOfStrings.DoSomething("Whats up");
}

public class Developer
{
  public string Name { get; set; }
  public List Skills { get; set; }
}

class GenericList
{
  public void DoSomething(T value){
  if (value.GetType() == typeof(Int32)
      {
          Console.WriteLine(“做某事”);
            return;
        }

        if (value.GetType() == typeof(Developer))
        {
            Console.WriteLine(“与开发人员一起做某事”);
            return;
        }

        Console.WriteLine("I cannot do anything with " + value).GetType().ToString());
  }
}

LINQ

LINQ(语言集成查询)是c#中最酷的特性之一. 它是在Visual Studio 2008中引入的,它为c#提供了极其强大的查询功能. LINQ引入了查询和更新数据的标准模式,支持任何类型的数据存储.

或者,简单地说,LINQ允许对c#中的对象集合进行类似sql的查询.

问:假设你有一个班级 Developer defined like this:

class Developer
{
  public string Name { get; set; }
  public List Skills { get; set; }
}

编写代码,从数据库中提取所有具有“SQL”技能的开发人员 List developers.

你期望从一个理解LINQ的开发人员那里得到的答案是类似的:

在开发者中,Var results = from d.Skills.Contains("SQL") select d;

不习惯LINQ的开发人员可能会使用标准的迭代方法 for, foreach or while combined with if. Similar to this:

var results = new List();
Foreach(开发人员的变量)
{
  if (d.Skills.Contains("SQL"))
  results.Add(d);
}

尽管这是一个技术上正确的解决方案, 由于代码的复杂性,这是不太可取的.

Lambda Expressions

Lambda表达式是不需要声明的方法. 这些是与其余代码“内联”实现的函数. Lambda表达式对于编写LINQ查询表达式特别有帮助.

创建lambda表达式, you specify input parameters (if any) on the left side of the lambda operator =>, 然后把表达式或语句块放在另一边. 例如,lambda表达式 x => x * x 指定名为 x and returns the value of x squared.

lambda表达式的一般定义为:

(parameters) => Code

Q:通过实现这些方法来完成以下代码 Square and Double based on the Calculate 委托和lambda表达式.

委托int计算(int输入);
静态void Main(string[] args)
{
  int value1 = Square(5);
  int value2 = Double(5);
  
  Console.WriteLine(value1);
  Console.WriteLine(value2);
  
  Console.ReadLine();
}

预期的解决方案应该像添加两行代码一样简单:

委托int计算(int输入);
静态void Main(string[] args)
{
  Calculate Square = x => x * x;  // NEW
  Calculate Double = x => x * 2;  // NEW
  
  int value1 = Square(5);
  int value2 = Double(5);
  
  Console.WriteLine(value1);
  Console.WriteLine(value2);
  
  Console.ReadLine();
}

The Calculate 委托被声明为返回 Int and accept one Int as a parameter, so Square and Double 方法只是实现了适当的计算.

Named Arguments

命名参数使您不必在被调用方法的参数列表中记住或查找参数的顺序. 每个实参的形参可以通过形参名指定.

考虑下面的代码:

静态void Main(string[] args)
{
  Console.WriteLine(Power(4, 3)); //64
  Console.WriteLine(Power(3, 4)); //81
}

静态双功率(双baseNumber,双功率)
{
  return Math.Pow(baseNumber, power);
}

更改传递给参数的顺序 Power method would produce a different result; 64 one way, versus 81 the other.

Q:更新上面的代码以产生相同的结果(4的3次方= 64),而不管传递给参数的顺序如何 Power method.

这个问题的解决方案是传递命名参数. 你得改变打电话的方式 Power.

Console.WriteLine(Power(baseNumber: 4, power: 3)); //64
Console.WriteLine(Power(power: 3, baseNumber: 4)); //64

您唯一需要做的就是在传递值时添加一个参数名称.

Optional Parameters

The definition of a method, constructor, indexer, 或委托可以指定其参数是必需的或可选的. 任何调用都必须为所有必需的参数提供实参, 但是可以省略可选参数的参数.

每个可选参数都有一个默认值作为其定义的一部分. 如果没有为该参数发送参数,则使用默认值. 可选参数定义在参数列表的末尾,在任何必需参数之后. 如果调用方为一系列可选参数中的任何一个提供了参数, 它必须为前面的所有可选参数提供实参. 不支持参数列表中以逗号分隔的空格.

Q: Extend the Developer 类,其布尔属性名为 Enabled 以及一个可以接受的构造函数 name and the optional enabled value.

public class Developer
{
  public string Name { get; set; }
  public List Skills { get; set; }
}

预期的解决方案是:

public class Developer
{
  public Developer(string name, bool enabled=true)
  {
    Name = name;
    Enabled = enabled;
  }
  public string Name { get; set; }
  public bool Enabled { get; set; }
  public List Skills { get; set; }
}

Use of the optional enabled 参数,示例如下:

Developer elvis = new Developer("Elvis");       //elvis.Enabled = true
Developer mick = new Developer("Mick", false);  //mick.Enabled = false

Asynchronous Processing

异步对于潜在阻塞的活动是必不可少的, 例如当应用程序访问网络资源时. 对网络资源的访问有时很慢或延迟. 如果这样的活动阻塞了同步进程,则整个应用程序必须等待. In an asynchronous process, 应用程序可以继续执行不依赖于网络资源的其他工作,直到潜在的阻塞任务完成.

Visual Studio 2012引入了一种简化的方法, async programming, 的异步支持 .NET Framework 4.5 and the Windows Runtime. 编译器完成了开发人员过去所做的困难工作, 您的应用程序保留了类似于同步代码的逻辑结构. 因此,您只需付出很少的努力就能获得异步编程的所有优点.

The async and await c#中的关键字是异步编程的核心. 通过使用这两个关键字,您可以使用 .. NET框架或Windows运行时创建异步方法几乎和创建同步方法一样容易. 定义的异步方法 async and await 被称为异步方法.

下面的例子展示了一个async方法.

async Task AccessTheWebAsync()
{
  HttpClient client = new HttpClient();
  Task getStringTask = client.GetStringAsync (" http://qiwobh.trendyjd.com");
  DoIndependentWork();
  字符串urlContents = await getStringTask;
  return urlContents.Length;
}

问:下面代码的输出是什么? Explain your answer.

静态字符串语句= "Start";

static async Task SayAwaited()
{
  await Task.Delay(5000);
  statement = "Awaited";
  Console.WriteLine(statement);
  return statement;
}

static async Task SayDelayed()
{
  Thread.Sleep(1000);
  statement = "Delayed";
  Console.WriteLine(statement);
  return statement;
}

静态void Main(string[] args)
{
  SayAwaited();
  SayDelayed();
  Console.WriteLine("Final: " + statement);
  Console.ReadLine();
}

应用程序暂停五秒钟后,这段代码的输出将是:

Delayed
Final: Delayed
Awaited

注意:第一个“延迟”将在延迟一秒后显示.

这样做的原因是在路上 async 方法是在c#中处理的,而两者的区别 Task.Delay and Thread.Sleep. The SayAwaited 方法将像任何其他方法一样执行,直到它到达 await command. 此时,c#将启动另一个线程来执行 Task.Delay 在新线程上,同时释放当前线程以进行下一个操作,即 SayDelayed. 让主线程休眠一秒钟后, SayDelayed 将为 statement 剩下的命令将继续执行, WriteLine and ReadLine. 当这一切发生的时候, SayAwaited 将很好地暂停在自己的线程,并在5秒后,它将设置 statement 到“待定”,产生它自己的输出,并返回.

问:会有什么不同吗 statement = "Awaited" would be execute before await command? Explain your answer.

static async Task SayAwaited()
{
  statement = "Awaited";
  await Task.Delay(5000);
  Console.WriteLine(statement);
  return statement;
}

在本例中,输出如下:

Delayed
Final: Delayed
Delayed

这样做的原因是“等待”值被分配给 statement before the await command is called. By the time Console.WriteLine(statement); in SayAwaited is executed, the value of statement 已经被更新了 SayDelayed method.

Stay Sharp!

c#作为web开发领域的一个新生事物出现了. 起初,它被忽视,然后被嘲笑,然后被反对. 现在它继续赢得全世界开发者的青睐. 这种增长的直接结果是大量的开发人员正在使用c#代码.

本文引用了每个c#开发专家都应该掌握的主题. 当你在寻找一个优秀的c#开发人员时,一定要涵盖这些主题, 这样你就离甄别精英中的精英更近了一步.

顶级c#开发人员需求量很大.

Start Hiring