Как я собеседовался

в 20:19, , рубрики: human resources, собеседование, метки:

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

Вакансия ASP .NET MVC разработчика. Попросили выполнить небольшое тестовое задание. Привожу примерный текст задания:

Необходимо разработать веб-приложение с использованием ASP.NET MVC с описанной ниже функциональностью. В результате вы должны предоставить комплексное решение с инструкциями по разворачиванию и любыми заметками по желанию. Модульные тесты будут плюсом.
Вы должны разработать систему для управления клиентами. У каждого клиента есть следующие поля: ФИО, статус (активный или нет), тип аккаунта (простой, профессиональный, золотой, VIP) и список телефонов. Телефоны могут быть: домашний, мобильный, факс.
Веб-интерфейс должен предоставлять возможно просмотра, редактирования и поиска профиля клиента.

На выполнение данного задание было отведено три дня, после рассмотрения готового задания приглашают на собеседование. Отведенного срока вполне достаточно для качественного выполнения задания.
Плюсы:

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

Минусы:

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

Вакансия ASP .NET MVC разработчика. После просмотра моего резюме меня любезно пригласили в офис для собеседования. Собеседовали меня программисты работающие там, в количестве трех человек. Вот задания, которые были предложены мне для решения:

Дана БД, в ней две таблицы: users и organizations. В этих таблицах два поля: id и name. Поле id являеться первичным ключом, name — текстовое поле фиксированной длины.

Что сделать:

  • Модифицировать базу так, что бы можно было пользователя добавить в одну/несколько организаций (Т.е. добавить еще одну таблицу для организации связи многие ко многим).
  • Написать запрос, делающий выборку организаций определенного пользователя.
  • Написать запрос, делающий выборку организаций в которых не состоит ни одного пользователя.

Как видим ничего сложного нет. Из трудностей: писать на листике без IDE и её подсказок.

Следующие задания на знание C#:

 public List<int> Test(List<int> listA, List<int> listB  )
 {
                
 }

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

class A
{
    public void Print()
    {
        Console.WriteLine("I'm A");
    }
}

class B : A
{
    public void Print()
    {
        Console.WriteLine("I'm B");
    }
}

static void Main(string[] args)
{
    A a = new B();
    a.Print();
}

Что выведет данный код? И что надо сделать, что бы вывело другое сообщение?

Еще был вопрос на знание jQuery, но я его к сожалению не помню. Решение всего этого вместе с рассказом о себе и о боевых подвигах занимает около 20-30 минут.
Плюсы:

  • Интерактивное мышление. Лучше всего рассуждать о способах решения вслух, перебирая различные варианты.
  • Вы общаетесь с людьми, с которыми будете работать. Можно здесь же расспросить подробнее о будущей работе, роде задача и о примерных проектах
  • Живое общение. Если вы общительный человек и очень легко идете на контакт, для вас это будет плюсом.

Минусы

  • Такой вид собеседования для большинства людей будет сильным стрессом (лично я в первое свое собеседование очень сильно волновался, собрать мысли и начать адекватно мыслить было очень затруднительно)

Как видим, практически все вопросы возможно решить при наличии опыта, или хотя бы объяснить на «пальцах» методы решения задач. Отдельно стоит отметить два собеседования, когда мне выдали «опросник»: сшитые вместе листы А4 с распечатанными вопросами. Общее количество их было в районе 50, правильно я ответил на 40% вопросов, т.к. они были слишком уж теоретические, и такие вещи давно уже забыл. Мой результат посчитали неудовлетворительным, возможно оно и к лучшему. Но лично я, все же перед собеседованием пролистываю немного теорию, многие вещи забываются и неплохо их было бы освежить, что бы не выглядеть глупо, запнувшись о простой вопрос. И второй случай, когда после просмотра моего резюме и разбора моего кода (в резюме указал ссылки на сорцы своих проектов, которые писал just for fun), меня пригласили на собеседование уже без всяких тестов и т.д., для взаимного «примеривания» и обговаривания условий.
Если кого либо заинтересуют вопросы, так сказать проверить себя для галочки, могу добавить в пост еще с десяток интересных вопросов.

Автор: vyacheslav_ka

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js