Skip to content

Видосы / Каналы про собесы

Смысл

  • Собрать каналы чтоб в будущем можно было глянуть кого-нить и иметь актуальную инфу по собесам

Кабанчик-кор + System design

  • https://www.youtube.com/@sukhoa - кабанчик-кор
  • https://www.youtube.com/@vladimir_balun_programming - кабанчик-кор + system design
    • https://www.youtube.com/watch?v=QgIWHeNy8fA
      • Оптимизло бд
        • Индексы
        • Запросы переписать
      • Explain - показывает поля / план запроса - че происходит во время запроса
      • Индекс сделали, но запросы по-прежнему тормозят - индекс еще не создался
      • b-tree - дефолт pdql
      • bitmax?
      • spartial?
      • Репликация - масштабирование чтения
      • vs Бекапы - бекапы это не быстро не реалтайм, реплика более свежая
      • Синхронная / асинхронная репликация
        • Синхронная - убеждаемся что данные доставились
        • асинхронная -
      • Мастер сломался - Выбор лидера - консесус
      • Мастер-мастер
        • Больше записи, гео-распределенность
        • Больше конфликтов
      • Шардирование - масштабир. на запись
      • Шардирование по айди / хешу / полю / хардкод
        • Минус индекса: Добавление шардов - нужен баланс
        • Консистентное хеширование
      • Перенос шарда
        • перенос записи
      • Партиционирование - шардирование на 1 серве; то есть разрезали табличку на старые и новые записи
      • Балансировка нагрузки
        • Весы
        • По айди, ну как шарды
      • Кеширование
        • Разгрузка бд
        • LRU - алгоритм кеша
        • Очереди
        • Расхожение кешей - тегирование
        • Уровни кеширования
          • Клиент
        • CDN
          • pull / push модели?
      • Распределенные транзакции
        • 2PC - 2 phase commit
          • Опрашиваем учасников о фиксации
          • Изолированная запись
        • Saga - сейм?
      • Событийная архитектура
      • CAP-теорема
        • cons - консистенс
        • avail - доступность
        • partition - всегда есть -
      • Мониторинг
        • Прометеус, графана
        • рпс, латенси, ошибки, хардваре-метрики
      • Логгирование
      • Трассировка
      • Профиллирование
    • https://www.youtube.com/watch?v=mdhaRpJ-7X0
      • Цели компании
      • Достижения компании
      • Мои достижения
      • Рост
      • Команда
      • Стек
      • Процессы
      • Проблемы
      • Код:
      • Почему ищите чела
  • https://www.youtube.com/@mezhdu_skobok - system design
  • https://www.youtube.com/@system-design-notes - system design
    • https://www.youtube.com/watch?v=LYuwGuejtDI
    • Функционал: загрузка и просмотр
    • MAU: 2.5ккк
    • DAU: 50кк
    • Загрузка видео: 5кк / день ⇒ 60 RPS
    • Просмотр: 5ккк / день ⇒ 60K RPS
    • Размер 1 видео: 100 Мб
    • Объем хранилища: 100 Мб * 5 (форматов) * 5кк = 2.5 Пб / день ⇒ 900 Пб / год
    • Пропускная способность: загрузка - 6 Гб / с; просмотр =RPS * Размер - 6 Пб / с
    • Флоу - рисуем архитектуру
    • Узкие места
  • https://www.youtube.com/@otsobes - C# ddd / cqrs / бд / очереди / архитектура

    • 13 Собеседование Middle Backend разработчика - YouTube

      https://www.youtube.com/watch?v=0QwxcSAzEQw
      • Абстр. классы vs Интерфейсы
        • Абстр. классы для исключений
      • DDD: Страна это Value Object или Entity
        • It depends
      • Целостность данных: Как получить юзера с заполненными полями
        • Сделаем дто с обяз. полями
      • Микросервисы: Отчеты по данным из нескольким сервисам
        • Кроны, очереди с обновлениями
      • Rabbit vs Kafka
        • Rabbit:
          • 1 продьюсер - 1 очередь / n очередей
          • При 500 возвращаем задачу в очередь, очередь накапливается, но выполнение продолжается
        • Kafka:
          • Журнал-бд, гориз. масштабирование
          • При 500 вся очередь встает, нужно перекладывать сообщения в другой топик, потом заретраем
        • Гарантия доставки
          • ???
      • Тестирование микросервисов
        • Моки
      • SQL vs NoSql
        • sql: Таблицы
        • nosql: json/kv/etc.
      • Много данных
        • Партициниунируем + реплицируем
        • Реплика неактуальная че делать: Идти в мастер
        • Доступность: реплики делаем
      • Денормалиция зач
        • Для оптимизла скорости вместо джоинов
        • Вьюхи
      • Развитие
        • Статьи
        • Ютуб
        • Книги
    • 15 Full-stack безопасник на собеседовании Backend Middle - YouTube

      https://www.youtube.com/watch?v=wOe0UF_5S7k
      • Связанность vs Связность
        • Связанность - использование классов в классах
        • Связность - сколько ответственностей у класса
      • Транзакции
        • Serializable - последовательно
        • Snapshot - блокировка строк
        • Read Commited - commited
        • Read Uncommited - грязные чтения
      • Оптимизация запросов
        • В иде
      • Индексы
    • 18 Сеньор в 23? Собеседование Middle Backend разработчика - YouTube

      https://www.youtube.com/watch?v=SR7S5NeJ_JY

      систем-диз

  • https://www.youtube.com/@itkrasavchik - кабанчик-кор + go

    Чел затирает про собесы на go и валютную удаленку

    • https://www.youtube.com/watch?v=MtYfRrQ33gI&list=WL&index=109
      • СберМаркет
        • Индексы в Postgres
        • BTree
        • Hash
        • GIS
        • Сбалансированное дерево vs Бинарное
        • Explain vs Analyze vs Explain-Analyze
        • Explain: Как понять че медленно, быстро
        • ACID
          • Транзакции
          • Уровни изоляций
          • Аномалии и блокировки
          • Блокировки пессимистичные оптимистичные
          • Select for update
        • Kafka
          • Топики, консьюмеры
          • Партишены: убавить / уменьшить можно?
          • Топик-груп
          • Виды гарантий доставки сообщений
            • Как обеспечить
            • Параметры иденпотенсий
          • Паттерны инбокс аутбокс
        • Паттерны микросервисов
          • Saga
          • Gateway
          • Database per service / Shared database
        • Кубер
        • Обсервабилити: Prometheus, Grafana
        • Задача: Потоко-безопасный кеш на go

