Oracle Developer👨🏻‍💻
3.18K subscribers
554 photos
46 videos
2 files
437 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура, сертификации и многое другое...

Проводим обучение по различным программам - оптимизация, PL/SQL, секционирование и др. для ФЛ и ЮЛ.

Автор канала: @denis_dbd Кивилёв Денис
Download Telegram
Собеседование в MagnIT

Друзья, всем привет!

Решил последовать примеру автора канала и сделать пост на тему технического собеседования в Magnit Tech.

Неделю назад, сидя на удаленке в ожидании доступов на один банковский проект, увидел вакансию на позицию Middle/Senior DWH разработчик в Магнит и решил разнообразить ожидание собеседованием в самый большой ритейл в мире (по количеству торговых точек, разумеется).
Реакция HR не заставила долго ждать.

О вакансии
Экосистема КХД включает в себя:
▫️Хранилище Teradata(450 Tb);
▫️Exadata — ODS;
▫️Hadoop для хранения холодных данных;
▫️Informatica PC/DEI в качестве ETL-инструмента.

Основные задачи:
1️⃣ Поддерживать текущее решение на Oracle и Teradata;
2️⃣ Принимать участие в миграции на облачные решения Yandex Cloud Platform на базе Greenplum и Hadoop. Возможно, что-то еще.

Проект по миграции планируется на 3 года.

Плюшки
В лучшем случае, ДМС и курсы + возможность работать как в Москве, так и удалено.

Про з/п
Старт от 200к net. Запрашивал 300к net. Готовы обсуждать, тут многое зависит от вас.

Этапы собеседований
1️⃣
Предварительное общение с HR
Про опыт и мотивацию. Было пару входных тестовых вопросов. Отличная практика - дает примерное представление о об уровне требований работодателя и подготовки соискателя.

Продолжительность интервью - 30 минут.

2️⃣ Интервью
Состав из 4 человек:
▫️ Руководитель направления DWH развития;
▫️ Senior DE инженер;
▫️ DWH аналитик-разработчик;
▫️ HR специалист.
Формат интервью:
▫️ Знакомство;
▫️ Теоретическое собеседование;
▫️ Написание запросов;
▫️ Вопросы от соискателя.

Продолжительность интервью - 1.5 часа.

3️⃣ Оффер

Продолжение следует...

Автор: @Rus5553
#собеседование #magnit
Oracle Developer
Magnit Tech. Экспресс-вопросы от HR. Ответы

Список вопросов: см. в посте вторника.

Ответы:
1️⃣ Виды Join
Inner, Equi, Self, Semi, Outer(left, right, full), Cross, Anti

2️⃣ Аналитические функции
Row_number, rank, dense_rank, lead, lag и т.д.
Весь перечень аналитических функций можно найти в
документации.

3️⃣ Что такое undo/redo? Для чего нужны?

Undo - сегмент отката транзакций. В момент совершения транзакции Oracle старые записи вычитывает и хранит в табличном пространство Undo. Новые данные пишутся в Buffer cache. Такой механизм позволяет сделать откат (rollback) транзакции, а также параллельным сессиям читать только зафиксированные транзакции, не дожидаясь фиксации текущей транзакции.

Redo logs - журналы повторного выполнения, по сути, основа процесса восстановления, благодаря которым Oracle гарантирует восстановление изменений пользователя на случая сбоя.

Ссылки на документацию: undo, redo.

4️⃣ Виды индексов

По физической организации можно выделить:
▫️b-tree;
▫️bitmap;
▫️пользовательские индексы;
▫️кластерные индексы.

По типу:
▫️обычные индексы по полям без модификаций;
▫️функциональные индексы;
▫️индексы с сортировкой;
▫️локальные и глобальные индексы;
▫️реверсивные.

Индексный доступ используется для чтения небольших объемов данных из большой таблицы. Примерно, 1-5% от общего объема.

5️⃣ Что хранится в блоках b-tree индекса?

