Вопрос на собеседовании о сходствах / различиях C# и VB.net

Я был разработчиком VB.net уже несколько лет, но в настоящее время подаю заявку в несколько компаний, использующих C#. Мне даже сказали, что по крайней мере одна из компаний не хочет разработчиков VB.net.

Я искал в Интернете, пытаясь найти реальные различия между ними, и спросил о crackoverflow. Единственные существенные отличия - это небольшая разница в синтаксисе, которая для меня тривиальна, потому что я также являюсь разработчиком Java.

Что было бы хорошим ответом интервьюеру, когда он скажет мне, что ищет разработчика C#, или на аналогичные вопросы?

Ответов (8)

Решение

Мне приходилось проводить собеседование с людьми на несколько позиций C#, и это мой общий совет разработчикам VB.Net, проходящим собеседование на должность C#:

  • Убедитесь, что вам ясно, что вы работали с VB.Net. Это кажется очевидным, но на самом деле это не так (по моему опыту).
  • По возможности, попробуйте дать образец кода. Я видел несколько ужасных VB.Net (и C#), написанных программистами VB, которые, похоже, не многому научились при переходе на .Net.
  • Уметь писать на C# во время собеседования, если об этом попросят. Я знаю, что между ними не так много реальных различий, но я не хочу платить вам за изучение нового синтаксиса.

По вашему конкретному вопросу: я задавал этот тип вопроса раньше, и я хотел услышать о том, как базовая система и фреймворк совпадают. Если возможно, поговорите о сборке мусора, IDisposable, финализаторах, опасностях небезопасных блоков кода, о стеке и куче и т.д. Правильно это или нет, но наследие VB несет с собой ожидание отсутствия понимания программирования нижнего уровня и окон в целом (что, как ни странно, разработчик C++ имел бы от разработчика C# ... и так далее).

И наконец, то, как вы формируете свой опыт, может иметь огромное значение. Если вы позиционируете себя как разработчик .Net, а не VB.Net или C#, глупые, псевдорелигиозные, подшучивания не могут вступить в разговор. Это, конечно, требует, чтобы вы действительно знали как VB.Net, так и C# на момент собеседования, но в любом случае это хорошая политика.

Дело в том, что если вы обнаружите, что человек, проводящий собеседование, списывает вас со счетов просто потому, что вы ранее занимались разработкой на VB.Net, это, скорее всего, не будет тем местом, где вы хотите работать.

Некоторые отличия (более существенные, чем синтаксические), которые иногда улавливают меня:

  • VB.NET не имеет анонимных делегатов
  • Небезопасные блоки кода отсутствуют в VB.NET

Я тоже до смерти фанат C#, но разница не только в синтаксисе. Есть места, где В.Б. побеждает РУКАМИ

  1. Необязательные параметры
  2. Поздняя привязка

Работа с COM из C# может быть очень неприятным занятием. (Что нельзя сказать невозможно!)

Я думаю, что правда по этому поводу:

Я разработчик программного обеспечения, синтаксис языка - последняя часть головоломки. Принимая меня на работу, вы получаете человека с очевидным опытом решения проблем и логики. Я имею опыт работы со средой .NET, CLR и связанным стеком Windows, включая SQL и сервер Windows. Я не знаю синтаксиса C#, но, поскольку я привык к объектно-ориентированному подходу, у меня не будет проблем, чтобы полностью освоить тонкости синтаксиса в течение пары недель. Из этих примеров моего кода видно, что я опытный разработчик, уверяю вас, что переход будет плавным. Я уже начал изучать язык, пока проблем не было.

Я до смерти люблю C#, но завидую необязательным параметрам VB.NET. Автоматизация делопроизводства на C# очень и очень болезненна.

@DAC - VB теперь (в .net3.5) поддерживает лямбды:

Function(x) x.ToString()

В интервью я бы сказал, что понимание CLR и того, что действительно делает код, - вот что важно, и что вы счастливы кодировать и то, и другое (при условии, что это так).

Правдиво? Если вы тоже Java-разработчик, я бы руководил этим. Разработчик Java, имеющий некоторый опыт работы с .NET, обычно производит лучшее впечатление, чем разработчик VB, имеющий опыт работы с Java. Если вы можете ответить на вопросы о разнице между .NET и Java, вы должны быть в хорошей форме.

Я также рекомендую вам как можно скорее изучить синтаксис C#. Если у вас есть опыт работы с VB и Java, это не займет много времени.

У многих разработчиков есть проблемы с VB и людьми, которые его используют. Верно или нет, вам придется иметь дело с этой реальностью.

VB или C# имеют различный синтаксис, но если вы применяете логику, то же самое.