Как интервьюер для позиций SQL, я разработал трехэтапный процесс собеседования для оценки знаний и навыков кандидатов. В этой статье я расскажу о вопросах и задачах, которые я использую на каждом этапе собеседования.
Часть 1: Вопросы на телефонном собеседовании
Во время начального телефонного собеседования я задаю ряд вопросов, чтобы оценить понимание кандидатом SQL Server. Одним из моих любимых ресурсов для этих вопросов является блог Гранта Фритчи. Чтобы перейти к следующему этапу, кандидат должен правильно ответить хотя бы на 5 из этих вопросов. Один из вопросов, который я всегда задаю, звучит так:
У вас есть запрос, который объединяет несколько таблиц. В чем разница между применением фильтра в операторе WHERE и применением этого фильтра в условиях объединения (JOIN)?
Часть 2: Лаборатория
На личном собеседовании я предоставляю кандидату ноутбук и базу данных “Лаборатория”. Кандидату предлагается две задачи для выполнения. Первая задача – это измененная версия теста “fizz-fuzz”, который требует возврата 1000 строк. Вторая задача заключается в создании строки с разделителями. Кандидат может просить уточнения и использовать любые доступные ресурсы, включая интернет. Я наблюдаю за процессом решения проблем кандидата, с акцентом на его способности предоставлять ответы на основе множества данных. Я больше ценю ответ на основе множества данных, который близок к правильному решению, чем ответ, не основанный на множестве данных.
База данных “Лаборатория” состоит из трех таблиц:
- Таблица “AccountData” с 1000 учетными записями (1-1000), каждая из которых содержит 1000 строк со значениями от 1 до 1000 (всего 1 000 000 строк). Задача состоит в создании строки с разделителями для каждой учетной записи с значениями в числовом порядке.
- Таблица “ResultSet”, которая представляет ожидаемый результат теста “fizz-fuzz”.
- Таблица “Tally” с числами от 1 до 1000.
Часть 3: Вопросы на личном собеседовании
Последний этап собеседования состоит из ряда сложных вопросов, разработанных для оценки глубоких знаний кандидата по SQL Server. Я также повторно задаю любые вопросы с телефонного собеседования, на которые кандидат неправильно ответил, чтобы оценить его способность учиться и улучшаться. Количество правильных ответов, необходимых для позиции, зависит от уровня знаний, требуемых для этой позиции.
Вот некоторые примеры вопросов, которые я задаю:
- Как вы расширяете свои знания SQL Server?
- Какие новые функции есть в SQL Server 2008? 2012?
- Какие причины плохой производительности в SQL Server?
- Какие причины возникновения блокировок?
- Что такое “Tally Table”?
- Какие различные типы резервного копирования можно выполнить?
- Что такое “Page Split”?
- Какие преимущества и недостатки уменьшения размера файлов базы данных?
- Как выбор ключа кластеризованного индекса влияет на ваши некластеризованные индексы?
- Какие операции по обслуживанию баз данных вы выполняете и с какой частотой?
- В чем разница между “rebind” и “rewind” в плане выполнения?
Эти вопросы разработаны для оценки теоретических знаний и практического опыта кандидата с SQL Server.
В целом, мой процесс собеседования направлен на оценку понимания кандидатом концепций SQL Server, навыков решения проблем и способности учиться и адаптироваться. Сочетая вопросы на телефонном собеседовании, практические задачи и глубокие технические вопросы, я могу оценить пригодность кандидата для позиции SQL.