В блоках b-tree индекса хранятся поля, по которым строился индекс, а также rowid. Детали в документации.

6️⃣ Виды физического соединения таблиц:
▫️nested Loops;
▫️merge join;
▫️hash join.

Используются в следующих случаях:
▫️Для OLTP характерен Nested Loops с использованием индексного доступа (unique, range scan).
▫️Для DSS/DWH/OLAP, чаще всего, используется полное сканирование таблиц. При полном сканировании данных - merge и hash join эффективней.

Об алгоритмах физического соединения таблиц можно прочитать
здесь.

7️⃣ Когда используется truncate? Ожидал, что следующий вопрос будет про разницу между truncate и delete. Не стал дожидаться вопроса и дал ответ сразу. Детали ответа можно найти в посте.

Truncate, DDL команда, в основном используется для чистки всей таблицы или секции таблицы. В отличии от команды Delete, Truncate сбрасывает HWM.

8️⃣ Что делать с фрагментированной таблицей?

Фрагментированная таблица - таблица с пустыми блоками данных.
Есть четыре способа дефрагментации таблиц(сброс HWM):
▫️alter table + move;
▫️export / truncate / import;
▫️create table as select (CTAS);
▫️dbms_redefinition.


Напомню, это вопросы со скриниг-интервью от HR.
Главная его задача, попасть в те ответы, которые есть у HR в чеклисте. Не нужно вступать в научные дискуссии и учить уму разуму бедную девушку 😊

На следующей недели опубликуем вопросы/ответы с технического собеседования, впечатления и результат 😉

Автор: @Rus5553
#решениезадачи #magnit
Oracle Developer
Техническое собеседование в MagnIT

Формат общения - онлайн, звонок в Teams.

Список тем:

1️⃣ Оптимизация запросов
Способы определения узких мест в запросах, ключевые метрики/статистики в планах выполнения запросов. Что означает кардинальность = 1? Как обновить статистику и какой хинт может использоваться?

2️⃣ Физические виды соединения таблиц
Алгоритм каждого соединения, особенности применения и механизм работы hash join.

3️⃣ Виды индексного доступа
Особенности применения b-tree и bitmap индексов. Что отобразиться в плане при join 2х таблиц, у одной из которых по столбцам соединения отсутствуют индексы? Особенности применения index fast full scan и index full scan, а также механизм сканирования листовых блоков.

4️⃣ Секционирование
Что логически и физически представляет объект после секционирования? Виды и опции, практические кейсы применения. В какую секцию при вставке данных определится NULL при list секционировании? Практики создания секций. Есть ли возможность автоматизировать создание секций в момент вставки данных? Практики и особенности работы DML операциий на секционированных таблицах с глобальным и локальным индексом/индексами?

5️⃣ Compaction сегмента
Как бороться с фрагментацией сегмента?

6️⃣ Хинты
Best practice из личного опыта по хинтам. Как работает хинт append?

7️⃣ Undo tablespace
Что такое undo и принцип его работы. В каких случаях может возникнуть ошибка snapshot too old? Способы решения этой проблемы.

⚠️ Также были две задачи на 10-15 мин. в общей сложности. К сожалению, детали условий задач не запомнил.

Разбор как всегда в четверг 🎓

Автор: @Rus5553
#собеседование #magnit
Oracle Developer
Коллеги, всем привет!

К сожалению, объем ответов на вопросы получился сильно больше, чем 1 пост (аж 4 поста). Поэтому мы решили вынести их в отдельную статью. Автор @Rus5553

Многие вопросы, так или иначе, уже обсуждались в канале.
Руслан, спасибо за труд 👍

Кстати говоря, не рекламы ради, а справедливости для.
Руслан занимался у меня с 2021 года по индивидуальной программе - архитектура, SQL, PL/SQL, unit-тестирование. Посещал мои курсы - секционирование, PL/SQL Основы. Сейчас самый первый проходит курс по Оптимизации (эксклюзив так сказать), дает мне обратную связь.

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