БД

  • Ваня Ио - бд + go
    • https://www.youtube.com/watch?v=DyqtBiDrz3g
      • select * from employee where sex = 'female' and salary > 150 and age = 50 order by created_at
      • Составные индексы - по нескольким колонкам
        • Сначала Равенство, затем неравенство (в тч order by)
        • Если после первого равенства - неравенство, то индекс прекратит работу на первом неравенстве
        • То есть для запроса выше индекс sex, age, created_at будет только по sex, age - потому что salary - неравенство
      • explain alanyze - показывает план запроса со временем
        • Seq Scan - полный перебор
      • Индекс на флаг - бесполезен, будет использован Seq Scan - плохая селективность индекса
      • Так что при создании индекса в первую очередь лучше выбирать колонку более селективную (напр. salary)
      • Частичный индекс - индекс на колонку + условие: (salary) salary > N
    • https://www.youtube.com/watch?v=e9a4ESSHQ74
  • EngineerSpock - бд

    • https://www.youtube.com/watch?v=lAWQNcAEiKw

      https://www.youtube.com/watch?v=4HZl-PkFTbA

      https://www.youtube.com/watch?v=bzCqU1gSsM0&t=4s

      Виды индексов

      • b-tree = сбалансированное дерево
        • По-умолчанию
        • O(log N)
      • Hash-Index
        • Только по =
        • Нет поддержки wal - индекс будет часто перестраиваться
        • O(1)
      • Gist - геом, текст
      • Gin - массивы, json, текст
      • Sp-gist - телефон-номера
      • Brin - почтовые индексы, таймстампы

      Scan

      • Index Scan - это про селективность
      • Index Only Scan - читаем из индекса
      • Bitmap Index Scan - сложнааа
      • Seq scan - последовательное

      Explain

      • Explain - Не выполняет запросы
      • Expain Analyze - выполняет запрос
      • Analyze - строит стату по табл, чтобы планировщик лучше робил
  • Over Engineer - бд

    • https://www.youtube.com/watch?v=gOB3hpAVIIQ
      • ACID
        • Atomicity - все или ничего
        • Consistency - данные должны быть в good-state (здравый смысл) до и после транзакции, но это обязанность аппа
        • Isolation - защита от race condition ака isolation levels
          • Serializable - последовательное выполнение
          • Read Uncommited - возможность Dirty Read
            • Dirty Read - когда можем читать данные из другой транзакции не дожидаясь коммита
          • Read Commited - защита от Dirty Read
            • Проблема Read Commited - данные изменились в другой транзакции, но первая транзакция, которая делает 2 селекта по одной табл. еще работает
          • Snapshot Isolation = Reapeatable Read - на время выполнения запросов берется слепок бд, так что параллельные изменения будут заигнорены
          • Lost Update - конкурентная запись
            • Решения
            • Атомарные операции
            • Select for update - эксклюзивная блокировка
            • Lost Update Detection - авто-откат
        • Durability - сохранение в бд
      • CAP
        • Consistency immediate - при чтении из двух реплик данные актуальные везде
        • A

