Какие есть вопросы для проверки знаний программистов на SQL? Каков ответ на вопрос? И что будет означать отсутствие правильного ответа с точки зрения времени, чтобы понять концепцию (и), связанную с вопросом?
ХОРОШО: вызов sql
Какие есть вопросы для проверки знаний программистов на SQL? Каков ответ на вопрос? И что будет означать отсутствие правильного ответа с точки зрения времени, чтобы понять концепцию (и), связанную с вопросом?
ХОРОШО: вызов sql
Ответы:
Это зависит от того, насколько сложным вы хотите, чтобы это было. Кроме того, я немного опасаюсь дать вам ответ, потому что у большинства проблем SQL есть несколько приемлемых способов сделать что-то, и есть также способы решения проблем SQL небрежным способом, которые вызовут другие проблемы. Человек, «оценивающий» ответ, определенно должен уметь решать его самостоятельно.
Тем не менее, вот несколько, которые я придумал с макушки головы.
Чрезвычайно простой уровень:
заданная таблица сотрудников со столбцами EmpID, FirstName, Lastname, HireDate и TerminationDate:
напишите запрос, чтобы вернуть всех сотрудников, все еще работающих в компании, с фамилиями, начинающимися с «Smith», отсортированного по фамилии и имени.
Простой уровень
Учитывая приведенную выше таблицу Employee, а также новую таблицу «AnnualReviews» со столбцами EmpID и ReviewDate:
напишите запрос, чтобы вернуть всех сотрудников, у которых никогда не было отзыва, отсортированного по HireDate.
Средний уровень Учитывая приведенную выше таблицу сотрудников, напишите запрос, чтобы рассчитать разницу (в днях) между наиболее и менее штатным сотрудником, все еще работающим в компании?
Сложный уровень
Учитывая приведенную выше таблицу сотрудников, напишите запрос, чтобы рассчитать самый длинный период (в днях), который компания прошла без найма или увольнения.
Уровень сложности
Снова, используя те же таблицы, напишите запрос, который возвращает каждого сотрудника, и для каждой строки / сотрудника указывается наибольшее количество сотрудников, которые работали в компании в любое время в течение срока их службы, и первая дата, когда был достигнут максимальный уровень. Дополнительные баллы за неиспользование курсоров.
Я обычно сижу на собеседованиях для специалистов по данным, поэтому мои вопросы, как правило, тяжелые. Но одна вещь, которую я бы потребовал от любого, кто будет писать SQL, - это знание объединений и того, когда использовать левое или внутреннее соединение. Любой, кто не понимает этого, не имеет никакого дела, обращающегося к базе данных в любой форме или форме.
Еще я бы хотел убедиться, что они понимают, как выполнять GROUP BY, и использовать функции Aggregate.
И различие между UNION и UNION ALL устранило много плохих кандидатов на моей работе.
Я бы спросил: «Почему и как следует очищать входные значения, данные от пользователя, которые будут использоваться в запросе SQL?»
Это необходимо , чтобы предотвратить инъекции SQL, и быть в состоянии ответить на этот вопрос требует хорошего знания о синтаксисе и команд (таких как SQL SELECT
, UPDATE
, DROP
, DELETE
и т.д.), а также , как те , можно обойти с помощью комментариев SQL , чтобы разбить запрос и введите то, что злоумышленник может пожелать сделать.
Я приложил руку к разработке технического теста для программистов баз данных. Вопросы, которые я считаю достаточно простыми: напишите операторы CREATE TABLE для заданной структуры таблицы; сделать несколько простых запросов; и т.п.
Большинство соискателей, которые называли себя экспертами в SQL, провалили тест. Один из них сказал, что, хотя он много лет был разработчиком SQL, он никогда не писал оператора CREATE TABLE, потому что GUI делал это для него.
У нас был похожий опыт с другими техническими испытаниями. Для сотрудников службы поддержки Windows задачи аналогичны «создать пользователя домена», «добавить принтер», «изменить права доступа к файлу». Большинство людей не могут выполнять эти задачи, особенно под давлением. Мы считаем, что если вы можете делать даже простые вещи, вы, вероятно, довольно компетентны.
Если вы предпочитаете задавать более открытые вопросы: задавайте общие вопросы о типах данных DATE, DATETIME .... Спросите о различиях между реализациями / продуктами разных поставщиков. Поговорите об инструментах командной строки, массовых загрузчиках, красивых принтерах ... возможно, вы сможете научиться новому трюку во время интервью.