На этот раз решил вопросы по блоку SQL выделить отдельно. Кажется так будет проще и эффективней готовиться. Обычно на собеседовании будет 3-4 вопроса из этого списка.
Примечание: сложных вопросов (со звездочкой) в этой статье не будет. Мы рассмотрим их отдельно вот здесь (Вопросы со * (сложные) про SQL на собеседовании тестировщика).
Итак вопросы по теме SQL которые вам встретятся на собеседованиях:
Основы SQL
1. Что такое SQL? Для чего он используется?
Краткий ответ: SQL (Structured Query Language) — язык программирования, используемый для управления и манипуляции данными в реляционных базах данных.
2. Что такое SELECT-запрос и как он используется?
Краткий ответ: SELECT — команда SQL, которая используется для извлечения данных из одной или нескольких таблиц базы данных.
3. Что такое JOIN? Какие виды JOIN существуют?
Краткий ответ: JOIN используется для объединения строк из двух и более таблиц на основе связанного столбца. Основные виды: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN
Подробный ответ о видах JOIN здесь.
4. Что такое PRIMARY KEY (первичный ключ) и FOREIGN KEY (внешний ключ)?
Краткий ответ: PRIMARY KEY — уникальный идентификатор записи в таблице, FOREIGN KEY — столбец, который ссылается на PRIMARY KEY в другой таблице.
5. Что такое WHERE и HAVING? В чём разница между ними?
Краткий ответ: WHERE используется для фильтрации строк до выполнения агрегации, HAVING — для фильтрации после выполнения агрегации.
Агрегатные функции и группы
1. Как работают функции COUNT(), SUM(), AVG(), MIN(), MAX()?
Краткий ответ: Это агрегатные функции, которые выполняют операции над группами данных, такие как подсчёт количества записей, сумма значений, среднее значение, минимальное и максимальное значения соответственно.
Более подробный ответ читайте в статье Агрегатные функции в SQL.
2. Как работает GROUP BY?
Краткий ответ: GROUP BY группирует строки по значению одного или нескольких столбцов и часто используется с агрегатными функциями.
3. Как реализовать выборку уникальных значений?
Краткий ответ: Используя ключевое слово DISTINCT.
Работа с данными
1. Что такое INSERT, UPDATE, DELETE?
Краткий ответ: Это команды для манипуляции данными. INSERT добавляет новые строки, UPDATE изменяет существующие строки, DELETE удаляет строки из таблицы.
2. Как можно объединить результаты нескольких SELECT-запросов?
Краткий ответ: Используя операторы UNION или UNION ALL. (ранее часто использовали в хакерских атаках типа SQL Инъекция. Пишите в комментариях если будет интересно узнать как)
3. Как работает оператор LIKE?
Краткий ответ: LIKE используется для поиска строк, соответствующих шаблону. Например, 'A%' найдет все строки, начинающиеся с 'A'.
4. Как отсортировать результаты выборки?
Краткий ответ: Используя ORDER BY с указанием столбцов и порядка сортировки (ASC (по возрастанию) или DESC (по убыванию)).
Работа с подзапросами
1. Что такое подзапрос (subquery)?
Краткий ответ: Подзапрос — это запрос, вложенный в другой запрос. Он может использоваться в SELECT, WHERE, FROM, или HAVING.
2. Чем отличается коррелированный подзапрос от некоррелированного
Краткий ответ: Коррелированный подзапрос зависит от внешнего запроса и выполняется для каждой строки внешнего запроса, тогда как некоррелированный подзапрос выполняется один раз и его результат используется в основном запросе.
Индексы и производительность
1. Что такое индексы и зачем они нужны?
Краткий ответ:
Индекс в SQL — это специальный "список", который база данных создает, чтобы быстрее находить нужные данные в большой таблице. Представьте себе книгу с миллионом страниц: если вам нужно быстро найти определенное слово, вы бы воспользовались указателем в конце книги, где указаны страницы с этим словом, вместо того чтобы просматривать каждую страницу вручную. Индекс в базе данных выполняет ту же функцию — помогает быстро находить нужные данные без необходимости просматривать всю таблицу.
Индексы ускоряют поиск данных в таблицах, но могут замедлять операции вставки и обновления.
2. Что такое нормализация? Какие существуют её формы?
Краткий ответ: Нормализация — это процесс структурирования данных для минимизации избыточности и зависимости. Самые распространенные формы: первая (1NF), вторая (2NF), третья (3NF), и Boyce-Codd нормальная форма (BCNF).
Более подробный ответ на вопрос читайте здесь.
3. Как можно оптимизировать медленный запрос?
Краткий ответ: Использование индексов, оптимизация JOIN-ов, уменьшение количества подзапросов, анализ плана выполнения запроса (EXPLAIN).
Практические задачи
1. Напишите SQL-запрос, чтобы найти второй по величине (второе максимальное) значение в таблице.
Краткий ответ:
SELECT MAX(column_name)
FROM table_name
WHERE column_name < (SELECT MAX(column_name) FROM table_name);
2. Как написать запрос, который вернет записи, не имеющие соответствий в другой таблице?
Краткий ответ:
Используя LEFT JOIN и фильтр WHERE на NULL значения во второй таблице.
3. Как написать запрос, чтобы вернуть дубликаты записей по определенному столбцу?
Краткий ответ:
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;
4. Как просуммировать данные по столбцу? А по строке?
Краткий ответ:
Сумма по столбцу:
SELECT SUM(column_name)
FROM table_name;
Сумма по строке:
SELECT (column1 + column2 + column3) AS row_sum
FROM table_name;
Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам