Rizwan has a reputation for overcoming complex challenges through clear thinking, innovative approaches, 加强组织不同部门之间的沟通. Throughout his career, 他优化了多样化和分散的IT专业人员团队的工作,并在具有挑战性的环境中始终如一地交付了有利可图的项目.
United StatesToptal的自由c#开发人员 Since February 4, 2016
谢丽尔是一名具有强大沟通技巧的开发人员,她寻求提供令客户满意的软件解决方案. 她喜欢使用React、Node.js, REST APIs, GraphQL, SQL, MongoDB, 和JavaScript最近准备开始把她的技能为你工作. 除了她的技术背景, Cheryl has an MBA and can translate your business requirements into quality software solutions.
斯科特开发的技术被微软(Microsoft)和谷歌(google)等公司使用&P Global. 他为面向大型实体的公司开发了软件集成, 以及帮助公司通过IPO上市. 斯科特有设计的能力, develop, 并将数据库解决方案交付到生产环境中. He is capable of controlling every aspect of a software development team as an architect, developer, and project leader.
Dmitry是一位拥有20多年创作经验的顶尖开发者 .NET web applications. He mostly deals with ASP.NET Core and Blazor (C#, .. NET Core)软件开发和体系结构设计. Dmitry曾9次获得微软MVP(开发者技术)奖,是一位有能力的社区领袖. 他还获得了计算机科学、构造地质学和建模的硕士学位. 客户称他为“编码机器”."
United StatesToptal的自由c#开发人员 Since September 12, 2018
Claudio是一位专注于业务成果的经验丰富的IT专家, 还有扎实的工程背景. 他运用数据科学来优化客户满意度, product personalization, and customer churn. Claudio is also a certified SharePoint expert and has worked with prominent Microsoft customers, 帮助他们最大限度地提高安全性, performance, and usability.
c#就像一个新来的孩子. At first it was ignored, then it was ridiculed, 然后它就被反对了, 但现在它继续赢得世界各地的开发者. The direct result of this growth is a large number of developers that are using C#. 本指南涵盖了每个c#开发人员都需要掌握的主题, 这在你下次招聘时是必不可少的.
没有Toptal就不会有Tripcents. Toptal Projects enabled us to rapidly develop our foundation with a product manager, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. The Toptal team were as part of tripcents as any in-house team member of tripcents. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.
Brantley Pace, CEO & Co-Founder
Tripcents
我对我们与Toptal的合作经验非常满意. The professional I got to work with was on the phone with me within a couple of hours. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, even going the extra mile by adding some great design elements that enhanced our overall look.
Paul Fenley, Director
K Dunn & Associates
The developers I was paired with were incredible -- smart, driven, and responsive. 过去很难找到高质量的工程师和顾问. Now it isn't.
Ryan Rockefeller, CEO
Radeeus
Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, understood our vision, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.
Jason Kulik, Co-Founder
ProHatch
As a small company with limited resources we can't afford to make expensive mistakes. Toptal为我们提供了一位经验丰富的程序员,他能够立即投入工作并开始做出贡献. 这是一次很棒的经历,我们会马上再来一次.
Stuart Pocknee , Principal
现场专用软件解决方案
We used Toptal to hire a developer with extensive Amazon Web Services experience. We interviewed four candidates, one of which turned out to be a great fit for our requirements. 这个过程迅速而有效.
Abner Guzmán Rivera,首席技术官和首席科学家
Photo Kharma
Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.
Dennis Baldwin,首席技术专家和联合创始人
PriceBlink
和Marcin一起工作是一种乐趣. He is competent, professional, flexible, 并且非常迅速地理解需要什么以及如何实现它.
Toptal's developers and architects have been both very professional and easy to work with. The solution they produced was fairly priced and top quality, reducing our time to launch. Thanks again, Toptal.
Jeremy Wessels, CEO
Kognosi
我们与Toptal合作非常愉快. They paired us with the perfect developer for our application and made the process very easy. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. We definitely recommend Toptal for finding high quality talent quickly and seamlessly.
Ryan Morrissey, CTO
应用商业技术有限责任公司
我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. 5 stars for Toptal.
Pietro Casoar, CEO
Ronin Play Pty Ltd
与Toptal合作是一次很棒的经历. Prior to using them, I had spent quite some time interviewing other freelancers and wasn't finding what I needed. After engaging with Toptal, they matched me up with the perfect developer in a matter of days. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. Highly recommended!
George Cheng, CEO
Bulavard, Inc.
As a Toptal qualified front-end developer, I also run my own consulting practice. 当客户来找我帮忙填补他们团队中的关键角色时, 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能让你轻松找到合适的人选,让你放心,因为他们有能力. I would definitely recommend their services to anyone looking for highly-skilled developers.
Michael Gluckman,数据经理
Mxit
Toptal’s ability to rapidly match our project with the best developers was just superb. 开发人员已经成为我们团队的一部分, and I’m amazed at the level of professional commitment each of them has demonstrated. For those looking to work remotely with the best engineers, look no further than Toptal.
Laurent Alis, Founder
Livepress
Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. After making our selection, the engineer was online immediately and hit the ground running. It was so much faster and easier than having to discover and vet candidates ourselves.
Jeff Kelly, Co-Founder
Concerted Solutions
We needed some short-term work in Scala, and Toptal found us a great developer within 24 hours. 这在其他平台上是不可能实现的.
Franco Arda, Co-Founder
WhatAdsWork.com
Toptal offers a no-compromise solution to businesses undergoing rapid development and scale. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.
Greg Kimball, Co-Founder
nifti.com
如何通过Toptal招聘c#开发人员
1
与我们的行业专家交谈
Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
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#开发人员之间的每次约定都以长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, we’ll bill you for the time and continue the engagement for as long as you’d like. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.
Share
如何聘请优秀的c#开发人员
Remember the Y2K bug? Apparently, the world was supposed to end due to havoc in computer networks all over the planet. Just one year before that, 我们听说1999年将是世界末日,因为它的名字中有一个倒写的666. In such turbulent times, 当时很多人在地下室里堆食物, 希望世界末日不会找到他们, 有几个有远见的人还在发明一些很酷的东西. One of them is Anders Hejlsberg, 是谁召集了微软的开发团队,创造了Cool, 哪个是新的类c语言的第一个版本, 后来被命名为c#(发音为“C Sharp”).
14 years and 5 versions later, C# is one of the most popular languages in the industry. Despite the fact that James Gosling and Bill Joy 认为c#只是对Java的模仿, while some other critics even called C# a boring repetition that lacks innovation, c#现在在世界各地数以百万计的开发人员使用的所有其他平台旁边站得很高.
c#是一种包含强类型的多范式编程语言, as well as imperative, declarative, functional, generic, 面向对象(基于类), 以及面向组件的编程原则. 您可以使用它来构建任何类型的应用程序, whether it is a service, console, desktop, Web或甚至智能手机应用程序.
Each application type requires a specific set of skills on top of standard C# syntax, 找到一个优秀的c#程序员, 无论是全职还是兼职, is not an easy task. 如果你正在寻找一个web开发人员,你应该期望在HTTP协议的技术专长, Web Forms, MVC框架和Razor视图引擎, 而其他一些应用程序将有自己的挑战.
This article should help you identify a developer that understands C# in its core. 无论应用程序类型如何, 下面提到的技术和技巧对所有c#开发专家来说都应该是通用的,他们都应该能够展示出对这些主题的广泛理解.
我将尝试涵盖每个开发人员都必须了解的一般主题. 本文的目的是指出几个特定的主题. Evaluating knowledge of each of them in depth would require much more than one or two questions.
静态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引入了查询和更新数据的标准模式,支持任何类型的数据存储.
Or, in simple words, LINQ enables SQL-like queries against collections of objects in C#.
问:假设你有一个班级 Developer defined like this:
class Developer
{
public string Name { get; set; }
public List Skills { get; set; }
}
Write a code that would extract all developers that have the “SQL” skill, from a List developers.
你期望从一个理解LINQ的开发人员那里得到的答案是类似的:
在开发者中,Var results = from d.Skills.Contains("SQL") select d;
Developers that are not used to LINQ would probably use standard iteration methods using for, foreach or while combined with if. Similar to this:
var results = new List();
Foreach(开发人员的变量)
{
if (d.Skills.Contains("SQL"))
results.Add(d);
}
创建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 方法只是实现了适当的计算.
The only thing you needed to do is add an argument name when passing in the values.
Optional Parameters
方法的定义, constructor, indexer, or delegate can specify that its parameters are required or that they are optional. 任何调用都必须为所有必需的参数提供实参, 但是可以省略可选参数的参数.
每个可选参数都有一个默认值作为其定义的一部分. 如果没有为该参数发送参数,则使用默认值.
Optional parameters are defined at the end of the parameter list, after any required parameters. If the caller provides an argument for any one of a succession of optional parameters, 它必须为前面的所有可选参数提供实参. 不支持参数列表中以逗号分隔的空格.
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
异步对于潜在阻塞的活动是必不可少的, 例如当应用程序访问网络资源时. 对网络资源的访问有时很慢或延迟. If such an activity is blocking a synchronous process, the entire application must wait. 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 被称为异步方法.
After five seconds of the application being paused, the output of this code would be:
Delayed
Final: Delayed
Awaited
注意:第一个“延迟”将在延迟一秒后显示.
这样做的原因是在路上 async 方法是在c#中处理的,而两者的区别 Task.Delay and Thread.Sleep. The SayAwaited 方法将像任何其他方法一样执行,直到它到达 await command. 此时,c#将启动另一个线程来执行 Task.Delay on the new thread, while releasing current thread to proceed with next action, which is SayDelayed. 让主线程休眠一秒钟后, SayDelayed will set the value for the statement 剩下的命令将继续执行, WriteLine and ReadLine. 当这一切发生的时候, SayAwaited 将很好地暂停在自己的线程,并在5秒后,它将设置 statement 到“待定”,产生它自己的输出,并返回.
问:会有什么不同吗 statement = "Awaited" would be execute before await command? Explain your answer.
这样做的原因是“等待”值被分配给 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开发领域的一个新生事物出现了. 起初,它被忽视,然后被嘲笑,然后被反对. 现在它继续赢得全世界开发者的青睐. The direct result of this growth is the large number of developers that are using C# code.