Подтвердить что ты не робот

Ищите несколько хороших проблем с интервью С#

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

Эти проблемы с С# должны быть достаточно простыми, чтобы не решить более 1-20 минут, но достаточно сложно, чтобы я мог вытеснить кандидатов, которые не могут кодировать.

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

Любые другие примеры, которые я мог бы использовать?

Изменить: я должен был упомянуть, что это для стандартного С# gig, где они будут писать бизнес-код, а не находить наиболее оптимальный способ реализации связанного списка.

4b9b3361

Ответ 1

Мне нравится выбирать простые проблемы, которые мне на самом деле приходилось решать в какой-то момент; это не становится более актуальным для работы, чем это.

Когда я работал над VBScript, я бы попросил кандидатов в колледж, как написать упрощенную версию DateDiff, так как именно так я и сделал свой первый реальный рабочий день в Microsoft. Более продвинутые кандидаты я хотел бы спросить, как создать устройство, которое отслеживает взаимосвязь между 32-битными дескрипторами и связанным с ним 64-битным указателем, что снова я действительно должен был делать, работая над VBScript.

В последнее время я склонен задавать вопросы о алгоритмах обработки дерева, поскольку компилятор - это все о манипуляциях с деревьями. Или о том, как упорядочить новые операторы с помощью монад, так как работает LINQ.

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

Ответ 2

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

Я бы попросил создать иерархию классов, чтобы представить что-то реальное (транспортные средства, животные,...). Обычно это сбрасывает людей, которые не получают объектов. Заставьте их делать это с интерфейсами. Также заставьте их перевернуть строку - никакого вреда в старину, а goldies

Ответ 3

Я согласен с вами, удивительно, как многие люди утверждают, что они испытаны, и вы узнаете, что все, что они сделали, было прочитано в коробке...

Я не знаю, является ли тестирование для С# столь же ценным, как кажется на первый взгляд... уверен, что вы могли бы попросить их описать пример того, когда им нужно было использовать наследование или почему кастинг может иметь проблемы с производительностью и т.д. Но это легко учиться. Вы были бы удивлены тем, сколько опрошенных давали пример, используя "автомобиль" или "цвет", когда вы приводили пример их наследования в реальном мире.... Угадайте, что они где-то в книге.

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

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

ПРИМЕРЫ: дайте мне пример того, где может существовать строка подключения? Если вам нужно передать идентификатор с одной страницы на другую, каковы ваши варианты? Если на страницу требуется 5 минут для загрузки, скажите мне, как вы собираетесь ее устранять. Если бы у меня была веб-страница с одной кнопкой на ней, как бы я сосредоточил эту кнопку? Скажите мне разницу между хранением переменных в состоянии сеанса viewstate verses?

Вам не нужно все знать, но восемьдесят процентов опрошенных людей на должность старшего уровня получат 10% этих вопросов. (И на 70% телефонных собеседований вы услышите их Google для ответов - хорошо, что у вас есть вопросы, на которые вы можете легко найти Google.)

SQL Server примерно такой же. Они говорят, что оценили бы 8 или 9 в развитии SQL Sever, но затем получат 10% вопросов. Вопросы снова состоят в том, чтобы увидеть, были ли вы на изношенном пути.

ПРИМЕРЫ. Если бы у вас была таблица клиентов и таблица заказов, как бы вы нашли клиентов, у которых не было заказов? Что такое кластеризованный индекс? Если бы у меня была таблица разработчиков и таблица проектов, как бы я ее настроил, чтобы проекты могли иметь несколько разработчиков, и разработчики могли бы быть в нескольких проектах?

Как вы могли бы развиваться в SQL Server в течение "лет" и не сталкивались с этими понятиями? Высокий процент кандидатов почти не получил ни одного из этих ответов! (Я думаю, что поле SQL Server не является информативным.)

Итак, если вы говорите, что вы парень старшего уровня, и вы можете сказать "Soy un revelador de software" (я разработчик программного обеспечения), но не могу сказать "Он hecho eso antes" (я сделал это раньше), я Не думайте, что вы являетесь человеком старшего уровня, которого вы утверждаете.

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

Ответ 4

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

Ответ 5

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

Я думаю, что было бы много преимуществ:

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

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

Ответ 6

Один вопрос, который мне задали, а затем попросить интервьюируемых, - "Опишите, как вы сделаете этот телефон в приложении". Попросите их описать классы, их свойства, методы, интерфейсы и т.д. Затем задайте им вопрос о том, почему они решили реализовать их определенным образом. Это дает вам хорошую идею, если они понимают, как кодировать, и дает вам некоторое представление о том, как они подходят и решают проблемы. Кроме того, если вы предлагаете предложение о том, как они могли бы реализовать его по-другому, это может показать вам, открыты ли они для новых идей, критики или если они являются командами или нет.

Ответ 7

Что-то мягко алгоритмическое.

  • Напишите метод, возвращающий true, если строка является палиндром, а false в противном случае.
  • Повторите реализацию метода String.Substring(int, int).

Что-то в объектно-ориентированном дизайне.

  • Создайте игру шашек (т.е. определите классы и некоторые из методов).