Что спрашивают на собеседовании sql

от admin

Руководство по подготовке к собеседованию по SQL

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

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

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

Уровень 1. Задачи, основанные на агрегатных функциях

Язык SQL отлично подходит для агрегации. Для этого есть множество функций, например SUM() , AVG() , MAX() , MIN() , COUNT() и т. д. Знание таких функций — это базовый уровень знаний, который ожидается от кандидата.

Рассмотрим следующую таблицу сотрудников. В каждой строке указаны данные о сотруднике — отдел, зарплата, руководитель и т. д.

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

Лучший способ решить любую задачу — это представить ее в виде пошаговой логики. В данном случае мы определяем наибольшую сумму по каждому отделу. Затем определяем формат вывода, для чего нужен только показатель employee_id .

Уровень 2. Задачи, основанные на операциях JOIN и SET

SQL предоставляет возможность объединять результаты из двух или более таблиц с помощью операций JOIN и SET . К популярным JOIN-операциям относятся inner join , left join , right join и cross join . Наиболее известные SET-операторы — UNION , UNION ALL , EXCEPT , INTERCEPT и др.

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

Уровень 3. Задачи на основе функции Windows

Функции Windows, также известные как аналитические функции, — это самая удивительная особенность языка SQL. Вот несколько популярных аналитических функций: RANK() , DENSE_RANK() , LEAD() , LAG() и т. д.

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

Уровень 4. Задачи, основанные на комбинации вышеупомянутых уровней

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

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

Рассмотрим следующую таблицу посещаемости. Каждая строка содержит идентификатор сотрудника и дату посещения офиса.

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

Вот и все! Мы рассмотрели несколько стандартных задач по SQL, которые может потребоваться решить на собеседовании.

27 распространённых вопросов по SQL с собеседований и ответы на них

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

Теория

Что такое СУБД?

Допустим, есть большая база данных, которой пользуются многие сотрудники: кто-то ищет информацию, а кто-то изменяет или даже удаляет её. Чтобы правильно обрабатывать все эти запросы, нужно специальное программное обеспечение, и именно такое ПО получило название системы управления базами данных (СУБД).

Какие типы СУБД в соответствии с моделями данных вы знаете?

Этот вопрос по SQL предполагает не просто назвать, но и дать краткое описание каждому типу.

  1. Реляционные, которые поддерживают установку связей между таблицами с помощью первичных и внешних ключей. Пример — MySQL.
  2. Flat File — базы данных с двумерными файлами, в которых содержатся записи одного типа и отсутствует связь с другими файлами, как в реляционных. Пример — Excel.
  3. Иерархические подразумевают наличие записей, связанных друг с другом по принципу отношений один-к-одному или один-ко-многим. А вот для отношений многие-ко-многим следует использовать реляционную модель. Пример — Adabas.
  4. Сетевые похожи на иерархические, но в этом случае «ребёнок» может иметь несколько «родителей» и наоборот. Примеры — IDS и IDMS.
  5. Объектно-ориентированные СУБД работают с базами данных, которые состоят из объектов, используемых в ООП. Объекты группируются в классы и называются экземплярами, а классы в свою очередь взаимодействуют через методы. Пример — Versant.
  6. Объектно-реляционные обладают преимуществами реляционной и объектно-ориентированной моделей. Пример — IBM Db2.
  7. Многомерная модель является разновидностью реляционной и использует многомерные структуры. Часто представляется в виде кубов данных. Пример — Oracle Essbase.
  8. Гибридные состоят из двух и более типов баз данных. Используются в том случае, если одного типа недостаточно для обработки всех запросов. Пример — Altibase HDВ.

Что такое первичный ключ?

Первичный ключ или PRIMARY KEY предназначен для однозначной идентификации каждой записи в таблице и является строго уникальным ( UNIQUE ): две записи таблицы не могут иметь одинаковые значения первичного ключа. Нулевые значения ( NULL ) в PRIMARY KEY не допускаются. Если в качестве PRIMARY KEY используется несколько полей, их называют составным ключом.

Здесь в качестве первичного ключа используется поле id.

Когда используется PRIMARY KEY?

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

А что такое внешний ключ?

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

В данном случае внешний ключ, привязанный к полю user_id в таблице order , ссылается на первичный ключ id в таблице users , и именно по этим полям происходит связывание двух таблиц.

Какие ещё ограничения вы знаете, как они работают и указываются?

SQL-ограничения (constraints) указываются при создании или изменении таблицы. Это правила для ограничения типа данных, которые могут храниться в таблице. Действие с данными не будет выполнено, если нарушаются установленные ограничения.

  • UNIQUE — гарантирует уникальность значений в столбце;
  • NOT NULL — значение не может быть NULL ;
  • INDEX — создаёт индексы в таблице для быстрого поиска/запросов;
  • CHECK — значения столбца должны соответствовать заданным условиям;
  • DEFAULT — предоставляет столбцу значения по умолчанию.

