Skip to content

Instantly share code, notes, and snippets.

@unlight
Last active March 23, 2021 06:55
Show Gist options
  • Save unlight/d27059eb0364d5daa9256238a924d2a0 to your computer and use it in GitHub Desktop.
Save unlight/d27059eb0364d5daa9256238a924d2a0 to your computer and use it in GitHub Desktop.
node topic questions.md
  1. Отличные знания JavaScript на уровне текущей спецификации ESNext
  2. Общие знания по программной инженерии
  • ООП
  • функциональное и реактивное
  • программирование
  • обобщенное программирование
  • агрегация и композиция классов
  • модули и зависимости
  • инверсия управления и внедрение зависимостей
  • принципы
  • GRASP и SOLID
  • общее понимание паттернов GoF и дополнительный
  • часто
  • применяемых в Node.js API
  • например (открытый конструктор
  • наблюдатель
  • цепочка
  • ответственности
  • стратегия) и все это применительно к JavaScript и Node.js
  • контрактное программирование
  • обзор антипаттернов
  • понимание пределов возможностей
  • JavaScript и его слабых мест
  • оптимизации при выполнении в v8
  • слабые ссылки
  • FinalizationRegistry
  • Atomics
  • SharedArrayBuffer
  1. Асинхронное программирование
  • контракты callback-last error-first
  • Thenable
  • Promise
  • асинхронные итераторы
  • EventEmitter
  • синтаксис async/await
  • Streams
  • асинхронная композиция и асинхронная очередь
  • паттерн реактор
  • фазы ивент-лупа
  • thread pool
  • принцип неблокирующего ввода/вывода
  • таймеры
  • обработка ошибок в
  • асинхронном коде и оптимизация асинхронного кода
  • состояние гонки и доступ к
  • shared state в асинхронном программировании
  • многопоточность и shared memory
  • связь параллельного и асинхронного программирования
  • семафоры и мьютексы
  • async
  • hooks для Node.js
  1. Знания базовых возможностей платформы Node.js
  • возможности встроенных библиотек (v8 vmprocess child_process worker_threads fs crypto events os path)
  • и встроенных классов (Buffer
  • EventEmitter
  • AbortController
  • MessageChannel)
  • системы модулей CommonJs и EcmaScript
  • управление зависимостями
  • поддержка протоколов: http
  • https
  • http2
  • tcp
  • tls
  • udp
  • работа с websockets
  • роутинг запросов
  • контексты запросов и изоляция req
  • res от кода предметной
  • области
  • как не допускать утечки памяти и ресурсов
  • как выявлять их
  • оптимизация
  • для высоких нагрузок
  • Serverless и FaaS
  • QUIC и HTTP/3
  • N-API
  • аддоны на C++
  • WASI
  • строковая и бинарная сериализация и десериализация
  • реализация сессий и
  • контекстов пользователя
  • диагностика состояния приложений и отладка
  1. Структура и архитектура бекенд приложений
  • метрики
  • вопросы надежности
  • graceful shutdown
  • логирование и конфигурирование
  • обработка ошибок
  • подход к
  • построению transport agnostic API
  • vm sandboxing
  • v8 isolation
  • межпроцессовое
  • взаимодействие
  • масштабирование и кластеризация
  • балансировка нагрузки
  • архитектуры: слоеная (layered / onion)
  • микросервисная
  • конвейерная (pipeline)
  • гексагональная
  • DDD
  • чистая архитектура
  • CQS
  • CQRS и Event sourcing
  • основы
  • распределенных систем
  • интерактивных и real-time приложений
  • интроспекция
  • рефлексия и скаффолдинг
  • метапрограммирование
  • мультипарадигменное
  • программирование
  1. Основы безопасности
  • DoS
  • ReDoS
  • XSS
  • Path traversal
  • SQLI
  • CSRF
  • работа с
  • паролями и их хешами
  • базовые понятия о криптографии
  1. Базы данных
  • реляционные и NoSQL
  • слой доступа к данным
  • ORM vs Query
  • builders
  • Postgres и его система типов
  • join
  • explain
  • индексы и оптимизация
  • запросов
  • foreign keys
  • alternative keys
  • referential integrity
  • вложенные
  • запросы
  • exists
  • having
  • group
  • bulk update/insert
  • view
  • функции
  • автоинкремент
  • ER диаграммы
  • нормальные формы
  • хранение JSON в БД
  1. Культура разработки и групповая работа
  • рефакторинг
  • практики ревью кода
  • unit-тестирование
  • системное и интеграционное тестирование
  • общее понимание TDD
  • CI/CD
  • контейнеризация
  • семантическое версионирование
  • практики ведения
  • репозиториев и работа с пакетными менеджерами
  • тулинг для групповой работы
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment