Skip to content

Latest commit

 

History

History
141 lines (122 loc) · 13.9 KB

nodejs.md

File metadata and controls

141 lines (122 loc) · 13.9 KB

Вопросы для бэкендеров на NodeJS

Вопросы по soft skills Вопросы по алгоритмам

Junior

Общие вопросы

  1. Почему ты решил стать бэкенд-разработчиком, чем тебя привлекает профессия?
  2. Писал ли тесты? Как их писал? Какие есть типы тестов?
  3. Что использовал для валидации данных?
  4. Какие есть два подхода в создании телеграм ботов?
  5. Что такое Swagger?
  6. Что такое вебсокеты??
  7. Раскрой принципы SOLID?
  8. Что такое dependency injection?
  9. Что такое декораторы? Где они используются?
  10. Приходилось ли тебе самому писать нативные декораторы? Не NestJS декораторы, а свои. Расскажи про этот опыт.
  11. Какие принципы объектно-ориентированного программирования ты знаешь?
  12. Какие ORM знаешь и какие использовал? Какие плюсы и минусы можешь выделить?
  13. Какие принципы SOLID знаешь? Можешь подробнее про них рассказать?
  14. Что такое чистая функция?

Javascript

  1. В чем отличия null и undefined?
  2. Отличие var, let, и const?
  3. Какие есть типы данных в JavaScript?
  4. Строки в JavaScript изменяемые? Или при добавлении символа в конец строки, это уже будет новая строка?
  5. Что такое анонимные функции?
  6. Что такое замыкание и hoisting (всплытие)? Привести пример замыкания. Есть ли разница при использовании var и let?
  7. В чем разница function declaration и function expression?
  8. В чем разница двойного равно и тройного (== и ===)?
  9. Как проверить переменную на NaN?
  10. Как в JavaScript передается параметр в функцию - по ссылке или по значению?
  11. Что делают call(), bind(), apply()?
  12. Чем отличается forEach() от map()?
  13. Что такое map(), reduce() и filter()? Расскажи про каждый и в чем разница?
  14. Как сделать глубокую копию объекта?
  15. Расскажи, какие ты знаешь способы копирования объекта в JavaScript?
  16. Что такое глубокое копирование и поверхностное?
  17. Расскажи про прототипы, что это такое?
  18. Расскажи про область видимости.
  19. Что на конце цепочки прототипов?
  20. Что такое NodeJS? Из чего он состоит?
  21. Из каких компонентов состоит Node.js?
  22. Node.js однопоточна? Как реализуется многопоточность в Node.js в случае необходимости? Что такое трек пулл? Кто администрирует последовательности вызовов?
  23. Как можно оценить производительность приложения Node.js?
  24. Что происходит после того, как JavaScript передается в Node.js?
  25. Что внутри Node.js занимается оптимизацией? В какой момент происходит оптимизация? Что происходит с JS кодом чтобы он был “ближе к движку”? Во что разбирается JS код с помощью V8?
  26. Какими способами можно обработать ошибку в Promise?
  27. Когда-нибудь приходило к тебе понимание типа “а вот здесь я хочу использовать eventemitter”? Когда его лучше использовать?
  28. Что такое Event Loop? Для чего он нужен? Какую проблему решает? Можешь рассказать, что такое Event Loop? Какие есть фазы? Если в Event Loop ничего не останется после выполнения, то что произойдет? В какой последовательности вызываются микро и макро таски?
  29. Что такое keyof и typeof?
  30. Что такое Set, Map, WeakSet, WeakMap?
  31. Что такое дескрипторы объекта?
  32. Как добавить интернационализацию в приложение?
  33. Что такое package.json?
  34. Что такое package-lock.json? Зачем нужен? Зачем его коммитить? В чем разница npm i и npm ci?
  35. Отличия ES5 и ES6?
  36. Расскажи про различия "старого" JavaScript и "нового"?
  37. Если поставить таймер на 10 секунд, то через сколько он сработает? Почему?
  38. Можешь рассказать, что такое замыкания в JS? Есть ли такое в других языках?
  39. Immediatly invoke function (самовызывающаяся функция). Это что?

NodeJS

  1. Node.js однопоточна? Как реализуется многопоточность в Node.js в случае необходимости? Что такое трек пулл? Кто администрирует последовательности вызовов?
  2. Как можно оценить производительность приложения Node.js?
  3. Что происходит после того, как JavaScript передается в Node.js?
  4. Что внутри Node.js занимается оптимизацией? В какой момент происходит оптимизация? Что происходит с JS кодом чтобы он был “ближе к движку”? Во что разбирается JS код с помощью V8?

Typescript

  1. Node.js может выполнять TypeScript?
  2. Отличия type и interface в TS?
  3. Отличия типа и абстрактного класса?
  4. Настраивал ли typeconfig?
  5. Какие есть встроенные типы Typescript?