Для чего используется ключевое слово ORDER BY?

Для сортировки данных в порядке возрастания ( ASC ) или убывания ( DESC ).

Выбираются пользователи, которые будут отсортированы по имени в порядке убывания. Дополните ответ на этот вопрос по SQL тем, что без указания DESC данные были бы отсортированы по умолчанию — в порядке возрастания:

Назовите четыре основных типа соединения в SQL

Чтобы объединить две таблицы в одну, следует использовать оператор JOIN . Соединение таблиц может быть внутренним ( INNER ) или внешним ( OUTER ), причём внешнее соединение может быть левым ( LEFT ), правым ( RIGHT ) или полным ( FULL ).

  • INNER JOIN — получение записей с одинаковыми значениями в обеих таблицах, т.е. получение пересечения таблиц.
  • FULL OUTER JOIN — объединяет записи из обеих таблиц (если условие объединения равно true) и дополняет их всеми записями из обеих таблиц, которые не имеют совпадений. Для записей, которые не имеют совпадений из другой таблицы, недостающее поле будет иметь значение NULL .
  • LEFT JOIN — возвращает все записи, удовлетворяющие условию объединения, плюс все оставшиеся записи из внешней (левой) таблицы, которые не удовлетворяют условию объединения.
  • RIGHT JOIN — работает точно так же, как и левое объединение, только в качестве внешней таблицы будет использоваться правая.

Рассмотрим пример соединения SQL таблиц с использованием INNER JOIN . Следующий запрос выбирает все заказы с информацией о клиенте:

А что такое Self JOIN?

Такой вопрос тоже может прозвучать на собеседовании по SQL. Это выражение используется для того, чтобы таблица объединилась сама с собой, словно это две разные таблицы. Чтобы такое реализовать, одна из таких «таблиц» временно переименовывается.

Читать:
Как задать ширину текста в css

Например, следующий SQL-запрос объединяет клиентов из одного города:

Для чего нужен оператор UNION?

Он используется для объединения полученных данных из двух или более запросов, которые должны иметь одинаковое количество столбцов с одинаковыми типами данных и расположенных в том же порядке.

Как работают подстановочные знаки?

Это специальные символы, которые нужны для замены каких-либо знаков в запросе. Они используются вместе с оператором LIKE , с помощью которого можно отфильтровать запрашиваемые данные.

Какими бывают подстановочные знаки?

  • % — заменить ноль или более символов;
  • _ — заменить один символ.

Данный запрос позволяет найти данные всех пользователей, имена которых содержат в себе «test».

А в этом случае имена искомых пользователей начинаются на «t», после содержат какой-либо символ и «est» в конце.

Что делают псевдонимы Aliases?

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

Для чего нужен оператор INSERT INTO SELECT?

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

Что такое нормализация и денормализация?

Нормализация отношений в SQL призвана организовать информацию в базе данных таким образом, чтобы она не занимала много места и с ней было удобно работать. Это удаление избыточных данных, устранение дублей, идентификация наборов связанных данных через PRIMARY KEY , etc.

Соответственно, денормализация является обратным процессом, который вносит в нормализованную таблицу избыточные данные.

Подробнее о пяти нормальных формах и форме Бойса-Кодда можно узнать из данного видеокурса:

Объясните разницу между командами DELETE и TRUNCATE

Команда DELETE — это DML-операция, которая удаляет записи из таблицы, соответствующие заданному условию:

При этом создаются логи удаления, то есть операцию можно отменить.

А вот команда TRUNCATE — это DDL-операция, которая полностью пересоздаёт таблицу, и отменить такое удаление невозможно:

Чем VARCHAR отличается от NVARCHAR?

Главное отличие в том, что VARCHAR хранит значения в формате ASCII, где символ занимает один байт, а NVARCHAR хранит значения в формате Unicode, где символ «весит» 2 байта. Тип VARCHAR следует использовать, если вы уверены, что в значениях не будет Unicode-символов. Например, VARCHAR можно применить к адресам электронной почты, состоящих из ASCII-символов.

Практика

Как выбрать записи с нечётными Id?

Один из самых распространённых вопросов на собеседовании. SQL запрос для выбора записей с нечётными id должен выглядеть следующим образом:

Если остаток от деления id на 2 равен нулю, перед нами чётное значение, и наоборот.

Как найти дубли в поле email?

