Задачи на особенности работы с null (Сбер)
Всем привет 😊
Заключительный пост про задачки с собеса Сбербанка.
что уже было: задача1, задача2
На скриншоте задание. Специально не стал переводить в текст, чтоб передать атмосферу 😉
Естественно, на собеседовании нет возможности набрать текст запроса и выполнить. Выполняем "в уме". Рекомендую, поступить так же 😉
Разбор ответов в четверг 🎓
Приветствуется обсуждение в чатике 💬
⚠️ Меж тем, продолжается набор на курс по PL/SQL.Осталось 1️⃣ место. Бронируйте свое участие. Мест нет 🤷♂️
#задача #собеседование #сбер
Oracle Developer
Всем привет 😊
Заключительный пост про задачки с собеса Сбербанка.
что уже было: задача1, задача2
На скриншоте задание. Специально не стал переводить в текст, чтоб передать атмосферу 😉
Естественно, на собеседовании нет возможности набрать текст запроса и выполнить. Выполняем "в уме". Рекомендую, поступить так же 😉
Разбор ответов в четверг 🎓
Приветствуется обсуждение в чатике 💬
⚠️ Меж тем, продолжается набор на курс по PL/SQL.
#задача #собеседование #сбер
Oracle Developer
Решение задачи на особенности работы с null (Сбер)
Демо-данные для примера
1️⃣ null - это неопределенность.
2️⃣ Кавычки без значения ('') - это null, если это не тип CHAR.
2️⃣ Для сравнения с null нельзя просто написать равенство или неравенство, нужно использовать is null или is not null
3️⃣ Использование null в IN бесполезно.
* - правила справедливы для Oracle
Что получим в итоге
Для краткости рассмотрим кейсы, когда А = 1 и A = null (для '' будет такой же)
A = 1
1) все строки, т.к. условие выполняется всегда
2) аналогично
3) аналогично
4) ничего 1!=1, условие всегда не выполняется
5) все строки, т.к. 1 in (1) всегда будет выполняться.
6) ни одной строки, т.к. условие никогда не будет выполнено.
А = null
1) все строки, т.к. условие выполняется всегда
2) ничего, null - особенное значение.
3) все строки, т.к. условие выполняется всегда
4) ничего, null сравниваем через is.
5) аналогично
6) аналогично.
Я не очень люблю подобные задачи... на собесе, помнится, в каких-то неочевидных пунктах запутался, бывает )
Итог: собеседование в Сбер прошел, предложили неплохую ставку, но все равно отказался 🤷🏻♂️ А вам достался материал 😉
Обсудить в чатике 💬
#решениезадачи #собеседование #сбер
Oracle Developer
Демо-данные для примера
create table test1(a number);Что нужно помнить
insert into test1 values(1);
insert into test1 values(2);
insert into test1 values(null);
insert into test1 values('');
commit;
1️⃣ null - это неопределенность.
2️⃣ Кавычки без значения ('') - это null, если это не тип CHAR.
2️⃣ Для сравнения с null нельзя просто написать равенство или неравенство, нужно использовать is null или is not null
3️⃣ Использование null в IN бесполезно.
* - правила справедливы для Oracle
Что получим в итоге
Для краткости рассмотрим кейсы, когда А = 1 и A = null (для '' будет такой же)
A = 1
1) все строки, т.к. условие выполняется всегда
2) аналогично
3) аналогично
4) ничего 1!=1, условие всегда не выполняется
5) все строки, т.к. 1 in (1) всегда будет выполняться.
6) ни одной строки, т.к. условие никогда не будет выполнено.
А = null
1) все строки, т.к. условие выполняется всегда
2) ничего, null - особенное значение.
3) все строки, т.к. условие выполняется всегда
4) ничего, null сравниваем через is.
5) аналогично
6) аналогично.
Я не очень люблю подобные задачи... на собесе, помнится, в каких-то неочевидных пунктах запутался, бывает )
Итог: собеседование в Сбер прошел, предложили неплохую ставку, но все равно отказался 🤷🏻♂️ А вам достался материал 😉
Обсудить в чатике 💬
#решениезадачи #собеседование #сбер
Oracle Developer
Telegram
Oracle Developer Chat👨🏻💻🗣👥
Чат для обсуждения постов канала "Oracle Developer".
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
Replication vs. Table Partitioning vs. Table Sharding vs. Database Federation
На днях попался забавный слайд. Вдруг кому-то зайдет.
🔸 Replication (репликация) - хранении копии одних и тех же данных на разных серверах.
🔸 Table partitioning (секционирование таблиц) - разбиение таблицы на части, с использованием ключа секционирования. Физически - разные части, логически - работаем как с одной таблицей.
🔸 Table sharding (шардирование) - разбиение на независимые части одной сущности. Было бы наглядней, если бы показали на примере разных БД. Т.е. одна часть таблицы хранится в одной БД, вторая часть таблицы в другой БД и т.д.
Например, vk.com хранит пользователей с A-E на одном сервере, F-J на другом и т.д. (пример, сильно притянутый за уши).
🔸 Database Federation - объединение нескольких физических БД в логическую БД. Позволяет работать приложениям с логической БД, как будто она одна. Мне на практике такие конфигурации не встречались. Для любознательных - статья1, статья2, вики.
Чатик 💬
#секционирование
Oracle Developer
На днях попался забавный слайд. Вдруг кому-то зайдет.
🔸 Replication (репликация) - хранении копии одних и тех же данных на разных серверах.
🔸 Table partitioning (секционирование таблиц) - разбиение таблицы на части, с использованием ключа секционирования. Физически - разные части, логически - работаем как с одной таблицей.
🔸 Table sharding (шардирование) - разбиение на независимые части одной сущности. Было бы наглядней, если бы показали на примере разных БД. Т.е. одна часть таблицы хранится в одной БД, вторая часть таблицы в другой БД и т.д.
Например, vk.com хранит пользователей с A-E на одном сервере, F-J на другом и т.д. (пример, сильно притянутый за уши).
🔸 Database Federation - объединение нескольких физических БД в логическую БД. Позволяет работать приложениям с логической БД, как будто она одна. Мне на практике такие конфигурации не встречались. Для любознательных - статья1, статья2, вики.
Чатик 💬
#секционирование
Oracle Developer
Задача. Вывод строчных английских букв
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Уровень сложности: легкий
Было бы круто посмотреть на различные способы решения.
Как всегда, разбор в четверг 🎓
Обсудить в чатике 💬
#задача
Oracle Developer
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Уровень сложности: легкий
Было бы круто посмотреть на различные способы решения.
Как всегда, разбор в четверг 🎓
Обсудить в чатике 💬
#задача
Oracle Developer
Решение задачи "вывод строчных английских букв"
Задача
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Решение
На текущий момент, коллеги в чатике нагенерили с десяток способов решить данную задачку от совсем простых до монструозных чисто развлечься.
Приведу буквально одно:
#решениезадачи
Задача
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Решение
На текущий момент, коллеги в чатике нагенерили с десяток способов решить данную задачку от совсем простых до монструозных чисто развлечься.
Приведу буквально одно:
select chr(ascii('a') + level - 1)Всем неравнодушным респект, было интересно посмотреть на такое разнообразие 🔥
from dual
connect by level <= ascii('z') - ascii('a') + 1;
#решениезадачи
Способы взбодриться с утра
Я думаю, у всех есть истории, от которых волосы встают дыбом.
У меня есть одна.
В году 2006, я работал ДБА в одном новосибирском банке.
Как это водится, было открыто несколько окошек Putty одновременно (ssh-подключений к серверам БД).
К сожалению, он тогда не умел (да и сейчас вроде бы не умеет), подкрашивать окно цветом, в зависимости от подключения.
А-ля красный для такого-то сервера (прод), зеленый для такого-то (дев) и т.п.
У меня была задача - обновить учебную БД. Обновление включало в себя - опустить БД, грохнуть файлы, скопировать с PROD файлы в горячем режиме, и поднять учебную БД.
Делал это не первый раз, но по запаре, перепутал окошки с Putty и случайно грохнул файлы ПРОД БД 🤦🏻♂️
Слава богу, приложение было не прям, что бы критичное + был standby.
Потеряли 5 минут бизнесового времени и 30 минут реального. Начальство пожурило 😁
ДБА как сапер. Шанс ошибиться только один 😂
Поделиться историями в чатике 💬
Всем хороших выходных 🎊
#юмор
Oracle Developer
Я думаю, у всех есть истории, от которых волосы встают дыбом.
У меня есть одна.
В году 2006, я работал ДБА в одном новосибирском банке.
Как это водится, было открыто несколько окошек Putty одновременно (ssh-подключений к серверам БД).
К сожалению, он тогда не умел (да и сейчас вроде бы не умеет), подкрашивать окно цветом, в зависимости от подключения.
А-ля красный для такого-то сервера (прод), зеленый для такого-то (дев) и т.п.
У меня была задача - обновить учебную БД. Обновление включало в себя - опустить БД, грохнуть файлы, скопировать с PROD файлы в горячем режиме, и поднять учебную БД.
Делал это не первый раз, но по запаре, перепутал окошки с Putty и случайно грохнул файлы ПРОД БД 🤦🏻♂️
Слава богу, приложение было не прям, что бы критичное + был standby.
Потеряли 5 минут бизнесового времени и 30 минут реального. Начальство пожурило 😁
ДБА как сапер. Шанс ошибиться только один 😂
Поделиться историями в чатике 💬
Всем хороших выходных 🎊
#юмор
Oracle Developer
Всем привет!
Очень рад, что мой призыв, писать авторские статьи, периодически находит отклик.
В ближайшие несколько недель на канале будет публиковаться серия постов от Даниила. Он тестировщик. Посты будут полезны скорее для QA, но могут заинтересовать и Junior DBD. Посмотрим, что из этого выйдет 😉
Это его первый опыт, не все может получиться с первого раза. Давайте проявим дружелюбие, тем более, что у нас в чатике не принято брызгать кислотой 😉 Тем не менее, фидбек будет полезен, даже, если он и не совсем позитивный - это точка роста. Давайте будем корректны по отношению к друг другу.
Я же в свою очередь напомню. Если у вас есть какой-то интересный авторский материал относящийся к Oracle - разработке, администрированию и т.п. велком. Я готов опубликовать его с сохранением авторства. Это не обязательно должна быть серия постов. Это может быть и один пост. Народ у нас в канале разный - уровень, специализация и т.п. думаю кому-то да зайдет. Пишите в личку 👍
Oracle Developer
Очень рад, что мой призыв, писать авторские статьи, периодически находит отклик.
В ближайшие несколько недель на канале будет публиковаться серия постов от Даниила. Он тестировщик. Посты будут полезны скорее для QA, но могут заинтересовать и Junior DBD. Посмотрим, что из этого выйдет 😉
Это его первый опыт, не все может получиться с первого раза. Давайте проявим дружелюбие, тем более, что у нас в чатике не принято брызгать кислотой 😉 Тем не менее, фидбек будет полезен, даже, если он и не совсем позитивный - это точка роста. Давайте будем корректны по отношению к друг другу.
Я же в свою очередь напомню. Если у вас есть какой-то интересный авторский материал относящийся к Oracle - разработке, администрированию и т.п. велком. Я готов опубликовать его с сохранением авторства. Это не обязательно должна быть серия постов. Это может быть и один пост. Народ у нас в канале разный - уровень, специализация и т.п. думаю кому-то да зайдет. Пишите в личку 👍
Oracle Developer
SQL для начинающих тестировщиков (1/17)
Привет всем, меня зовут Даниил!
В тестировании уже несколько лет, долгое время SQL мне был не нужен. Однако, потом я попал на проект, где SQL был основным инструментом для тестирования - пришлось изучать 🤷🏻♂️
Текущий уровень знаний оцениваю как выше среднего (среди тестировщиков). Понятное дело, что есть ребята, которые меня многому научат.
Хотелось бы рассказать о граблях и лайфаках, которые я постиг за это время.
Материал будет полезен тем, кто мало работал с SQL, но сейчас самостоятельно его изучает - как вспомогательный инструмент.
В теории может быть полезен для разработчиков, если они помогают тестировщикам писать скрипты.
Планирую описать
1. А для чего SQL тестировщику?
2. Чем скрипт тестировщика отличается от скрипта разработчика?
3. С чего начать изучать SQL?
4. Select * from - плохая привычка, правильная select distinct * from
5. NVL - вторая правильная привычка тестировщика
6. Так left или inner?
7. Избегаем конструкции вида select * from (select * from (select * from t2) t1) t
8. With as - великое изобретение для работы тестировщика
9. MINUS - второе великое изобретение для работы тестировщика
10. Работа с датами
11. Алиасы таблиц - правильный тон
12. Параметризация скриптов
Примечание
▫️ Я не планирую писать учебник или ссылки. Многое гуглится, еще больше можно просто узнать читая скрипты опытных разработчиков, ну и личное общение с ними - никто не отменял.
▫️Все ошибки, приведенные в постах, реальны (либо мои, либо чужие).
▫️Писать я буду про select. Модификация данных - отдельная тема.
▫️В постах будет рассматриваться только Oracle.
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Привет всем, меня зовут Даниил!
В тестировании уже несколько лет, долгое время SQL мне был не нужен. Однако, потом я попал на проект, где SQL был основным инструментом для тестирования - пришлось изучать 🤷🏻♂️
Текущий уровень знаний оцениваю как выше среднего (среди тестировщиков). Понятное дело, что есть ребята, которые меня многому научат.
Хотелось бы рассказать о граблях и лайфаках, которые я постиг за это время.
Материал будет полезен тем, кто мало работал с SQL, но сейчас самостоятельно его изучает - как вспомогательный инструмент.
В теории может быть полезен для разработчиков, если они помогают тестировщикам писать скрипты.
Планирую описать
1. А для чего SQL тестировщику?
2. Чем скрипт тестировщика отличается от скрипта разработчика?
3. С чего начать изучать SQL?
4. Select * from - плохая привычка, правильная select distinct * from
5. NVL - вторая правильная привычка тестировщика
6. Так left или inner?
7. Избегаем конструкции вида select * from (select * from (select * from t2) t1) t
8. With as - великое изобретение для работы тестировщика
9. MINUS - второе великое изобретение для работы тестировщика
10. Работа с датами
11. Алиасы таблиц - правильный тон
12. Параметризация скриптов
Примечание
▫️ Я не планирую писать учебник или ссылки. Многое гуглится, еще больше можно просто узнать читая скрипты опытных разработчиков, ну и личное общение с ними - никто не отменял.
▫️Все ошибки, приведенные в постах, реальны (либо мои, либо чужие).
▫️Писать я буду про select. Модификация данных - отдельная тема.
▫️В постах будет рассматриваться только Oracle.
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Telegram
Oracle Developer👨🏻💻
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...
Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.
Отец-основатель: @denis_dbd Кивилёв Денис
SQL, PL/SQL, оптимизация, архитектура и многое другое...
Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.
Отец-основатель: @denis_dbd Кивилёв Денис
Чем скрипт тестировщика отличается от скрипта разработчика? (2/17)
Самое главное, cкрипт тестировщика МОЖЕТ быть не оптимальным, но он ДОЛЖЕН возвращать верный результат.
Т.е. часто лучше пойти каким-то более длинным путем написания скрипта, нежели разработчик.
Да, скрипт может выполняться очень долго, но, если он дает такой же результат, что и скрипт разработчика, значится с 99% уверенностью можно считать, что все работает корректно.
Поэтому не нужно стремиться писать оптимально и красиво. Нужно стремиться писать понятно и прямолинейно. Т.е. каждая следующая строчка скрипта явно должна быть очевидна вам и вашему коллеге.
⚠️ скрипт только для дев/тест сред.
Звучит непонятно?
Надеюсь, следующие посты внесут ясность 😉
Обсудить в чатике 💬
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Самое главное, cкрипт тестировщика МОЖЕТ быть не оптимальным, но он ДОЛЖЕН возвращать верный результат.
Т.е. часто лучше пойти каким-то более длинным путем написания скрипта, нежели разработчик.
Да, скрипт может выполняться очень долго, но, если он дает такой же результат, что и скрипт разработчика, значится с 99% уверенностью можно считать, что все работает корректно.
Поэтому не нужно стремиться писать оптимально и красиво. Нужно стремиться писать понятно и прямолинейно. Т.е. каждая следующая строчка скрипта явно должна быть очевидна вам и вашему коллеге.
⚠️ скрипт только для дев/тест сред.
Звучит непонятно?
Надеюсь, следующие посты внесут ясность 😉
Обсудить в чатике 💬
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Telegram
Oracle Developer Chat👨🏻💻🗣👥
Чат для обсуждения постов канала "Oracle Developer".
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
Ч.1 С чего начать изучать SQL? (3/17)
Если вы не изучали SQL, то первым делом нужно понять как он работает.
В этом как раз и заключается вся сложность.
Нужно понимать последовательность выполнения операций.
Буду объяснять на примере стандартной схемы HR и таблички employees.
Например:
Перепишем его в той последовательности, как он будет выполняться:
Часто начинающие пишут что-то типа такого:
Естественно, СУБД выкидывает ошибку (неактуально для ORACLE версии 23)
Нужно запомнить:
Первым всегда выполнятся часть от From до Where, когда это понимание приходит - уже проще соединять таблицы 😊
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Если вы не изучали SQL, то первым делом нужно понять как он работает.
В этом как раз и заключается вся сложность.
Нужно понимать последовательность выполнения операций.
Буду объяснять на примере стандартной схемы HR и таблички employees.
Например:
select department_id, last_name, sum(salary)Хоть скрипт начинается с select, но выполняться он будет по-другому.
from employees
where first_name = 'John'
group by department_id, last_name
having sum(salary)>1000
order by department_id, last_name
Перепишем его в той последовательности, как он будет выполняться:
from employees eДа это вроде как все знают, но по личному опыту скажу, что без понимание этого писать запросы проблематично.
where e.first_name = 'John'
group by department_id, last_name
having sum(salary)>1000
select department_id, last_name, sum(salary)
order by department_id, last_name;
Часто начинающие пишут что-то типа такого:
select department_id, last_name, sum(salary) as slrт.е. в select присваивают псевдоним полю (slr), а потом ниже пытаются к нему обратиться (having).
from employees
where first_name = 'John'
group by department_id, last_name
having slr > 1000
order by department_id, last_name
Естественно, СУБД выкидывает ошибку (неактуально для ORACLE версии 23)
Нужно запомнить:
Первым всегда выполнятся часть от From до Where, когда это понимание приходит - уже проще соединять таблицы 😊
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Ч.2. С чего начать изучать SQL? (4/17)
У нас есть таблицы (employees, departments), в которых хранится: название отдела, фио, должность, зп в месяц
Давайте их соединим:
Для тестировщика можно оперировать таким допущением.
После FROM идет сборка "огромной таблицы" из всех перечисленных таблиц.
Вот собралась одна такая таблица - и дальше уже начинают ее фильтровать и из нее делать select.
Почему я заострил на этом внимание?
Гуглеж или чтение учебников с ходу не дают эту информацию. Нужно прочитать 100500 страниц текста, чтобы это понять.
А учебники, вообще, мало кто читает...
После понимания этого нужно переходить:
- К соединению таблиц.
- Затем уже изучение агрегирующих функций.
- Всякие полезности разработки, типа оконных функций - можно вначале не изучать, они постигаются по мере усложнения задач. Часто не нужны тестировщику.
- План запроса - это магия. Подозреваю, что для многих разработчиков тоже (шутка, хотя...)
Обсудить в чатике 💬
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
У нас есть таблицы (employees, departments), в которых хранится: название отдела, фио, должность, зп в месяц
Давайте их соединим:
select d.department_name, e.first_name, e.last_name, sum(e.salary)И здесь ключевой момент:
from employees e
join departments d on e.department_id = d.department_id
where e.first_name = 'John'
group by d.department_name, e.first_name, e.last_name
having sum(e.salary) > 1000
order by d.department_name, e.first_name;
Для тестировщика можно оперировать таким допущением.
После FROM идет сборка "огромной таблицы" из всех перечисленных таблиц.
Вот собралась одна такая таблица - и дальше уже начинают ее фильтровать и из нее делать select.
Почему я заострил на этом внимание?
Гуглеж или чтение учебников с ходу не дают эту информацию. Нужно прочитать 100500 страниц текста, чтобы это понять.
А учебники, вообще, мало кто читает...
После понимания этого нужно переходить:
- К соединению таблиц.
- Затем уже изучение агрегирующих функций.
- Всякие полезности разработки, типа оконных функций - можно вначале не изучать, они постигаются по мере усложнения задач. Часто не нужны тестировщику.
- План запроса - это магия. Подозреваю, что для многих разработчиков тоже (шутка, хотя...)
Обсудить в чатике 💬
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Друзья, всем привет!
По техническим причинам, решили опубликовать все посты сразу в одном месте.
Из-за отсутствия свободного времени у Даниила на редактирование, посты опубликованы "как есть" без редакций и купюр😉
Начинающим QA и заинтересовавшимся - рекомендую дочитать до конца, возможно, найдете, что-то полезное для себя.
От автора
"Да, серия постов получилась сумбурной :)
И по ней явно не научишься писать SQL запросы.
Однако, если вы сейчас изучаете SQL, то надеюсь эти лайфхаки вам помогут в работе."
Напомню, это была "проба пера". Не всегда все выходит, так как мы хотим. Ничего страшного. В нашей жизни должно быть пространство для экспериментов 😉
Если есть желание поддержать автора - ставьте 🔥
Обсудить в чатике 💬
Всем хороших выходных 🎊
Oracle Developer
По техническим причинам, решили опубликовать все посты сразу в одном месте.
Из-за отсутствия свободного времени у Даниила на редактирование, посты опубликованы "как есть" без редакций и купюр😉
Начинающим QA и заинтересовавшимся - рекомендую дочитать до конца, возможно, найдете, что-то полезное для себя.
От автора
"Да, серия постов получилась сумбурной :)
И по ней явно не научишься писать SQL запросы.
Однако, если вы сейчас изучаете SQL, то надеюсь эти лайфхаки вам помогут в работе."
Напомню, это была "проба пера". Не всегда все выходит, так как мы хотим. Ничего страшного. В нашей жизни должно быть пространство для экспериментов 😉
Если есть желание поддержать автора - ставьте 🔥
Обсудить в чатике 💬
Всем хороших выходных 🎊
Oracle Developer
Коллеги погромисты, с профессиональным праздником 👯♀️
А вот и эксклюзивный стих для канала про программистов от ChatGpt:
В мире кода и баз данных,
Oracle разработчик - властелин,
Он читает строки, словно маг,
А глюки в его коде - неосязаемы, по-арабски.
От себя пожелаю - гореть своей профессией, получать удовольствие, чтоб каждый день был как праздник 😉🔥
Поздравить друг друга в чатике 💬
Oracle Developer
А вот и эксклюзивный стих для канала про программистов от ChatGpt:
В мире кода и баз данных,
Oracle разработчик - властелин,
Он читает строки, словно маг,
А глюки в его коде - неосязаемы, по-арабски.
От себя пожелаю - гореть своей профессией, получать удовольствие, чтоб каждый день был как праздник 😉🔥
Поздравить друг друга в чатике 💬
Oracle Developer
Собеседование во "Вкусно и Точка"
Друзья, всем привет!
Решил продолжить практику написания постов на тему технических собеседований. Собеседование проходил на позицию Senior Data Engineer во "Вкусно и Точка".
О вакансии
Дата платформа(DP) включает в себя:
▫️DWH(15Tb) на базе дистрибутива Greenplum от Arenadata(ADB);
▫️ClickHouse и Superset для Data Marts и BI;
▫️S3 — для хранения сырых данных (RAW слой);
▫️Airflow в качестве оркестратора ETL pipeline(ов);
▫️Шина данных ESB(Kafka, NiFi, RabbitMQ)
Основные задачи:
Основные задачи связаны с развитием Дата платформы. В текущем варианте хранилище находится в самом начале своего развития, как и в целом IT департамент, т.к. при уходе из России Макдональдс забрал практически весь IT ландшафт.
Плюшки
Годовой бонус, ДМС, скидки на спорт.
Из минусов:
Гибридный формат работы(3 дня Office, 2 дня Home Office).
Про з/п
Диалог начинали от 350k net. После тех. собеседования и приглашения в офис для личного знакомства сумма изменилась до 400к net.
Этапы собеседований
1️⃣ Предварительное общение с HR
Вкратце о своем опыте и почему ищу работу.
Продолжительность интервью - 15 минут.
2️⃣ Интервью
Состав из 2х человек:
▫️ Руководитель направления развития DP;
▫️ Архитектор;
Формат интервью:
▫️ Знакомство;
▫️ Технические вопросы;
▫️ Вопросы от соискателя.
Продолжительность интервью - 1.5 часа.
3️⃣ Оффер
Продолжение следует...
Обсудить в чатике 💬
Автор: Ruslan
Предыдущий опыт собеседований от него.
#вкусноиточка #собеседование
Oracle Developer
Друзья, всем привет!
Решил продолжить практику написания постов на тему технических собеседований. Собеседование проходил на позицию Senior Data Engineer во "Вкусно и Точка".
О вакансии
Дата платформа(DP) включает в себя:
▫️DWH(15Tb) на базе дистрибутива Greenplum от Arenadata(ADB);
▫️ClickHouse и Superset для Data Marts и BI;
▫️S3 — для хранения сырых данных (RAW слой);
▫️Airflow в качестве оркестратора ETL pipeline(ов);
▫️Шина данных ESB(Kafka, NiFi, RabbitMQ)
Основные задачи:
Основные задачи связаны с развитием Дата платформы. В текущем варианте хранилище находится в самом начале своего развития, как и в целом IT департамент, т.к. при уходе из России Макдональдс забрал практически весь IT ландшафт.
Плюшки
Годовой бонус, ДМС, скидки на спорт.
Из минусов:
Гибридный формат работы(3 дня Office, 2 дня Home Office).
Про з/п
Диалог начинали от 350k net. После тех. собеседования и приглашения в офис для личного знакомства сумма изменилась до 400к net.
Этапы собеседований
1️⃣ Предварительное общение с HR
Вкратце о своем опыте и почему ищу работу.
Продолжительность интервью - 15 минут.
2️⃣ Интервью
Состав из 2х человек:
▫️ Руководитель направления развития DP;
▫️ Архитектор;
Формат интервью:
▫️ Знакомство;
▫️ Технические вопросы;
▫️ Вопросы от соискателя.
Продолжительность интервью - 1.5 часа.
3️⃣ Оффер
Продолжение следует...
Обсудить в чатике 💬
Автор: Ruslan
Предыдущий опыт собеседований от него.
#вкусноиточка #собеседование
Oracle Developer
Техническое собеседование во "Вкусно и Точка"
Формат общения - онлайн, звонок по Телемосту Яндекс.
Список вопросов:
1️⃣ Smart Scans. Что это и как работает?
2️⃣ Способы оптимизации запросов. Описать процесс, привести примеры.
3️⃣ Задача на SQL:
Необходимо перестроить справочник ресторанов, убрав столбец director. История должна быть перестроена.
4️⃣ Какие особенности работы с таблицами в Greenplum?
5️⃣ Какие цели у централизованного DDS слоя в DWH?
Разбор, как всегда, в четверг 🎓
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
Формат общения - онлайн, звонок по Телемосту Яндекс.
Список вопросов:
1️⃣ Smart Scans. Что это и как работает?
2️⃣ Способы оптимизации запросов. Описать процесс, привести примеры.
3️⃣ Задача на SQL:
Необходимо перестроить справочник ресторанов, убрав столбец director. История должна быть перестроена.
4️⃣ Какие особенности работы с таблицами в Greenplum?
5️⃣ Какие цели у централизованного DDS слоя в DWH?
Разбор, как всегда, в четверг 🎓
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
Техническое собеседование во "Вкусно и Точка". Ответы
Список вопросов: см. в посте вторника.
Ответы:
1️⃣ Smart Scans. Что это и как работает?
Классические схемы включают в себя сервер СУБД и системы хранения. Под каждый из компонентов оборудование может подбираться как отдельно, так и вместе с целью достижения максимальной производительности БД. В таких схемах системы хранения становятся узким местом в вопросах оптимизации производительности БД.
Опция Smart Scan - это фича Oracle Exadata.
Oracle Exadata - это серверный шкаф, состоящий из набора серверного оборудования для дисковой подсистемы(сервера хранения для Exadata) и серверов баз данных, подобранного с целью достижения максимальной производительности БД.
В случае Exadata выполнение SQL-запросов может выполняться на серверах хранения. Ключевое слово может. Эта опция называется Smart Scan. Поскольку это опция, она может быть как включена, так и выключена(см. параметр cell_offload_processing).
Выборки и фильтрация данных происходят на серверах хранения, а сервер БД занимается приемом результатов от серверов хранения и их объединением в единый пакет результата.
Для тех, кто хочет углубиться в архитектуру Oracle Exadata прикладываю ссылку.
2️⃣ Способы оптимизации запросов. Описать процесс, привести примеры.
Тема довольно сложная и обширная. Курс по секционированию и оптимизации запросов с лихвой покрывают большинство вопросов на собеседованиях.
3️⃣ Задача на SQL:
см. следующий пост.
4️⃣ Какие особенности работы с таблицами в Greenplum?
Эта тема отдельного поста. Если этот пост наберет 50 лайков, сделаю отдельную статью, в которой подробно разберу данную тему.
5️⃣ Какие цели у централизованного DDS слоя в DWH?
Detail Data Storage, DDS - один из слоев DWH, предназначенный для целей внедрения сквозной аналитики по компании. Он позволяет объединить множество таблиц из различных систем в основные сущности, в разрезе которых анализируется динамика операционных показателей бизнеса.
Отсутствие данного слоя в DWH в большинстве случаев приводит:
▫️к несогласованности показателей в отчетности;
▫️к росту нагрузки на ODS;
▫️к избыточности данных в DWH.
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
Список вопросов: см. в посте вторника.
Ответы:
1️⃣ Smart Scans. Что это и как работает?
Классические схемы включают в себя сервер СУБД и системы хранения. Под каждый из компонентов оборудование может подбираться как отдельно, так и вместе с целью достижения максимальной производительности БД. В таких схемах системы хранения становятся узким местом в вопросах оптимизации производительности БД.
Опция Smart Scan - это фича Oracle Exadata.
Oracle Exadata - это серверный шкаф, состоящий из набора серверного оборудования для дисковой подсистемы(сервера хранения для Exadata) и серверов баз данных, подобранного с целью достижения максимальной производительности БД.
В случае Exadata выполнение SQL-запросов может выполняться на серверах хранения. Ключевое слово может. Эта опция называется Smart Scan. Поскольку это опция, она может быть как включена, так и выключена(см. параметр cell_offload_processing).
Выборки и фильтрация данных происходят на серверах хранения, а сервер БД занимается приемом результатов от серверов хранения и их объединением в единый пакет результата.
Для тех, кто хочет углубиться в архитектуру Oracle Exadata прикладываю ссылку.
2️⃣ Способы оптимизации запросов. Описать процесс, привести примеры.
Тема довольно сложная и обширная. Курс по секционированию и оптимизации запросов с лихвой покрывают большинство вопросов на собеседованиях.
3️⃣ Задача на SQL:
см. следующий пост.
4️⃣ Какие особенности работы с таблицами в Greenplum?
Эта тема отдельного поста. Если этот пост наберет 50 лайков, сделаю отдельную статью, в которой подробно разберу данную тему.
5️⃣ Какие цели у централизованного DDS слоя в DWH?
Detail Data Storage, DDS - один из слоев DWH, предназначенный для целей внедрения сквозной аналитики по компании. Он позволяет объединить множество таблиц из различных систем в основные сущности, в разрезе которых анализируется динамика операционных показателей бизнеса.
Отсутствие данного слоя в DWH в большинстве случаев приводит:
▫️к несогласованности показателей в отчетности;
▫️к росту нагрузки на ODS;
▫️к избыточности данных в DWH.
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
3️⃣ Задача на SQL:
Необходимо перестроить справочник ресторанов, убрав столбец director. История должна быть перестроена.
Основная цель задания - написать sql запрос, который пересоберет историю изменений в формате SCD2, исключая столбец director.
При решении этой задачи в голове сразу всплывает мысль воспользоваться оконными функциями для объединения/схлопывания интервалов по строкам, в которых изменения происходили только по полю director.
Важно учесть периоды, в которых происходили изменения только в поле seat_cnt: 300, 500, 300 при прочих равных условиях, т.е. временные изменения кол-ва мест в ресторанах.
В противном случае получим пересечение соседних интервалов в рамках одного ресторана.
Можно также решить через конструкцию model в oracle.
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
Необходимо перестроить справочник ресторанов, убрав столбец director. История должна быть перестроена.
Основная цель задания - написать sql запрос, который пересоберет историю изменений в формате SCD2, исключая столбец director.
При решении этой задачи в голове сразу всплывает мысль воспользоваться оконными функциями для объединения/схлопывания интервалов по строкам, в которых изменения происходили только по полю director.
Важно учесть периоды, в которых происходили изменения только в поле seat_cnt: 300, 500, 300 при прочих равных условиях, т.е. временные изменения кол-ва мест в ресторанах.
В противном случае получим пересечение соседних интервалов в рамках одного ресторана.
Можно также решить через конструкцию model в oracle.
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
Итоги собеседования во "Вкусно и Точка"
Так и не сумели договориться по деньгам 😊
HR 💬 "Вы произвели хорошее впечатление, но, к сожалению, у нас есть ограничения по ФОТ. Максимально возможный оклад , который мы можем предложить вам, 350k gross."
Договорились на том, что если появятся вакансии поинтереснее, то продолжим диалог.
Дам оценку со своей стороны:
Начало интервью стартовало грустно. Немного смутила не бодрая подача описания задач и самой вакансии со стороны собеседующих. Но где-то в середине нашли общую волну и продолжили в позитивном ключе.
По итогу интервью у меня остались приятные впечатления и могу сказать, что в самом конце появилась профессиональная симпатия к собеседующим.
Выводы:
Для себя я понял, что на собеседовании очень важно говорить уверенно и с легкой наглостью.
⚠️Важно не перегибать и вовремя понять, что вы, возможно, не целиком видите картину.
Обсудить в чатике 🫂
Палец вверх, если зашло 👍
Ставь 🔥, если хочешь узнать, что спрашивали на интервью по секции System Design в компанию, занимающуюся разработкой продуктов интегрированного планирования и управления цепями поставок.
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer
Так и не сумели договориться по деньгам 😊
HR 💬 "Вы произвели хорошее впечатление, но, к сожалению, у нас есть ограничения по ФОТ. Максимально возможный оклад , который мы можем предложить вам, 350k gross."
Договорились на том, что если появятся вакансии поинтереснее, то продолжим диалог.
Дам оценку со своей стороны:
Начало интервью стартовало грустно. Немного смутила не бодрая подача описания задач и самой вакансии со стороны собеседующих. Но где-то в середине нашли общую волну и продолжили в позитивном ключе.
По итогу интервью у меня остались приятные впечатления и могу сказать, что в самом конце появилась профессиональная симпатия к собеседующим.
Выводы:
Для себя я понял, что на собеседовании очень важно говорить уверенно и с легкой наглостью.
⚠️Важно не перегибать и вовремя понять, что вы, возможно, не целиком видите картину.
Обсудить в чатике 🫂
Палец вверх, если зашло 👍
Ставь 🔥, если хочешь узнать, что спрашивали на интервью по секции System Design в компанию, занимающуюся разработкой продуктов интегрированного планирования и управления цепями поставок.
Обсудить в чатике 💬
Автор: Ruslan
#вкусноиточка #собеседование
Oracle Developer