Базы данных

  1. С какими СУБД работал?
  2. Фундаментальные различия между MongoDB и Postgress? В каких случаях что выберешь?
  3. Знаком с ACID? Можешь рассказать, что это такое?
  4. Какие виды JOIN знаешь? Чем они отличаются?
  5. Пользовался ли транзакциями? В каких случаях?
  6. Делал ли внешние ключи в базах данных? Зачем они нужны?
  7. Миграции/сиды писал?
  8. Если соединяем несколько таблиц БД с помощью INNER JOIN, есть ли разница в оптимизации, в каком порядке соединяем таблицы?

Сети

  1. В чем различие TCP и UDP?
  2. Расскажи про OSI. На каком уровне находится HTTP?
  3. Что из себя представляет HTTP запрос? Структура? Тело есть у всех HTTP запросов?
  4. На чем основан HTTP запрос? На каком протоколе? А еще глубже?
  5. Что такое REST API? Можешь рассказать, что такое REST? Использовал ли в работе REST?
  6. Какой HTTP метод используется для обновления небольшого кусочка по REST?
  7. Чем отличается вообще протокол HTTP и чем он отличается от HTTPS?
  8. Что такое CORS? Это связано именно с HTTP?

Middle

Общие вопросы

  1. Какие минусы у микросервисной архитектуры? Какие плюсы?
  2. Работал с микросервисами? Расскажи, какие могут быть минусы?
  3. Что такое репликация и шардирование? Когда что использовать?
  4. Масштабирование, горизонтальное, вертикальное. Можешь рассказать, что такое?
  5. Как можно оценить, что твое приложение начинает тормозить?
  6. Какие знаешь паттерны ООП? Какие использовал?
  7. Знаешь, как работает сборщик мусора в NodeJS? Если у нас есть переменная, например объект, который ссылается сам на себя, сборщик мусора его обработает?
  8. Работал ли с Docker? Kubernetes?
  9. Работал ли с Grafana?
  10. Достаточно ли валидации в ORM при реализации проверки на уникальность, например, email при регистрации? Раскройте
  11. Какие последствия возможны при отправке email прямо в контроллере? Как можно решить эти проблемы?
  12. Как бы вы реализовали смену email на сайте, так чтобы соблюсти баланс между сложностью и безопасностью?
  13. Можно ли доверять email, который мы получаем по oauth от соц сетей и мержить аккаунты автоматически? Приведите примеры
  14. Как ограничить отправку email пользователю, который добавил письмо нашего проекта в спам? И почему это стоит делать (или не стоит)?
  15. Предположим что вы реализуете редакцию журнала, где редактора могут в админке править статьи. Как предотвратить ситуацию, когда два редактора могут начать одновременно редактировать одну статью и перетирать изменения друг друга?
  16. Каких принципов разработки нужно придерживаться, для обеспечения механизма zero downtime deployment. Как это достигается?
  17. Что может произойти, если ваша cron задача, которая запускается раз в минуту, стала выполняться больше 1 минуты? Как это можно предотвратить?
  18. Если вы пишите тесты, то как вы обходите проблему того, что код который вы тестируете, делает внешние вызовы? Доп условие, говорим о том, что на CI внешние вызовы запрещены (почему так правильно?)
  19. Предположим что в вашей системе реализована смена емейла. При этом этот емейл хранится еще и во внешней системе, например эквайринге, который шлет пользователю свои письма (но пользователь им напрямую не пользуется). Как бы вы реализовали синхронизацию емейла с внешней системой?
  20. Как вы узнаете об ошибках, которые происходят на продакшене? От пользователей или это автоматизировано?
  21. Как обеспечивается изоляция тестов друг от друга если они ходят в базу и меняют ее? Если в вашем фреймворке этого нет, то как вы это делаете или сделали бы?

Базы данных

  1. Для чего нужны индексы в БД?
  2. В каких случаях первичный ключ может быть null?
  3. В каком случае первичный ключ может быть составным и может ли он быть составным? Можешь привести пример такой ситуации?
  4. Чем DELETE отличается от TRUNCATE? Какой запрос будет выполнен быстрее?
  5. Знаешь ли ты, что такое SELF JOIN?
  6. Решал ли ты какие-то задачи производительности в БД?
  7. Знаком, что такое PG Bouncer?
  8. Работал ли ты с Sequelize? Что тебе понравилось и не понравилось?
  9. Можешь рассказать про плюсы и минусы расположения БД в контейнере и без? В каких случаях стоит использовать базу в контейнере?
  10. Если соединяем несколько таблиц БД с помощью INNER JOIN, есть ли разница в оптимизации, в каком порядке соединяем таблицы?