Функция COUNT() возвращает количество строк из поля email . Оператор HAVING работает почти так же, как и WHERE , вот только применяется не для всех столбцов, а для набора, созданного оператором GROUP BY .

При выборке из таблицы прибавьте к дате 1 день

Функция DATE_ADD() прибавляет к дате заданный промежуток времени. Синтаксис выглядит следующим образом:

Выберите только уникальные имена

SELECT DISTINCT возвращает разные значения, даже если в выбранном столбце есть дубли.

Найдите в таблице среднюю зарплату работников

Функция AVG() применяется только к числовым типам данных и возвращает среднее значение по столбцу.

А теперь получите список сотрудников с зарплатой выше средней

Даны таблицы workers и departments. Найдите все департаменты без единого сотрудника

Замените в таблице зарплату работника на 1000, если она равна 900, и на 1500 в остальных случаях

Замена значений — одна из наиболее часто встречаемых задач по SQL на собеседованиях. Решить её несложно:

Оператор UPDATE используется для изменения существующих записей. Но ответы на подобные вопросы с собеседований по SQL должны быть более развёрнутыми. Уточните,что после UPDATE следует указать, какие записи должны быть обновлены. В противном случае обновятся все записи в таблице.

В нашем примере условие задаётся через оператор CASE: если текущая зарплата равна 900, изменяем её на 1000, в остальных случаях — на 1500.

При выборке из таблицы пользователей создайте поле, которое будет включать в себя и имена, и зарплату

Функция CONCAT() используется для конкатенации (объединения) строк, неявно преобразуя при этом любые типы данных в строки.

Переименуйте таблицу

С помощью оператора ALTER TABLE можно добавлять, удалять, изменять столбцы, а также изменять название таблицы.

20 вопросов и задач по SQL на собеседовании с ответами

От автора Telegram-канала Аналитика и Growth mind-set (там публикую еще больше вопросов и тестовых задач с собеседований).

В данной статье вопросы и тестовые задания на SQL с собеседований на аналитика.

У некоторых HR есть практика задавать вопросы прямо при телефонном звонке. Сидишь дома, а тут неожиданно звонит HR и задает тебе вопрос по SQL. Некоторые спрашивают про SQL в тестовом задании, а некоторые на техническом интервью.

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

Вопросы на собеседовании с разработчиком SQL

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

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

  • Разработка баз данных SQL
  • Написание приложений для взаимодействия с базами данных SQL
  • Работа с руководителями проектов и руководителями предприятий для создания баз данных и проверки системных требований
  • Написание и тестирование кода
  • Создание таблиц, представлений и функций
  • Повышение производительности приложений
  • Управление памятью систем баз данных
  • Аутентификация и авторизация баз данных
  • Что такое SQL?
  • Что такое базовые запросы SQL?
  • Что такое таблицы и поля?
  • Как предприятия используют SQL?
  • Почему SQL важен для нашей компании?
  • Что такое первичный ключ и уникальный ключ?
  • Что такое соединение? Объясните различные типы соединения.
  • Какая самая большая база данных, которую вы когда-либо вели?
  • Возможно, вам придется работать с другими разработчиками приложений для поддержки наших баз данных. Насколько хорошо вы работаете с другими?
  • Что такое индекс?

Сценарий №1: Спросите своего кандидата, как найти вторую по величине зарплату для сотрудников с приведенными ниже запросами.Запрос 1: «Выберите отдельную зарплату из сотрудника e1, где 2 = Выберите счет (отдельную зарплату) из сотрудника e2, где e1.salary <= e2.salary;» (Мир SQL).
Запрос 2: «Выберите минимальную (зарплату) из (выберите отдельную зарплату из emp в порядке убывания зарплаты), где rownum <= 2;» (Мир SQL).
«Запрос 3: Выбрать * из (Выбрать S. *, DENSE_RANK () НАД (РАЗДЕЛЕНИЕ ПО DNO ЗАПРОС ПО УДАЛЕНИЮ ЗАРПЛАТЫ) DR из источника) S, где S.DR = 2;» (МИР SQL).

Сценарий № 2: Попросите кандидата найти N-е записи в таблице ниже.«Запрос 1: запрос на поиск первой записи из таблицы.
Выберите * from Employee, где Rownum = 1; » (Мир SQL).
Запрос 2: запрос на поиск последней записи из таблицы.
Выберите * из сотрудника, где Rowid = выберите max (Rowid) из сотрудника; (Мир SQL).
Запрос 3: запрос на поиск N-й записи из таблицы.
Выберите * из (выберите. *, Rownum rnum из (YOUR_QUERY_GOES_HERE — включая порядок) a, где rownum <= N_ROWS), где rnum> = N_ROWS; (Мир SQL).

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

Похожие статьи