Python

  • https://www.youtube.com/@python_interview/videos - python backend
    • https://www.youtube.com/watch?v=7JCf77NZRm0&t=74s
      • Redis - нет гарантии доставки
      • Rabbit - гарантии доставки
      • Kafka - журнальный подход
      • celery - для отложенных и периодических задач
      • оптимизация запросов
        • код
        • кеш
        • денормализация
        • индекс
          • g-index - поиск по тексту
      • большая миграция
        • Сделать fk интом потом сиквенс сбросить
  • https://www.youtube.com/@pymentor - python backend & core
    • https://www.youtube.com/watch?v=qdH2ccjjT4w&list=WL&index=106
      • Память
        • Счет Ссылок
        • WeakRef
          • Слабые ссылки
          • Объект Удаляется если все ссылки слабые
        • Garbage Collector
          • Циклические ссылки
          • Поколения
      • GIL
        • Mutex
        • Зач надо?
          • Избегание Race Condition
          • Проблема Вытесняющая многозадачность???
          • Перезапись данных крч из-за контекст свитчинга
        • Упрощение мемори-менеджмента / gc
      • ООП
        • Отношение Генерализации
        • Классы = состояние
      • GRASP
        • Связанность
      • Паттерны

        - Абстр. фабрика: завод мебели в разных стилях

    • https://www.youtube.com/watch?v=CZ-dueDo46I
      • gil не держит тред долго, чтоб не было зависаний и был контекст свич
      • serializable - при конкурентной записи будет ошибка
    • https://www.youtube.com/watch?v=-NyCXiq5wak
      • SAGA - координатор микросервисов распределенной транзакции
  • https://www.youtube.com/@moscowdjangoru - python backend & core

    https://www.youtube.com/watch?v=YJiQ-TBb9po

    • ⌛⌛⌛ https://www.youtube.com/watch?v=Ey6872lyRO4
      • Интерпретир - компиляция
      • collectons
      • gc
      • __new__ - перед __init__
        • выставление переменных классу?
      • сеттер - проперти-сеттер
      • __slots__ - ограничение аттрибутов
      • async-primitives
        • coroutine
        • future
        • task
      • gil
        • консистентность ссылок
      • BaseExecption vs Exception
      • bd
        • constrains
        • sub-select
        • join
          • inner - без null
          • outer - null если не удалось
          • cross-join -
          • full-join -
        • fk
          • cascade / protect
        • select for update
        • truncate / delete - ???
        • index field order resolution
        • explain
        • explain analyze - time
        • fastapi
    • https://www.youtube.com/@rineisky - python core + interview
    • https://www.youtube.com/watch?v=6Ony27gzDHo
      • Бюрократия
        • Бумажная работаэ
        • Лог времени
      • Образование внутри комп
      • Структура и Босс
      • Оформление
      • График + Переработки?
      • Обязанности?
      • Планы ака Чем буду заниматься
      • Процесс ака Типичный рабочий день
      • Эффективность/KPI
      • Состав команды
      • Легаси или новый продукт
      • Суть вакансии: расширение штата или замена сотрудника + поч ушел
      • Отвественность: Кто тестирует? Кто за инфру отвечает?
      • Code Review
      • SDLC: Scrum? Митинги?
      • CI/CD
      • Соц-пакет: Качалка / Жрачка / …
      • Sick Day - 1-2 больничный за счет компании
      • Bench - ебланинг за счет компании (в идеале)
      • Отпуск - за месяц боссу
      • Лояльность?
      • Повышение / Рост
      • Когда Ответ после собеса
    • https://www.youtube.com/watch?v=BoazgBZ4D7k
      • Стресс
        • Больше знаний
        • Отдохнувший
        • Опытный на собесах
      • Типы данных
        • mutuble, immutable, str, int, tuple, list, …
      • == vs is
        • == - по значению
        • is - по памяти
      • Изменение строки по индексу - ошибка
      • copy
        • copy - не дип копирование
        • deepcopy - дип-копирование, включая списки и дикты
      • big o
        • for - n
        • recur - log
        • for for - n^n
        • list
          • search - n
          • append / pop - 1
          • append / pop index - n
        • set
          • search - 1
      • set
        • hash-table
        • collision
          • hash-chain: list of similar hashes
          • линейное разрешение хешей
          • [python default] квадратичное пробивание хешей
          • двойное хеширование
      • Доступ к приватным
        • a._A__private
      • Декоратор с параметрами
        • Просто еще один слой враппинга
      • Метакласс
        • Класс для класса с магическими методами
      • Ооп
        • Абстракция - используем только нужные данные
        • Наследование - пон
        • Инкапсуляция - сокрытие инфы, публичные методы
        • Полиморф - чтоб параметры реализовывали интерфейс который нам нужен / наследование
        • Миксин - расширение классов
        • Diamond Problem: ACls, BCls(ACls), CCls(ACls), D(B, C)
        • MRO: D > B, C > A
      • Итератор: __iter__, __next__
      • GIL:
        • 1 тред в 1 момент времени
        • Плюсы: С-расширения, безопасное управление памятью, скорость
      • SOLID
        • Single Resp - 1 класс - 1 функция
        • Open Closed - открыт для расширения, закрыт для модификации
        • Liskov - дочерний должен реализовывать родителя
        • Interface Seg - много маленьких интерфейсов
        • Dep. Inversion - классы принимают зависимости
      • Паттерны
        • Порождающие
        • Поведенческие
        • Структурные
        • Фабрика
        • Прокси
        • Медиатор
        • Прототипы
        • Мемо
        • Фасад
        • refactoring.guru
      • SDLC: Agile, Scrum, …
      • ACID
        • Atom - все либо ничего
        • Consist - ???
        • Isolation - сериализуемость
        • Durabil - данные сохраняются
      • Уровни изоляции
        • Read Uncommitted
        • Read Committed
        • Read Snapshots
        • Synchronized
      • REST
        • Клиент - Сервер
        • Кеширование
        • Стейтлесс
        • Код по требованию - ???
        • Единообразие
        • Слои
    • https://www.youtube.com/@ArtemLevkivskyi - python backend
    • https://www.youtube.com/watch?v=62aiHYLhonI
      • PUT vs PATCH
      • SerializerMethodField - read-only поля
      • Cookie
      • Rest
      • gc
        • циклические ссылки
        • генерации - по времени
      • csfr
      • django auth
        • user
      • content-type
      • select-related - join
      • fetch-related - неск. запросов
      • multiprocess
        • fork
      • patterns
    • https://www.youtube.com/watch?v=r24Pe81QYs4
      • пустая трата времени
    • Андрей += Пронин - python-core
    • https://www.youtube.com/watch?v=eUVgbXot5B0
      • python -m example
        • Какой python: PATH
        • Что запускается: __main__
      • Где аттрибуты класса?: __dict__
      • Что происходит при создании класса?: метаклассы?