Разбираем вопросы собеседования на Middle и Senior Developer | Backend Developer Interview #1

  Рет қаралды 10,552

Андрей Суховицкий

Андрей Суховицкий

Жыл бұрын

Разбираем вопросы собеседования на Middle и Senior Developer | Backend Developer Interview #1
ССЫЛКА НА КУРС:
it-es-course.getcourse.ru/main По промокоду ESCOURSE дополнительная скидка 10% до 7 сентября!
Автор курса: Андрей Суховицкий
Действующий разработчик ПО, работает над проектированием и разработкой высоконагруженных систем.
Последние 4 года создаю и провожу авторские курсы по микросервисной архитектуре, проектированию производительных систем и проектированию ПО в университете ИТМО и МФТИ.
В 2021 году получил награду как лучший преподаватель ИТМО.
01:38 - Вопрос про перевод денег между аккаунтами в банке
04:40 - Блокировка строк, взаимная блокировка (deadlock), иерархическая блокировка
08:23 - Транзакции, ACID
09:57 - Изоляция транзакций, уровни изоляции
19:27 - Вопрос об оптимизации СУБД и обращения к ней
20:53 - Анализ запросов - EXPLAIN ANALYSE
22:43 - Реорганизация структуры БД - денормализация
23:54 - Вертикальное масштабирование / Репликация / Партиционирование
27:57 - CQRS, проекции
31:08 - Вопрос о мониторинге - Prometheus, Grafana, виды метрик и что стоит покрывать метриками
48:29 - О курсе по Event Sourcing, Event Driven и DDD
Полезные ссылки:
www.postgresql.org/docs/curre... - чтобы повторить уровни изоляции в Postgres и гарантии, которые они дают
jepsen.io/consistency - чтобы много знать про виды согласованности в транзакционных и распределенных системах
#java #javainterviewquestions #eventdrivenarchitecture #microservices

