База разработки и Computer Science

Фундамент для уверенного разговора о производительности, ОС, HTTP и инженерных trade-offs.

Зачем это на интервью

Этот модуль проверяет инженерную базу, без которой нельзя убедительно объяснить поведение Go-сервиса в production. На интервью он помогает связать наблюдаемый симптом — рост p99, утечку ресурсов, зависание shutdown или ошибку API-контракта — с моделью ОС, сети, памяти и проектных ограничений.

Результат модуля

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

Темы

  • Модель вычислений и ОС: процессы, потоки, виртуальная память, файловые дескрипторы, сигналы, IPC и syscalls.
  • Память и производительность: Big O, амортизированная сложность, CPU cache, locality и tail latency.
  • Базовые принципы проектирования: SOLID, KISS, YAGNI, composition over inheritance и границы абстракций.
  • HTTP и Web-основы: HTTP/1.1–3, REST, gRPC, WebSocket/SSE, cookies, CORS и идемпотентность.

Ключевые понятия

  • Процесс, поток, виртуальная память, page fault, файловый дескриптор, сигнал, IPC и системный вызов.
  • Асимптотическая и амортизированная сложность, locality, allocation rate, throughput, latency и tail latency.
  • Cohesion, coupling, composition, dependency inversion, dependency injection и измеримый trade-off.
  • HTTP method, status code, идемпотентность, API contract, compatibility, CORS и CSRF.

Минимум для E4

  • Знать определения без заученных «магических» формулировок.
  • Объяснять ограничения каждого подхода и называть минимум одну альтернативу.
  • Приводить практический пример: код, схема, запрос или production-сценарий.
  • Учитывать ошибки, наблюдаемость и безопасный rollout там, где это применимо.

Углубление для E5/Senior

  • Оценивать масштаб, стоимость, эксплуатационные риски и совместимость изменений.
  • Проектировать постепенную эволюцию решения, а не только целевую схему.
  • Защищать решение через требования и измеримые trade-offs.

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

  1. Объясните разницу между процессом и потоком; где живут goroutine?
    • Подготовьте ответ с примером из production или практики.
  2. Почему p99 может расти при нормальном среднем latency?
    • Подготовьте ответ с примером из production или практики.
  3. Когда REST хуже gRPC и наоборот?
    • Подготовьте ответ с примером из production или практики.

Практика

  • Разберите путь одного HTTP-запроса от DNS до handler и нарисуйте компоненты ОС/сети.
  • Сформулируйте три частые ошибки по модулю и признаки их проявления.
  • Добавьте в личные карточки определения и решения, которые не удалось воспроизвести без подсказки.

Частые ошибки и ловушки

  • Сводить производительность к средней latency и не проверять распределение, saturation и p95/p99.
  • Называть абстракцию или паттерн «правильным» без требований, альтернативы и стоимости эксплуатации.
  • Путать процесс, поток, goroutine и их модели планирования; связывайте ответ с ресурсами ОС и runtime Go.
  • Считать HTTP-метод идемпотентным только по названию, а не по фактическому эффекту повторного запроса.
  • Переносить browser-механику CORS или CSRF на любой backend-клиент без понимания модели угроз.

Связанные темы

Главная · Go · PostgreSQL · System Design · Интервью-практика

Источники

  • Официальная документация используемого языка, БД или платформы.
  • Production-документация команды и проверенные технические разборы.
  • Конкретные ссылки добавляйте при наполнении темы, вместе с датой проверки актуальности.

в этой папке 1 элемент