Вопросы, на которые должен отвечать каждый хороший разработчик .NET?


Answers

Я нашел эти списки в blog Скотта Хансельмана :

Вот что я думаю, это самые важные вопросы из этих постов, разделенных на категории. Я редактировал и переделывал их. К счастью для большинства этих вопросов уже есть хороший ответ на Stack Overflow. Просто следуйте ссылкам (я обнов их все как можно скорее) .

Независимые платформы .NET

ASP.NET

Question

Моя компания собирается нанять разработчиков .NET . Мы работаем на различных платформах .NET: ASP.NET, Compact Framework, Windowsforms, Web Services. Я хотел бы составить список / каталог хороших вопросов, своего рода минимальный стандарт, чтобы узнать, есть ли у заявителей опыт. Итак, мой вопрос:

Какие вопросы , по вашему мнению, должен ответить хороший программист .NET ?

Я также рассматриваю это как контрольный список для себя, чтобы увидеть, где мои собственные дефициты (их много ...) .

* ОБНОВЛЕНИЕ: Он хочет дать понять, что мы не тестируем только знания .NET, и что возможности решения проблем и навыки общего программирования еще важнее для нас.




Мартин Фаулер предпочитает навыки проектирования над знаниями платформы . С другой стороны, вы можете задать вопрос, который покажет знание шаблонов проектирования и платформы .NET следующим образом:

  • Назовите шаблоны и принципы проектирования, которые вы знаете, и как они используются в .NET Framework?



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

Чтобы быть тупым, я действительно не читал бы слишком много типичных вопросов, поскольку основополагающая парадигма гласит: « Насколько хорошо вы можете озвучивать свои мысли и понимание? ', это действительно то, что ищет интервьюер. Общение всегда является моей самой большой слабостью из-за того, что я есть, и могу легко разочароваться.

Было бы идеально иметь знания и быть ноу-хау, но, к сожалению, есть некоторые вещи, которые я не знаю, но не бояться, если вы на самом деле не знаете ответа и признаете это, а не блефуете через это. Если бы интервьюер задал мне вопрос, как один из вышеперечисленных, я не был бы уверен в неправильном понимании / неправильном толковании вопроса, я бы сказал это заранее, что может быть лично смущенным, но научился справляться с этим.

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

Мои 2центы, С наилучшими пожеланиями, Том.




Я предлагаю некоторые вопросы сосредоточиться на понимании концепций программирования с использованием dotnet, таких как

В чем разница между управляемой и неуправляемой средой? GC pros и cons JIT плюсы и минусы Если нам нужно разработать приложение X, мы сможем использовать dotnet? (это будет определять, как он видит dotnet)

Я предлагаю также написать небольшие методы и попросить его переписать их с лучшей производительностью, используя лучшие классы dotnet или стандартные способы. Также напишите inccorrect методы (с точки зрения любого) логического или любого другого и попросите его исправить их.




Я не стал бы задавать эти вопросы «знать что-то из учебника», но, скорее, попросить некоторые вещи, такие как:

  • Что делает цикл foreach в простой C #? (Ожидая, что он напишет цикл итератора).
  • Что такое синглтон?
  • Пусть он / она разбирает строку в Datetime (ожидая, что он / она будет использовать TryParse вместо try / catch)
  • Реализовать синглтон, стратегию и командные шаблоны
  • Пусть он / она Refactor кусок кода для тестирования. Ожидая, что он / она будет абстрагировать внешние сервисы от тестируемого подразделения и реализовать свой собственный тест-двойной сервис (без каких-либо насмешливых рамок)

Они не на 100% уверены, в зависимости от человека, которого я могу спросить:

  • пусть он / она защищает метод от пустого ввода (ожидая, что он / она будет использовать несколько возвратов для уменьшения вложенности)
  • как работает инициализатор объекта (ожидая, что он напишет безопасное по потоку назначение)

Также я бы спросил его, как он / она узнал его / ее материал и что он / она читает (какие блоги, книги).




Я думаю, что если бы я брал интервью у кого-то, у кого был опыт LINQ, я бы просто попросил их объяснить LINQ. Если они могут объяснить отложенное выполнение, потоковое вещание, интерфейсы IEnumerable / IEnumerator, foreach, блоки итератора, деревья выражений (для бонусных точек, в любом случае), то они, возможно, справятся с остальными. (По общему признанию, они могут быть «хорошими» разработчиками, а не «получать» LINQ еще - я действительно думаю о случае, когда они утверждали, что знают достаточно LINQ, чтобы сделать его справедливым.)

В прошлом я задал несколько вопросов, которые уже перечислены, и несколько других:

  • Разница между ссылочными и значениями типов
  • Передать по ссылке vs pass по значению
  • IDisposable и финализаторы
  • Строки, неизменность, кодировка символов
  • Плавающая точка
  • Делегаты
  • Дженерики
  • Неверные типы



Кто такой Джон Скит?




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

Если вопрос достаточно лёгкий, чтобы на него можно было ответить в короткие сроки или два, достаточно просто рассказать кому-то, кто этого не знает. Вы должны искать свое понимание концепций и возможностей рассуждений, а не их способность отвечать на вопросы «каждый разработчик .NET должен иметь возможность ответить».




Я думаю, что это не просто вопросы, я знаю несколько парней, которые блестяще смотрят на них, но как только они доберутся до того, что они слишком много перфекционистов, я бы сказал, что они не в состоянии скомпрометировать задачу.

Я был однажды опрошен, и мне понравился подход, когда первый работодатель дал мне техническую анкету, чтобы заполнить 30 минут. Если кто-то удастся, он будет вызван на одночасовое собеседование, в котором будут рассмотрены вопросы о судьбе личности и вопросе о персонаже, а также технические жаргоны.

Затем меня попросили разработать трехстраничное веб-приложение через 6 часов. Ограничения, наложенные на приложение, были наглядно отражены на главном аспекте разработки приложений, таких как небольшая ERD, Layerd Design, UI Consistency, контролирует определенные проблемы, такие как использование кнопок Radio в GridView и выборка и отображение типов изображений из БД на веб-странице, безопасность, шифрование, хеширование, представление данных и манипуляции.

Затем на следующий день они последовали за 30-минутной дискуссией по разработанному приложению, охватывающему узкие места с узкими местами производительности, а также улучшения в разработке и использовании алгоритмов. И 1 час дополнительного теста, чтобы улучшить алгоритм, разработанный на предыдущем этапе, с конкретным условием.

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




Что такое поток?

Что такое GC?




Вот некоторые из них, которые я использовал для фильтрации программистов, претендующих на работу в качестве программистов на C #:

В чем разница между ссылочным типом и типом значения?

Объясните интерфейс IDisposable, который требует конструкция языка C # и как вы его реализуете.

Какое исключение вы бы выбрали, если null передан как аргумент метода, который имеет контракт, который не допускает нули для этого параметра?




Я всегда искал бы мягкие навыки самостоятельно - ни каламбур не предназначался. Настолько хороший дизайн OO, разработка, основанная на тестах, хороший многоязычный языковой фон и всеобъемлющее умение (и все, что я делаю).

У интеллектуального разработчика не должно быть никаких проблем с изучением отдельных технологий, которые вам нужны, чтобы знать, даже если они никогда не смотрели на них раньше, поэтому я не стал бы слишком беспокоиться о конкретных вопросах вокруг фреймворка WCF / compact и тому подобное.

Я бы попросил их написать код - лучший способ узнать, что они знают и как они работают. Любой может запомнить ответ на вопрос: «В чем разница между ссылочным типом и типом значения?»







Tags