Яндекс + Oracle
Сидишь никого не трогаешь, резюме везде закрыто, работу не ищешь, и все равно, нет нет, да упадет предложение от “охотников за головами”.
В декабре опять произошла подобная история. На этот раз HR-фрилансер с позицией Oracle DBD в Яндекс. Ух, сам Яндекс(!)
Был удивлен. Зачем Яндексу Oracle-разработчики? Но, тем не менее, есть позиции, где требуется данная квалификация 🎓
Нет смысла нудить про импортозамещение, про “Oracle дорого”, про скрепы, YandexDB и т.п. Надо значит надо.
Один мой бывший коллега, на различных online-митапах, часто говорит о том, что он “прошел собеседование в Яндекс, но выбрал другую компанию”. Т.е. пройти собеседу туда считается достижением (без сарказма).
Это не одно собеседование, а целый ряд сессий. Общение по родном стеку, алгоритмическая секция, общение с руководителем и т.п. Подобрать ключик к интервьюверам сложно, но возможно.
Если вам интересно, могу рассказать о том, как это было, какие задачки спрашивали и другие подробности. И самое главное, чем в итоге все закончилось 😉
Ребятам с Яндекса (они теперь в канале). Вы крутые, спасибо за уделенное время. Я обещаю не публиковать конкретные формулировки ваших заданий.
Всем хороших выходных!
#яндекс
Сидишь никого не трогаешь, резюме везде закрыто, работу не ищешь, и все равно, нет нет, да упадет предложение от “охотников за головами”.
В декабре опять произошла подобная история. На этот раз HR-фрилансер с позицией Oracle DBD в Яндекс. Ух, сам Яндекс(!)
Был удивлен. Зачем Яндексу Oracle-разработчики? Но, тем не менее, есть позиции, где требуется данная квалификация 🎓
Нет смысла нудить про импортозамещение, про “Oracle дорого”, про скрепы, YandexDB и т.п. Надо значит надо.
Один мой бывший коллега, на различных online-митапах, часто говорит о том, что он “прошел собеседование в Яндекс, но выбрал другую компанию”. Т.е. пройти собеседу туда считается достижением (без сарказма).
Это не одно собеседование, а целый ряд сессий. Общение по родном стеку, алгоритмическая секция, общение с руководителем и т.п. Подобрать ключик к интервьюверам сложно, но возможно.
Если вам интересно, могу рассказать о том, как это было, какие задачки спрашивали и другие подробности. И самое главное, чем в итоге все закончилось 😉
Ребятам с Яндекса (они теперь в канале). Вы крутые, спасибо за уделенное время. Я обещаю не публиковать конкретные формулировки ваших заданий.
Всем хороших выходных!
#яндекс
Oracle & Яндекс. Часть 2
Судя по всему, тема с Яндексом интересна. Продолжаю.
Оговорюсь, это мой личный опыт. У вас он может быть другим.
На декабрь месяц, было два направления для Oracle DBD:
1️⃣ Разработчик Oracle + OeBS
2️⃣ Разработчик Oracle в Яндекс.Банк
Не уверен, что специалисты до сих пор нужны, но вакансии активны.
Этапы собеседования:
1️⃣ общение с тим-лидом команды;
2️⃣ техническое собеседование;
3️⃣ общение с CEO направления;
4️⃣ финалочка с презентацией оффера.
Алгоритмического этапа для DBD решили не делать. К вопросу, как часто спрашивают про ООП и SOLID на собеседованиях на DBD - “никогда”.
Смею предположить, что вам интересен этап “техническое собеседование”.
Мне посчастливилось пройти техническое собеседование и на первую вакансию, и на вторую. Поэтому есть некоторое представление.
🔹На техническое собеседование дают 1 час.
🔹3-4 задачи.
🔹Все это происходит по Zoom в реальном времени. Вы рассуждаете, пишите запросы/отвечаете, интервьюер внимательно слушает ход ваших мыслей.
🔹Если у вас есть уточняющий вопрос по заданию - могут подсказать.
🔹Царит вполне дружелюбная обстановка, никто вас не пытается “загнобить”.
Ребятам с Яндекса - респект. Было приятно пообщаться 👍
Основные группы вопросов: SQL-функции, задачи на соединения, аналитические функции. На аналитику особенный упор. Еще был один общий вопрос на оптимизацию. Примерно такой.
Некоторые из задач мы уже разбирали в канале. Некоторые я еще опубликую, в измененном виде.
Пока всё. Продолжение в следующих постах 😉
#яндекс
Судя по всему, тема с Яндексом интересна. Продолжаю.
Оговорюсь, это мой личный опыт. У вас он может быть другим.
На декабрь месяц, было два направления для Oracle DBD:
1️⃣ Разработчик Oracle + OeBS
2️⃣ Разработчик Oracle в Яндекс.Банк
Не уверен, что специалисты до сих пор нужны, но вакансии активны.
Этапы собеседования:
1️⃣ общение с тим-лидом команды;
2️⃣ техническое собеседование;
3️⃣ общение с CEO направления;
4️⃣ финалочка с презентацией оффера.
Алгоритмического этапа для DBD решили не делать. К вопросу, как часто спрашивают про ООП и SOLID на собеседованиях на DBD - “никогда”.
Смею предположить, что вам интересен этап “техническое собеседование”.
Мне посчастливилось пройти техническое собеседование и на первую вакансию, и на вторую. Поэтому есть некоторое представление.
🔹На техническое собеседование дают 1 час.
🔹3-4 задачи.
🔹Все это происходит по Zoom в реальном времени. Вы рассуждаете, пишите запросы/отвечаете, интервьюер внимательно слушает ход ваших мыслей.
🔹Если у вас есть уточняющий вопрос по заданию - могут подсказать.
🔹Царит вполне дружелюбная обстановка, никто вас не пытается “загнобить”.
Ребятам с Яндекса - респект. Было приятно пообщаться 👍
Основные группы вопросов: SQL-функции, задачи на соединения, аналитические функции. На аналитику особенный упор. Еще был один общий вопрос на оптимизацию. Примерно такой.
Некоторые из задач мы уже разбирали в канале. Некоторые я еще опубликую, в измененном виде.
Пока всё. Продолжение в следующих постах 😉
#яндекс
Непересекающиеся отрезки
Задача: при вставке в таблицу необходимо проверять, что новая строка не пересекается по датам с уже имеющимися в разрезе клиента.
Необходимо написать запрос проверяющий пересечения.
c '2022-01-10' по '2022-01-12'-- ок
с '2022-01-10' по '2022-02-01'-- ok
c '2021-12-01' по '2022-01-02' - ошибка
с '2022-01-14' по '2022-02-03'-- ошибка
Визуально можно посмотреть на рисунке:
▫️1-й отрезок пересекается своим окончанием с уже имеющимся;
▫️2-й отрезок пересекается своим началом с окончанием имеющегося;
и так далее. варианты могут быть различные.
▫️“все ок” - отрезки, которые не пересекаются с имеющимися.
Решение в четверг 🎓
#задача #яндекс
Задача: при вставке в таблицу необходимо проверять, что новая строка не пересекается по датам с уже имеющимися в разрезе клиента.
Необходимо написать запрос проверяющий пересечения.
create table client_tariff(Примеры:
client_id number(38) not null,
date_from date not null,
date_till date not null
--...
);
insert into client_tariff values
(1, date'2022-01-01', date'2022-01-10');
insert into client_tariff values
(1, date'2022-02-01', date'2022-02-13');
c '2022-01-10' по '2022-01-12'-- ок
с '2022-01-10' по '2022-02-01'-- ok
c '2021-12-01' по '2022-01-02' - ошибка
с '2022-01-14' по '2022-02-03'-- ошибка
Визуально можно посмотреть на рисунке:
▫️1-й отрезок пересекается своим окончанием с уже имеющимся;
▫️2-й отрезок пересекается своим началом с окончанием имеющегося;
и так далее. варианты могут быть различные.
▫️“все ок” - отрезки, которые не пересекаются с имеющимися.
Решение в четверг 🎓
#задача #яндекс
Непересекающиеся отрезки. Решение
Задача: постановка в посте вторника.
Решение:
Суть: необходимо проверять границы отрезков. Можно решить задачу ”в лоб”. Расписать все кейсы, когда новый отрезок заходит одной границей на начало отрезка в таблице, когда другой и т.д. Получится огромная “портянка” из условий.
Можно пойти от обратного (см. рисунок)
Достаточно проверить, что b2 > a and a2 < b;
Итоговый запрос:
И один раз на собеседовании в Яндексе. Правда, там задача с отрезками еще более замороченная. Но если вы поймете принцип этого решения, значит сможете сообразить как решаются подобные задачи.
Обсудить в чатике
#решениезадачи #яндекс #отрезки
Задача: постановка в посте вторника.
Решение:
Суть: необходимо проверять границы отрезков. Можно решить задачу ”в лоб”. Расписать все кейсы, когда новый отрезок заходит одной границей на начало отрезка в таблице, когда другой и т.д. Получится огромная “портянка” из условий.
Можно пойти от обратного (см. рисунок)
Достаточно проверить, что b2 > a and a2 < b;
Итоговый запрос:
select count(1)В моей практике, подобная задача периодически возникала в рабочих кейсах.
from (select 1 client_id,
date'2022-01-10' d_from,
date'2022-01-12' d_till
from dual) e
join client_tariff t
on t.client_id = e.client_id
and e.d_till > t.date_from
and e.d_from < t.date_till;
И один раз на собеседовании в Яндексе. Правда, там задача с отрезками еще более замороченная. Но если вы поймете принцип этого решения, значит сможете сообразить как решаются подобные задачи.
Обсудить в чатике
#решениезадачи #яндекс #отрезки
Задача: дана таблица tab1. В ней N-строк. Необходимо написать запрос, который для каждых 3 строк будет считать сумму поля “n”. Сортировка по “n”.
Для текущего примера (см скриншот). В таблице хранится 7 строк: 1, 2, 3, 4, 5, 6, 7.
Результатом запроса будет три строки с суммами (см скрин):
1) 1 + 2 + 3 = 6
2) 4 + 5 + 6 = 15
3) 7 = 7
Для повторения:
#задача #яндекс
Для текущего примера (см скриншот). В таблице хранится 7 строк: 1, 2, 3, 4, 5, 6, 7.
Результатом запроса будет три строки с суммами (см скрин):
1) 1 + 2 + 3 = 6
2) 4 + 5 + 6 = 15
3) 7 = 7
Для повторения:
create table tab1(Обсуждение решения в четверг 🎓
n number(10)
);
insert into tab1
select level
from dual connect by level <= 7;
commit;
#задача #яндекс
Задача: подробная постановка в посте вторника.
Решение:
Задачка на аналитические функции (АФ).
Прежде чем получить сумму для каждой сгруппированной тройки строк, нужно как-то им дать порядковые номера групп. Как только получим номер группы для каждой исходной строки можно суммировать "n".
Необходимо помнить про сортировку по “n” при расстановке номеров групп.
▫️АФ row_number - для каждой строки отдаст порядковый номер с учетом сортировки.
▫️Функция ceil - вернет наименьшее целое число, которое не меньше числа, указанного в качестве аргумента (см скрин).
Итоговый запрос:
Подобная задачка была на собеседовании в Яндексе, только более замороченная с дополнительными АФ.
Перетереть в чатике
#решениезадачи #яндекс #аналитическиефункции
Решение:
Задачка на аналитические функции (АФ).
Прежде чем получить сумму для каждой сгруппированной тройки строк, нужно как-то им дать порядковые номера групп. Как только получим номер группы для каждой исходной строки можно суммировать "n".
Необходимо помнить про сортировку по “n” при расстановке номеров групп.
▫️АФ row_number - для каждой строки отдаст порядковый номер с учетом сортировки.
▫️Функция ceil - вернет наименьшее целое число, которое не меньше числа, указанного в качестве аргумента (см скрин).
Итоговый запрос:
select group_, sum(n) group_summaНа скрине развернул внутренний запрос для наглядности.
from (select n
,ceil(row_number() over(order by n) / 3) group_
from tab1)
group by group_
order by group_;
Подобная задачка была на собеседовании в Яндексе, только более замороченная с дополнительными АФ.
Перетереть в чатике
#решениезадачи #яндекс #аналитическиефункции
Друзья, всем привет!
Заканчиваю телегу про Яндекс.
Остановились мы на истории о собеседовании в Яндекс.
Посмотрел те две вакансии. Одна уже в архиве. Актуальна ли вторая? хороший вопрос.
Такое ощущение, что это было в прошлой жизни…
Не буду больше интриговать. Я тогда успешно прошел все собеседования и получил оффер. У них были довольно шикарные условия по входному бонусу, премиям и размеру з/п. Не уверен, что предлагают всем и… я отклонил оффер и остался в Qiwi 💛
Кстати, проскальзывала инфа, что у Яндекса мораторий на набор. Может фейк…
Если знаете, напишите плиз в чатике.
В сухом остатке - задачи с Яндекс-собеса. Завтра опубликую очередную. Есть набор или нет набора, а мозг размять полезно 🎓
#яндекс
Заканчиваю телегу про Яндекс.
Остановились мы на истории о собеседовании в Яндекс.
Посмотрел те две вакансии. Одна уже в архиве. Актуальна ли вторая? хороший вопрос.
Такое ощущение, что это было в прошлой жизни…
Не буду больше интриговать. Я тогда успешно прошел все собеседования и получил оффер. У них были довольно шикарные условия по входному бонусу, премиям и размеру з/п. Не уверен, что предлагают всем и… я отклонил оффер и остался в Qiwi 💛
Кстати, проскальзывала инфа, что у Яндекса мораторий на набор. Может фейк…
Если знаете, напишите плиз в чатике.
В сухом остатке - задачи с Яндекс-собеса. Завтра опубликую очередную. Есть набор или нет набора, а мозг размять полезно 🎓
#яндекс
Задача с курсами валют
Постановку задачи смотрите в посте вторника.
Довольно баянная задача. Периодически встречается на собесах.
1. Для решения используем конструкцию keep dense rank в режиме группировки по name (group by name).
2. Сортировка внутри групп по колонке date по убыванию (desc). Если есть null-значения в колонке date, то они уйдут в самый верх отсортированных значений (nulls last).
3. first - берем первый результат ранжирования внутри группы ибо desc-сортировка.
4. Для каждого требуемого столбца результата выбираем соответствующие столбцы - date/rate. min - получает минимальное значение из первого результата. В данном случае, без разницы min/max.
Итого:
select t.name
,min(ddate) keep(dense_rank first order by ddate desc nulls last) ddate
,min(rate) keep(dense_rank first order by ddate desc nulls last) rate
from FxRates t
group by t.name;
Запрос можно переписать на такой:
select t.name
,min(ddate) keep(dense_rank last order by ddate asc nulls first) ddate
,min(rate) keep(dense_rank last order by ddate asc nulls first) rate
from FxRates t
group by t.name;
Объяснения может не хватить, особенно, если вы никогда не сталкивались с этим. Рекомендую воссоздать тестовый пример и поиграться с конструкцией keep dense_rank first/last.
У меня в загашнике есть еще одна очень интересная задачка на эту тему 😉
#решениезадачи #яндекс
Постановку задачи смотрите в посте вторника.
Довольно баянная задача. Периодически встречается на собесах.
1. Для решения используем конструкцию keep dense rank в режиме группировки по name (group by name).
2. Сортировка внутри групп по колонке date по убыванию (desc). Если есть null-значения в колонке date, то они уйдут в самый верх отсортированных значений (nulls last).
3. first - берем первый результат ранжирования внутри группы ибо desc-сортировка.
4. Для каждого требуемого столбца результата выбираем соответствующие столбцы - date/rate. min - получает минимальное значение из первого результата. В данном случае, без разницы min/max.
Итого:
select t.name
,min(ddate) keep(dense_rank first order by ddate desc nulls last) ddate
,min(rate) keep(dense_rank first order by ddate desc nulls last) rate
from FxRates t
group by t.name;
Запрос можно переписать на такой:
select t.name
,min(ddate) keep(dense_rank last order by ddate asc nulls first) ddate
,min(rate) keep(dense_rank last order by ddate asc nulls first) rate
from FxRates t
group by t.name;
Объяснения может не хватить, особенно, если вы никогда не сталкивались с этим. Рекомендую воссоздать тестовый пример и поиграться с конструкцией keep dense_rank first/last.
У меня в загашнике есть еще одна очень интересная задачка на эту тему 😉
#решениезадачи #яндекс
Oracle + Тинькофф. Введение
Друзья всем привет!
В начале этого года я уже публиковал историю моих собеседований в #яндекс. Очередь банка “Тинькофф” 💰
В ноябре на меня вышел HR с вакансией в процессинговый центр “Тинькофф”.
Вакансия: PL/SQL разработчик, готовый развиваться в сторону Java-стека.
Отличная возможность запилить контент в канал, подумал я, и согласился 🙃
Основные задачи:
1️⃣ Поддерживать текущее решение на Oracle 19;
2️⃣ Принимать участие в миграции этого хозяйства в Java-экосистему (Java11-17, PostgreSQL, NoSQL-решения и т.п.).
Перспективы: импортозамещение - тема крайне актуальна для российского рынка. Специалист, умеющий в Oracle + Java и участвовавший в проектах миграции (импортозамещении) в крупном ФинТех будет на вес золото в следующие 5-15 лет.
Я даже не упоминаю про плюшки самой компании + возможность работать удаленно как в РФ, так и в странах ближнего зарубежья.
Про з/п не пишу - тут многое зависит от вас.
продолжение ⬇️
Друзья всем привет!
В начале этого года я уже публиковал историю моих собеседований в #яндекс. Очередь банка “Тинькофф” 💰
В ноябре на меня вышел HR с вакансией в процессинговый центр “Тинькофф”.
Вакансия: PL/SQL разработчик, готовый развиваться в сторону Java-стека.
Отличная возможность запилить контент в канал, подумал я, и согласился 🙃
Основные задачи:
1️⃣ Поддерживать текущее решение на Oracle 19;
2️⃣ Принимать участие в миграции этого хозяйства в Java-экосистему (Java11-17, PostgreSQL, NoSQL-решения и т.п.).
Перспективы: импортозамещение - тема крайне актуальна для российского рынка. Специалист, умеющий в Oracle + Java и участвовавший в проектах миграции (импортозамещении) в крупном ФинТех будет на вес золото в следующие 5-15 лет.
Я даже не упоминаю про плюшки самой компании + возможность работать удаленно как в РФ, так и в странах ближнего зарубежья.
Про з/п не пишу - тут многое зависит от вас.
продолжение ⬇️
🌐 Навигация по темам канала Oracle Developer
📘 Основы
#sql #plsql #теория #архитектура
#функции #секционирование #временныетаблицы
#транзакции #исключения #курсоры
#аналитическиефункции #иерархическиезапросы
#системныепредставления #компиляция #представления #коллекции #циклы
🛠 Практика и задачи
#задача #решениезадачи #asktom
🚀 Оптимизация и производительность
#оптимизация #nestedloops #индекс
🧩 Инструменты и технологии
#тестирование #postgresql #oracle #docker #oracle23c #ide #ai
💼 Карьера и Развитие
#карьера #собеседование #hr #тинькофф #magnit #вкусноиточка #leroymerlin #сбер #яндекс #Эффективность #КарьерныйРост #Denis_Kivillev #Работа
🎓 Дополнительные материалы
#видео #подкаст #аудиоподкаст #конкурс #марафон #юмор
—
В почти 700 (!) постах не мудрено заплутать. Поэтому решил сделать подобие навигации 😉
Не забывайте пользоваться обычным поиском, я не добавил сюда низкочастотные хештеги.
Канал Oracle Developer | Чатик💬
📘 Основы
#sql #plsql #теория #архитектура
#функции #секционирование #временныетаблицы
#транзакции #исключения #курсоры
#аналитическиефункции #иерархическиезапросы
#системныепредставления #компиляция #представления #коллекции #циклы
🛠 Практика и задачи
#задача #решениезадачи #asktom
🚀 Оптимизация и производительность
#оптимизация #nestedloops #индекс
🧩 Инструменты и технологии
#тестирование #postgresql #oracle #docker #oracle23c #ide #ai
💼 Карьера и Развитие
#карьера #собеседование #hr #тинькофф #magnit #вкусноиточка #leroymerlin #сбер #яндекс #Эффективность #КарьерныйРост #Denis_Kivillev #Работа
🎓 Дополнительные материалы
#видео #подкаст #аудиоподкаст #конкурс #марафон #юмор
—
В почти 700 (!) постах не мудрено заплутать. Поэтому решил сделать подобие навигации 😉
Не забывайте пользоваться обычным поиском, я не добавил сюда низкочастотные хештеги.
Канал Oracle Developer | Чатик💬