-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinterview_questions.sql
68 lines (54 loc) · 3.2 KB
/
interview_questions.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
--Вопросы для собеседования:
-- Как найти полные дубли строк? Или как удалить полные дубликаты строк?
-- Для чего нужны представления? А функции? Чем отличаются?
-- В чём плюс процедур? В какие минусы?
-- Чем цикл отличается от курсора?
-- Всегда ли нужны ключи (Праймари кей)? Когла не нужны?
-- Чем отличается кластерный индекс от некластерного?
-- Что такое покрывающий и фильтрованный индекс?
-- Плохо или хорошо большое количество индексов и почему?
-- Колумнстор, что это и как с ним работать? Для чего нужен? Бывают ли там сики (точечные поиски)?
-- Что такое оконные функции, их применение?
-- Что такое рекурсия?
-- Чем APPLY отличается от джойна?
-- EXISTS и NOT EXISTS, применение? Какой план?
-- EXCEPT, INTERSECT, UNION (ALL)
-- Физические виды джойнов?
-- Блокировки это хорошо или плохо?
-- Что такое дедлок? Почему и как возникает?
-- Партиционирование, что это и зачем? Какие плюсы и какие минусы?
-- Статистика, что это, зачем и как с ней работать?
-- Как отследить выполнение запроса? Зачем нужен Профайлер и чем можно заменить?
-- PIVOT и UNPIVOT для чего нужны и можно ли заменить?
--Доп. вопросы:
--1. что вернёт запрос?
--вопрос на внимательность, понимание важности алиасов и какие область вилимости подзапроса (какие столбцы он может использовать)
USE tempdb;
DROP TABLE IF EXISTS #TMP1;
CREATE TABLE #TMP1
(a int);
INSERT INTO #TMP1
(a)
SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3;
DROP TABLE IF EXISTS #TMP2;
CREATE TABLE #TMP2
(b int);
INSERT INTO #TMP2
(b)
SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6;
SELECT * FROM #TMP1 WHERE a in (select a from #TMP2);
--вернёт все значения из таблицы #TMP1, так как в подзапросе используется её колонка. Ошибки нет (отсутсвие такой колонки в таблице #TMP2), потому что в область видимости подзапроса попадают столбцы основного запроса.
--2. что вернёт запрос?
--вопрос на понимание NULL значения и его использование в равенстве/неравенстве
;WITH CTE AS
(
SELECT NULL AS b
)
SELECT 1
FROM CTE
WHERE b = COALESCE(NULL, b);
--не вернёт никакого значения, потому что NULL не равен NULL