Собеседование бекенда на 260к, с разбором всех вопросов по типу дискуссии , рекомендую послушать 👇
https://youtu.be/uYRKxWh_ku8

Введение и подготовка

• Автор планирует потратить 3-4 часа на монтаж видео.

• Будет вставлять звук “бусте” при необходимости.

• Приветствие и знакомство с Иваном.

00:00:58

Опыт работы и стек

• Иван рассказывает о своем опыте работы в аутсорс-конторе и геодезической компании.

• Работа с LMS-системами и банковскими проектами.

• Опыт работы в компании с динамичным бизнесом и большим количеством сотрудников.

00:03:44

Текущая работа и проекты

• Работа в компании, занимающейся анализом продаж на маркетплейсах.

• Разработка PIM-системы для фармацевтической компании.

• Использование Symphony PHP, RabbitMQ, Kafka и Docker.

00:06:48

Базы данных и архитектура

• Использование PostgreSQL на последнем проекте.

• Опыт работы с MySQL, MongoDB и Redis.

• Выбор между RabbitMQ и Kafka в зависимости от архитектуры и задач.

00:08:08

Технические кейсы и ревью

• Решение технического кейса на тендерной площадке.

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

• Система ревью с несколькими уровнями и нестандартными требованиями.

00:10:59

Заключение и обсуждение системы ревью

• Обсуждение логичности системы ревью.

• Тестеры играют важную роль в процессе, но их задачи могут быть перегружены.

• Предложение по улучшению системы ревью.

00:12:02

Введение в дискуссии

• Обсуждение процедур разработки и переход к более интересным дискуссиям.

• Вопросы не предполагают единственно правильного ответа, приветствуется спор и рассуждения.

00:12:27

Проблемы с производительностью сервиса

• Пример с сервисом, который падает при 10 RPS из-за большого количества чтений.

• Рекомендации по анализу запросов и индексов для улучшения производительности.

00:13:16

Оптимизация запросов и индексов

• Анализ запросов и индексов для оптимизации производительности.

• Важность оценки селективности запросов для улучшения производительности.

00:15:13

Расширение и репликация

• Обсуждение методов расширения сервиса, включая баусер и репликацию.

• Преимущества и недостатки каждого метода, включая программистские и денежные затраты.

00:17:06

Де-нормализация и горизонтальное масштабирование

• Обсуждение де-нормализации для больших баз данных и больших нагрузок.

• Горизонтальное масштабирование через реплику как способ увеличения пропускной способности.

00:20:33

Транзакции и очереди

• Проблемы с транзакциями и необходимость очередей для записи.

• Вложенные транзакции как возможное решение, но с усложнением записи и блокировок.

00:22:32

Шардирование и репликация

• Обсуждение шардирования и репликации как возможных решений для масштабирования.

• Важность правильного подхода к делению базы данных для улучшения производительности.

00:22:44

Шаринг и его применение

• Шаринг – это способ масштабирования записей.

• Используется для распределения данных между несколькими мастерами.

• Применяется, когда производительность дисков достигает предела.

00:23:36

Различия между pub/sub и push

• Pub/sub – это подписчик и сабскрайбер.

• Push – это когда очередь сама присылает данные.

• Пример: RabbitMQ и Kafka.

00:26:06

Асинхронное программирование и многопоточность

• Асинхронное программирование и многопоточность – разные вещи.

• В PHP асинхронные библиотеки работают однопоточно.

• Многопоточность в PHP специфична, но возможна.

00:28:58

Обработка запросов в PHP

• Обработка долгих и быстрых запросов на одном инстансе.

• Использование сервисов и шины данных для разделения задач.

• Пример с тендерами и большими транзакциями.

00:31:56

Использование роудраннера

• Роудраннер позволяет обрабатывать запросы в потоке.

• Это предотвращает выключение основного процесса.

• Пример из практики в крупном банке.

00:32:14

Преимущества GRPC

• GRPC работает без него, но через него проще.

• GRPC быстрее, чем FPM пул, и позволяет сохранять поток выполнения.

• GRPC может принимать HTTP и HTTPS, в отличие от FPM, который медленнее.

00:33:12

Проблемы с FPM и планы на будущее

• FPM медленнее, чем GRPC, и менее удобен для контейнеризации.