Пікірлер: 23
@suvorov_alexey
@suvorov_alexey Жыл бұрын
Очень интересно было услышать рассуждения опытного специалиста. Спасибо за интервью
@sukhoa
@sukhoa Жыл бұрын
01:38 - Вопрос про перевод денег между аккаунтами в банке 04:40 - Блокировка строк, взаимная блокировка (deadlock), иерархическая блокировка 08:23 - Транзакции, ACID 09:57 - Изоляция транзакций, уровни изоляции 19:27 - Вопрос об оптимизации СУБД и обращения к ней 20:53 - Анализ запросов - EXPLAIN ANALYSE 22:43 - Реорганизация структуры БД - денормализация 23:54 - Вертикальное масштабирование / Репликация / Партиционирование 27:57 - CQRS, проекции 31:08 - Вопрос о мониторинге - Prometheus, Grafana, виды метрик и что стоит покрывать метриками 48:29 - О курсе по Event Sourcing, Event Driven и DDD
@nsnsnsnsnsnsnsns
@nsnsnsnsnsnsnsns Жыл бұрын
Интересно, ждем следующее видео)
@user-kk9rx4jd6zs
@user-kk9rx4jd6zs 9 ай бұрын
Круто! Мне понравилось, спасибо за контент)
@alexricher2554
@alexricher2554 6 ай бұрын
Посмотрел на одном дыхании) Будучи джуном, пытался залететь на сеньора и мне задавали аналогичные вопросы. Теперь я более опытен, но все равно не знаю как подать некоторые вещи на собеседовании. А тут все довольно круто изложено и аргументировано: Андрей - вы очень крутой преподаватель и разработчик)
@svetlanafedorova654
@svetlanafedorova654 Жыл бұрын
Разве уровень транзакции RepetableRead решает проблему фантомного чтения? Ее вроде как решает как раз Serializable
@sukhoa
@sukhoa Жыл бұрын
В общем случае фантомные чтения разрешены на уровне RepeatableRead. Но мы рассуждали про postgres, а у него такая ситуация невозможна. www.postgresql.org/docs/current/transaction-iso.html
@svetlanafedorova654
@svetlanafedorova654 Жыл бұрын
@@sukhoa спасибо за ответ)
@MrCosmicAlex
@MrCosmicAlex Жыл бұрын
Уважаемые разработчики, изначально задача ставилась как уйти от дедлок, я не очень понял как транзакции могут в этом помочь. Прокомментируйте, пожалуйста.
@blackplaydoh3522
@blackplaydoh3522 Жыл бұрын
Транзакция включает некий уровень изоляции и блокирует доступ к данным пока они обрабатываются.
@rootbeer2366
@rootbeer2366 Жыл бұрын
отличие ждуна от мидла в том что джун не триггерится с теоретических бесполезных вопросов пока он пытается рассказать как что должно работать, а останавливается и думает над максимально подробным ответом
@Deletedeletedelete
@Deletedeletedelete 11 ай бұрын
Сомнительно, но окэй
@yevhendatsenko9989
@yevhendatsenko9989 6 ай бұрын
первый вопрос дичь. Деньги хранятся в виде дебита и кредита
@SergT1974
@SergT1974 Жыл бұрын
Не должно быть грязного чтения и: x := (SELECT amount FROM accounts WHERE id = 1); UPDATE accounts SET amount = x + 100 WHERE id = 1 AND amount = x;
@sukhoa
@sukhoa Жыл бұрын
Если у нас есть две параллельные операции, которые прибавляют 100 к текущему значению, то, вероятно, мы бы хотели, чтобы результат этих операций был 200. Мы можем себе это позволить (операции ассоциативны). В результате выполнения вашего кода, если одна операция справилась первой, то вторая ничего не обновит и результат будет 100. В postgres все проблемы решит такая конструкция UPDATE accounts SET amount = amount + 100 WHERE id = 1; В данном случае amount = amount + 100 сработает как CAS (compare and set) операция. Не будет ни грязного чтения, ни потерянного обновления.
@user-ur7bn1kd1p
@user-ur7bn1kd1p 5 ай бұрын
Размазали видео почти на час, много воды (верю, что это препод из универа). Лучше идти по сценарию интервью и придерживаться ему.
@cvk271
@cvk271 10 ай бұрын
С каждым упомянутым в суе предложением денормализовать чужую базу грейд надо понижать на 1 :) Ее другие мидлы и сеньеры нормализвали не от нечего делать.
@sukhoa
@sukhoa 10 ай бұрын
Иногда нам всем требуется вносить обширные изменения в наши системы. За всем этим стоит понятие целесообразности. Приходится оценивать вероятные затраты на внесение этих изменений и сравнить их с выгодой (возможно, долгосрочной) от них. Существуют ситуации, когда бизнес масштабируется и требует масштабируемости своих IT решений. И тут нет места для сомнений, вида "раз другие синьеры нормализовали базу, то, наверное, не зря", ведь они действовали целесообразно тому контексту, в котором находились. Безусловно, необдуманные изменения это не то, чего мы хотим. Однако, в формате собеседования, советовал бы предлагать как можно больше опций, для того, чтобы раскрыть себя для интервьюера, показать, что у вас есть не один способ решения проблемы.
@cvk271
@cvk271 10 ай бұрын
Да собеседуемый не знает контекта нормализации базы, а сеньер должен был бы ими поинтересоваться. прежде чем предлагать рецепт волшебных таблеток . От меня собеседуемый получил бы встречный вопрос. "В каких контекстах, обстоятельствах, случаях денормализация базы еще больше понизит производительность ? "
@sukhoa
@sukhoa 10 ай бұрын
Отличный вопрос, который позволит увидеть, как думает кандидат. И все же, на собеседовании, как правило, хочется поговорить с кандидатов вширь, посмотреть его размышления в разных ситуациях, поэтому часто нет времени обсуждать во всех деталях текущую реализацию. То же касается и формата "собеседование на youtube" :)
@cvk271
@cvk271 10 ай бұрын
@@sukhoa Для разговора в ширь первым вопросом должен быть " какие максимальное и минимальное число могу храниться в одном байте информации ?" :) А дальше ширь в любую сторону, начиная от отличия кодировки utf8 от других типа cp1251 до маски сети, мимо машиного слова и размера блока ntfs которими dma общается с диском. :) с плавным переходом в алгоритмику и и оптимизацию на кешах процесора. Сеньеры должны обладать фундаментальными знаниями.
@user-td6vu1hh3y
@user-td6vu1hh3y 7 ай бұрын
Очень много воды, отвечал бы по сути уважаемый
@aliakseiprybytkou7552
@aliakseiprybytkou7552 9 ай бұрын
наиграно пипец
Что сказать на собеседовании про обработку топика Kafka
36:38
Техническое интервью с Евгением Борисовым
1:33:04
Omega Boy Past 3 #funny #viral #comedy
00:22
CRAZY GREAPA
Рет қаралды 32 МЛН
КАК СПРЯТАТЬ КОНФЕТЫ
00:59
123 GO! Shorts Russian
Рет қаралды 2,9 МЛН
100❤️
00:19
Nonomen ノノメン
Рет қаралды 38 МЛН
Пришёл Intern - оказался JUNIOR Strong / Интервью на позицию DevOps Engineer / Мок собес  / 1
1:36:38
#13 Собеседование Middle Backend разработчика
1:10:45
Отсобеседование
Рет қаралды 61 М.
Omega Boy Past 3 #funny #viral #comedy
00:22
CRAZY GREAPA
Рет қаралды 32 МЛН