И у меня тоже есть свой ментор, только в другой области ИТ ☺️ Менторство - очень эффективный инструмент.

В следующем посте будет окончание истории про MagnIT 😉

#собеседование #magnit
Oracle Developer
Итоги собеседования в MagnIT

Оффер я так и не получил 😊

HR 💬 "На интервью показали достаточно высокий уровень в части теории, но в практической части были допущены ошибки. Мы видим потенциал и хотели бы договориться еще об одной встрече, чтобы продолжить практическую часть по sql."

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

От проведения еще одного 1.5 часового интервью я отказался.

Не буду придерживаться нейтральной позиции и дам оценку HR скринингу и техническому собеседованию.

В целом процесс взаимодействия с HR был приятным и эффективным. Все прозрачно и адекватно.
Остались неприятные впечатления относительно самого интервью, больше похоже на допрос, чем на беседу:
1️⃣ Неэффективное распределение времени на каждом из этапов интервью, пропустили секцию со знакомством и сразу перешли к технической части.
2️⃣ Спустя 1ч 10 мин. перешли к практике, еще через 10 мин. пришлось тактично прервать и напомнить, что и у меня есть вопросы.
3️⃣ В 50% вопросах невнятная формулировка.

Справедливости ради отмечу и плюсы
1️⃣ Компетентные собеседующие и интересные вопросы уровня middle (это субъективно).
2️⃣ Собеседование проходило в уважительной и мягкой форме.
3️⃣ Действительно большие объемы данных, возможность погрузиться в предметную область и поработать на широком стеке технологий (РСУБД, BIG DATA), поучаствовать в проекте миграции большого хранилища.

Выводы/Рекомендации
1️⃣ Уточнять у HR обо всех этапах заранее
Вы рассчитывали на одно большое интервью(знакомство, тех. вопросы и вопросы от вас), а вам предлагают еще несколько этапов. Может возникнуть негатив относительного самого процесса.

2️⃣ Иногда нужно "показать зубы"
Поможет избежать попыток дать ответ на вопрос с непонятной формулировкой. Главное без фанатизма, ключевое слово иногда, все должно быть в рамках корпоративной культуры. Soft skills - это 50 % успеха.

3️⃣ Не иметь завышенных ожиданий относительно Soft Skills собеседующих
Нужно понимать, что IT все же не сфера специалистов с высоким уровнем коммуникаций. Специалисты в основном ориентированы на технику, чем на ведение переговоров.

⚠️ Не факт, что у вас будут те же впечатления от собеседования в Магнит. Это субъективно. Дерзайте!

А какие у вас были положительные и негативные впечатления после собеседования? Обсудить в чатике 🫂

Палец вверх, если зашло 👍

Автор: @Rus5553
#собеседование #magnit
Oracle Developer
🌐 Навигация по темам канала Oracle Developer

📘 Основы
#sql #plsql #теория #архитектура
#функции #секционирование #временныетаблицы
#транзакции #исключения #курсоры
#аналитическиефункции #иерархическиезапросы
#системныепредставления #компиляция #представления #коллекции #циклы

🛠 Практика и задачи
#задача #решениезадачи #asktom

🚀 Оптимизация и производительность
#оптимизация #nestedloops #индекс

🧩 Инструменты и технологии
#тестирование #postgresql #oracle #docker #oracle23c #ide #ai

💼 Карьера и Развитие
#карьера #собеседование #hr #тинькофф #magnit #вкусноиточка #leroymerlin#сбер #яндекс #Эффективность #КарьерныйРост #Denis_Kivillev #Работа

🎓 Дополнительные материалы
#видео #подкаст #аудиоподкаст #конкурс #марафон #юмор


В почти 700 (!) постах не мудрено заплутать. Поэтому решил сделать подобие навигации 😉
Не забывайте пользоваться обычным поиском, я не добавил сюда низкочастотные хештеги
.

Канал Oracle Developer | Чатик💬