AuraOverlay Скачать

вопросы и ответы

Вопросы с собеседований: пятнадцать, которые спросят почти наверняка

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

macOS 14.2 и новее · Windows 10 и 11 · первые 30 минут бесплатно

как это звучит на звонке

Одни и те же пятнадцать, только разными словами

Формулировки гуляют от компании к компании, но суть повторяется: у вас проверяют не память на определения, а понимание цены решения. Ниже — те же вопросы в том виде, в каком они звучат в наушниках.

Чем процесс отличается от потока? Что такое замыкание? Как работает event loop? Как определяется this? Зачем нужны индексы? Что такое ACID? Чем отличаются уровни изоляции? INNER JOIN или LEFT JOIN? Что такое deadlock? Когда UDP вместо TCP? Что происходит при открытии адреса? Как устроено кэширование в HTTP? REST или gRPC? Что такое SOLID? Зачем спрашивают сложность? Чем процесс отличается от потока? Что такое замыкание? Как работает event loop? Как определяется this? Зачем нужны индексы? Что такое ACID? Чем отличаются уровни изоляции? INNER JOIN или LEFT JOIN? Что такое deadlock? Когда UDP вместо TCP? Что происходит при открытии адреса? Как устроено кэширование в HTTP? REST или gRPC? Что такое SOLID? Зачем спрашивают сложность?

по темам

Что на самом деле проверяют в каждом блоке

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

Здесь проверяют понимание цены, а не определения: почему поток дешевле процесса, чем за это платят и что ломается, когда память общая. В языковой части то же самое, только про порядок выполнения и область видимости.

  • Процессы и потоки: общая память и синхронизация.
  • Замыкание: почему функция помнит то, чего уже нет.
  • Event loop: микрозадачи, макрозадачи и блокировка отрисовки.
  • this: всё решает способ вызова, а у стрелочных функций своего this нет.

операционные системы и язык

Четыре вопроса про то, как всё это выполняется

Чем процесс отличается от потока?

У процесса своё адресное пространство и свои ресурсы, потоки одного процесса делят память и файловые дескрипторы. Поэтому поток дешевле создать и переключить, но ошибка в одном потоке рушит весь процесс, а общая память требует синхронизации — мьютексов или атомарных операций.

Что такое замыкание?

Функция вместе с той областью видимости, в которой она была создана. Она продолжает видеть переменные внешней функции даже после того, как та вернула управление, — на этом держатся счётчики, кэши и приватные поля в функциональном стиле.

Как работает event loop в JavaScript?

Один поток выполняет задачу до конца, а затем берёт следующую из очереди. Между задачами он полностью опустошает очередь микрозадач — это промисы, — и только потом переходит к макрозадачам вроде таймеров и событий ввода-вывода. Долгая синхронная операция блокирует всё, включая отрисовку.

Как определяется this?

В обычной функции — по тому, как её вызвали: как метод объекта this равен объекту, как свободную функцию — undefined в строгом режиме. У стрелочных функций своего this нет, они берут его из внешнего окружения. Явно задать его можно через call, apply или bind.

базы данных

Пять вопросов, на которых спотыкаются чаще всего

Зачем нужны индексы в базе данных?

Индекс — отдельная структура, которая позволяет найти строки без полного сканирования таблицы. Платить за это приходится записью: каждый insert и update обновляет ещё и индексы. Индекс не поможет, если условие не совпадает с порядком его колонок или если выборка и так возвращает большую часть таблицы — планировщик тогда сознательно выберет сканирование.

Что такое ACID?

Четыре свойства транзакции: атомарность — применяется целиком или никак; согласованность — не нарушает инварианты данных; изолированность — параллельные транзакции не видят промежуточных состояний друг друга; долговечность — подтверждённая транзакция переживает падение сервера.

Чем отличаются уровни изоляции транзакций?

Тем, какие аномалии они допускают. Read committed не видит незакоммиченных изменений, но при повторном чтении данные могут измениться. Repeatable read фиксирует снимок данных на время транзакции. Serializable ведёт себя так, будто транзакции шли по очереди, — самый строгий и самый дорогой уровень.

Чем отличаются INNER JOIN и LEFT JOIN?

INNER JOIN оставляет только те строки, у которых нашлась пара в обеих таблицах. LEFT JOIN сохраняет все строки левой таблицы, подставляя NULL там, где пары нет. Отсюда частая ошибка: условие на правую таблицу в WHERE превращает LEFT JOIN обратно в INNER — такому условию место в ON.

Что такое deadlock и как его избежать?

Два потока или две транзакции ждут ресурсы, которые держит другой, и не дождутся никогда. Лечится порядком: брать блокировки всегда в одной и той же последовательности, держать их как можно короче и ставить таймаут, чтобы ожидание завершилось ошибкой, а не зависанием.

сеть и api

Четыре вопроса про путь запроса

Когда выбирать UDP вместо TCP?

TCP гарантирует доставку и порядок, но за счёт установления соединения и повторных передач. UDP ничего не гарантирует и потому подходит там, где свежесть данных важнее полноты: голос, видео, игры, метрики. Потери в них лучше пережить, чем ждать повторной отправки.

Что происходит, когда вы открываете адрес в браузере?

Браузер разрешает имя через DNS, устанавливает TCP-соединение и TLS-сессию, отправляет HTTP-запрос. Получив HTML, он строит DOM, параллельно запрашивает стили и скрипты, считает стили и раскладку и отрисовывает страницу. Часть ответов может прийти из кэша и пропустить сеть целиком.

Как устроено кэширование в HTTP?

Cache-Control задаёт, как долго ответ можно считать свежим. Когда срок вышел, браузер спрашивает сервер условно — с ETag или датой изменения — и получает 304, если ничего не поменялось. Для файлов с хэшем в имени ставят большой max-age, для меняющихся ответов — no-cache.

REST или gRPC?

REST — это HTTP и JSON: читаемо, отлаживается curl, понятно браузеру. gRPC — бинарный протокол со схемой, строгими контрактами, двусторонними стримами и меньшим объёмом трафика. Внешние API обычно REST, общение сервисов между собой часто gRPC.

проектирование и алгоритмы

Два вопроса, которые задают всем

Что такое SOLID?

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

Зачем на собеседовании спрашивают сложность алгоритма?

Чтобы проверить, понимаете ли вы, как решение поведёт себя на больших данных. O-нотация описывает рост времени или памяти относительно размера входа: перебор пар — это O(n²), словарь вместо перебора превращает его в O(n) за счёт O(n) памяти. Назвать стоит и то, и другое.

честно

Чего этот список не сделает

  • Не предскажет ваше интервью. Пятнадцать вопросов закрывают начало разговора. Дальше пойдут ваши проекты, ваше резюме и то, что в нём написано, — а этого не знает ни один список.
  • Заученный дословно ответ слышно. Ровная книжная интонация выдаёт себя в наушниках, поэтому держать в голове стоит ход мысли, а не абзац.
  • Не спасёт от уточняющего вопроса. «А почему тогда не наоборот?» проверяет понимание, и вытянуть его подсказкой не выйдет: помощник вытаскивает то, что вы знали и забыли, а не то, чего не знали никогда.
  • И сам помощник не отвечает за вас. По умолчанию он молчит: подсказка приходит по клавише, а не на каждую фразу в звонке.

Что с этим делать. Эти ответы легко держать в голове дома и трудно — когда вопрос прозвучал неожиданно, а собеседник смотрит в камеру. AuraOverlay слушает звонок и показывает такой ответ поверх окна: целиком, чтобы произнести, или тезисами, чтобы сказать своими словами. Первые слова появляются через одну-две секунды после того, как интервьюер договорил.

дальше

Разделы по теме

Подсказка во время звонка, а не после

Первые 30 минут бесплатно — их хватает на один разговор. Дальше подписка по времени или пакет собеседований.

macOS 14.2 и новее · Windows 10 и 11