• В проекте планируется использовать GRPC для контейнеризации.

• Опыт с FPM показал, что он медленный и неудобный.

00:35:11

Абстрактные классы и интерфейсы

• Абстрактный класс может содержать реализации методов, но не может быть создан объект.

• Интерфейс может быть реализован от нескольких интерфейсов.

• Фабрика создает объекты на основе параметров, передаваемых ей.

00:36:10

Сервис локатор и DI контейнеры

• Сервис локатор используется для хранения сервисов в контейнере.

• DI контейнеры позволяют легко внедрять зависимости.

• Паттерн сервис локатор используется в DI контейнерах.

00:37:06

Low-coupling и High-cohesion

• Low-coupling снижает связанность между сервисами.

• High-cohesion повышает когерентность и нацеленность на одну задачу.

• Эти принципы важны для инверсии зависимостей.

00:39:28

Абстрагирование и индексы

• Абстрагирование выделяет ключевые параметры объекта.

• Хэш-индексы используются для уникальных значений, но имеют константную сложность.

• B-деревья имеют логарифмическую сложность, но оптимизируют данные при каждом инсерте.

00:44:13

Рекурсия и бесконечные циклы

• Рекурсия может создать бесконечный цикл.

• Пример: функция, которая печатает время и вызывает себя, может создать бесконечный цикл.

00:44:40

Проблемы с памятью и сборщиком мусора

• Память может заполниться, что приведет к краху программы.

• В современных языках есть ограничения на количество рекурсий.

• Рекурсия всегда кладет вызовы в стек, что может привести к переполнению стека.

00:45:39

Хакерские методы и трейсы

• Можно переназначить счетчик рекурсий, но это приведет к краху.

• Трейс можно чистить, но это ломает программу.

• Бесконечный цикл можно создать, подставляя одни и те же адреса в стек.

00:47:25

Работа с шестнадцатеричной системой

• Вопрос о работе с шестнадцатеричной системой на собеседовании.

• Шестнадцатеричная система удобна для хранения матриц и хэшей.

• Это может быть полезно для уменьшения занимаемого места.

00:48:26

Оригинальный ответ на вопрос

• Можно использовать бесконечный сферический компьютер в вакууме.

• В этом случае память будет бесконечной, и программа будет работать.

• Это философский вопрос, на который можно дать разные ответы.

00:50:41

Принцип открытости-закрытости кода

• В некоторых случаях лучше не соблюдать принцип открытости-закрытости.

• При обновлении API или изменении бизнес-требований проще переписать код.

• Регрессионное тестирование всегда требует времени и усилий.

00:53:03

Генеративные модели и юнит-тесты

• Генеративные модели могут помочь в создании юнит-тестов.

• ChatGPT может генерировать тесты, но это требует контроля.

• Проблемы могут возникнуть, если модели начинают выдумывать несуществующие библиотеки и методы.

00:54:58

Вопрос о проекте без фреймворка

• Обсуждение проекта без развитой библиотеки и фреймворка.

• Вхождение в контекст проекта может занять больше времени.

• Важно изучать бизнес-область, а не только реализацию.

00:55:59

Политика открытости и процессы в команде

• Компания проповедует политику открытости и готова отвечать на вопросы.

• Ежедневные встречи для обсуждения задач, которые могут длиться от 5 до 30 минут.

• Команда состоит из программистов, аналитиков, тестировщиков и бэкендеров.

00:57:54

Канбан-доска и оценка задач

• Работа по канбану, задачи приоритизированы.

• Задачи не оцениваются в стори пойнтах, а в часах.

• Оценка задач в часах помогает лучше понять, сколько времени нужно на выполнение.

00:59:52

Оценка разработчиков и метрики

• Обсуждение методов оценки разработчиков.

• Пример с разными темпами выполнения задач у двух разработчиков.

• Важно, чтобы работа была понятной и интересной, а не только организационные аспекты.

01:01:06

Предложение работы и условия

• Предложение работы с испытательным сроком и возможностью получения до двух окладов в год.

• Возможность получения до 100% дохода в зависимости от личных показателей и показателей команды.

• Заполнение анкеты для получения предложения.

Пересказ YandexGPT

Category
Tags

Нет Ответов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Рубрики


Подпишись на новости
👋

Есть вопросы?