Skip to content

Latest commit

 

History

History
209 lines (184 loc) · 18.9 KB

InterviewQuestions.md

File metadata and controls

209 lines (184 loc) · 18.9 KB

Бэкграунд, проверка общих знаний, фундамента

Математика

  • Что такое множество?
  • Что такое кортеж?
  • Что такое декартово произведение?

Алгоритмы и структуры данных

  • Какие структуры данных вы знаете? Что такое очередь, стэк, FIFO, LIFO?
  • Что такое хэш? Хэш-таблица?
  • Что такое граф?
  • Как вы понимаете понятие трудоёмкость или временная сложность алгоритма? Как она вычисляется? Какова трудоёмкость поиска элемента в массиве? В хэш-таблице?

Компьютерные сети

  • Что такое протокол? Какие протоколы вы знаете?
  • Расскажите про HTTP протокол. Что такое клиент, сервер, как они взаимодействуют?
  • Из чего состоит HTTP-запрос?
  • Какие методы HTTP вы знаете? Какие из них имеют BODY? Какие нет?
  • Чем отличаются GET и POST?
  • Чем отличаются PUT и PATCH?
  • Что такое идемпотентность? Какие методы считаются идемпотентными?
  • Что такое API?
  • Что такое REST API и зачем он нужен?
  • Какие группы статус-кодов вы знаете? Расскажите в двух словах про каждую из групп 1xx, 2xx, 3xx, 4xx, 5xx.
  • Чем отличаются REST и GraphQL?
  • Слышали ли вы что-нибудь про GRPC? Чем он отличается от REST и GraphQL?
  • Какие библиотеки и встроенные методы используются для обработки HTTP-запросов на стороне клиента? Какие на стороне сервера?
  • Что вы знаете об HTTPS? Об TCP/IP?
  • Чем отличаются протоколы TCP и UDP?
  • Что вам известно о доменной системе имён DNS? Как она работает на примере сайта development.starling.com?

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

  • Чем отличается RAM и ROM память?
  • Что такое поток?
  • Что такое однопоточность и многопоточность? Какие у них плюсы и минусы?
  • Какие проблемы встречаются при многопоточность? Что вы знаете о состоянии гонки? Что происходит, когда два потока обращаются к одному ресурсу одновременно? Какие есть способы решения проблемы?

Разработка

  • Из каких этапов состоит разработка?
  • Какие специальности в IT-сфере вы знаете, за что они отвечают?

Программирование

  • Что такое польская нотация? Обратная польская нотация?
  • Что такое конкатенация строк?
  • Зачем нужны регулярные выражения? Как с ними работать?
  • Что такое указатель? Какой размер он имеет? Что можно делать с указателями?
  • Что такое синтаксис? Что такое семантика? Чем они отличаются?

Узконаправленные темы

Git

  • Что такое система контроля версий и зачем она нужна на проекте? Почему будет трудно писать код без неё?
  • Что такое коммит? Как сделать коммит?
  • Какие команды Git ты помнишь? Как переключиться на другую ветку?
  • Зачем нужен команда git stash?
  • Как работает Git? Что такое дельта изменений? Чем отличается Git от своих альтернатив?
  • Чем отличается git pull и git fetch?
  • Чем отличается git merge и git rebase?
  • Какие существуют стратегии merge в Git?
  • Что такое Git flow и как он работает? Что такое environment? Какие environments ты знаешь?

HTML

  • Какая сейчас версия HTML используется? Чем отличается от предыдущих версий?
  • С чего начинается HTML-документ? Что такое Doctype и зачем он нужен? Что содержит dtd файл?
  • Зачем нужны семантические теги? Какие семантические теги вы знаете? Почему нельзя просто всегда использовать <div>?
  • Из каких блоков состоит HTML?
  • Что размещается в блоке head?
  • Где стоит хранить css: в head или body? Аналогичный вопрос касается скриптов.
  • Как сделать так, чтобы скрипты загружались параллельно? Можно ли сделать так, чтобы один скрипт дожидался выполнения другого? Если да, то каким образом?
  • Какие типы HTML-элементов ты знаешь? Чем отличаются блочные и строчные элементы?

CSS

  • Как переводится CSS? Что такое каскад? Как работает алгоритм каскада, из каких этапов состоит?
  • Что такое специфичность? Как её вычислить? Покажите на примере.
  • Что такое наследование в CSS? Какие свойства наследуются, а какие нет? Имеет ли наследование специфичность?
  • Что такое CSS Box model.
  • Что такое z-index и как с ним работать? На каких элементах он работает?
  • Как зафиксировать элемент на экране?
  • Какими способами можно позиционировать элемент по центру?
  • Какая самая большая проблема в CSS? Есть ли область видимости в CSS? Что вы знаете о CSS Modules?
  • Что такое BEM? Зачем нужны методологии в CSS? Какие из них вы знаете?
  • Что такое SCSS/SASS/LESS? Что такое постпроцессоры и препроцессоры?
  • Какие типы вёрстки вы знаете? Чем отличается респонсив и адаптивная вёрстка? Посредством чего в CSS они реализуются?
  • Что такое viewport и viewport values
  • Как высчитывается em и rem? Чем они отличаются?

JavaScript

  • Как вы охарактеризуете язык JavaScript?
  • Охарактеризуйте типизацию языка JavaScript.
  • Расскажите про события в JavaScript? Как работает Event Loop? Что такое таски и микротаски? Чем они отличаются и какие вы из них знаете?
  • Что вам известно про область видимости (Scope), замыкание (Closure), Lexical environment?
  • Какие примитивные типы данных есть в JavaScript?
  • Как вы понимаете фразу: функция - это объект в JavaScript. Виды функций и их различия.
  • Какие парадигмы есть в JavaScript? Как использовать ООП, классы в JavaScript?
  • Что вы знаете о прототимном наследовании в JavaScript? Что такое прототип, скрытое свойство __proto__?
  • Что такое ключевое слово this? Где оно встречается в JavaScript?
  • Как можно явно привязать контекст? Чем отличаются методы apply, call и bind
  • Зачем нужен тип данных Symbol?
  • Какие методы массивов вы знаете? Какие из них изменяют исходный массив, а какие возвращают копию?
  • Что такое асинхронность в JavaScript?
  • Что такое функция обратного вызова (callback)? Какую роль эта функция выполняет?
  • За что отвечает встроенный объект Promise? Какие состояния есть у промисса? Как навешивать обработчики на Promise? Что такое Promise Chaining?
  • Что такое async/await и чем он принципиально отличается от Promise? Что возвращает функция с пометкой async?
  • Зачем нужен eval в JavaScript? Стоит ли его использовать?
  • Что такое строгий режим ("use strict") в JavaScript? Зачем он нужен?

JavaScript DOM

  • Что такое DOM? В виде какой структуры данных он представляется?
  • Что такое Selector API в JavaScropt? Какие методы этого API вы знаете?
  • Производительно ли работать с DOM?
  • Зачем нужен jQuery? Что можно с ним делать?
  • Как подписаться на событие пользователя? Как работать с addEventListener? Как отписаться от события?
  • Что такое всплытие (hoisting) и погружение (capturing)? Как с ними работать? Зачем нужен третий параметр addEventListener?
  • Зачем нужны методы event.preventDefault и event.stopPropagation?

Browser

  • Что происходит, когда вы что-то вводите в поисковое окно
  • Что такое Critical Rendering Path и из чего он состоит
  • Что такое совместимость?
  • Что такое полифилл?
  • Какие инструменты есть в Chrome Dev Tools?
  • Чем отличаются LocalStorage от IndexedDB, от Session Storage? image
  • Может ли браузер понимать SCSS, TypeScript? Что такое трайспайлер? Babel?

React

  • Что такое React? Для чего используется? За что отвечает?
  • Чем отличаются фреймворк и библиотека? React - фреймворк или библиотека?
  • Как вы понимаете component-based подход?
  • Какие принципы React вы можете выделить?
  • Что такое JSX? Можно ли написать React-приложение без JSX?
  • Может ли браузер понимать JSX? Если нет, то что нужно для того, чтобы превратить JSX в JS? Что вы знаете о транспайлерах, о Babel?
  • Что такое состояние? Какими способами можно управлять состоянием в React?
  • Чем отличаются функциональный и классовый компонент?
  • Что такое жизненный цикл и хуки жизненного цикла? Жизненный цикл классового компонента. Как вы понимаете слово mounting?
  • React Hooks. Что это такое, зачем нужны, как работают под капотом. Какие хуки вы знаете? Какие доводилось использовать и для чего?
  • Что такое мемоизация? Чем отличаются memo, useMemo, useCallback?
  • Что такое High Order Component (HOC)? С какими HOC-ами вам доводилось иметь дело?
  • Что такое композиция? Пример композиции в React. Сравнение композиции и наследования.
  • Чем отличается useState и this.setState?
  • Зачем нужно передавать callback в this.setState? Почему state в React обновляется асинхронно?
  • Что вы знаете о Context API?
  • Зачем нужны порталы в React?
  • Что вы знаете о Virtual DOM? Зачем он нужен? Как работает?
  • Что такое PropTypes и зачем они нужны?
  • Что и когда лучше: React Hooks + Context или Redux? Когда можно избежать использования Redux?
  • Можно ли использовать TypeScript и React вместе? Доводилось ли вам это делать?

Redux

  • Что такое состояние в приложении? Зачем нужны инструменты для управления состоянием?
  • Назовите три основных принципа Redux.
  • Жизненный цикл Redux.
  • Как подключить Redux Dev Tools?
  • Как использовать асинхронные функции в Redux? Что вы знаете о redux-thunk и redux-saga.
  • Что такое middleware?
  • Всегда ли нужно использовать Redux? Когда стоит его использовать и когда не стоит?

NodeJS

  • Что такое NodeJS? Охарактеризуйте его.
  • Как работает Event Loop в рамках NodeJS.

Базы данных

  • Чем отличается SQL и NoSQL?
  • Что такое отношение в SQL? Что такое реляционная база данных?
  • Какие типы связей между отношениями вы знаете в SQL?
  • Что такое нормализация базы данных? Чем оно отличается от денормализации? Какие преимущества и недостатки у нормализации и денормализации бд? Какие нормальные формы вы знаете ?
  • Что такое транзакция? Какие принципы транзакций вы знаете? Что вы знаете об принципах ACID? Как работать с транзакциями в микросервисной архитектуре? Что вы знаете о паттерне Saga?
  • Какие типы операций в SQL вы знаете?
  • Напишите SQL-запрос, который выбирает работников с зарплатой > 1000$, группирует их по заданному критерию, а затем сортирует их. Зарплата и работники хранятся в разных таблицах, которые нужно предварительно соединить.
  • Что вы знаете об агрегационных функциях SQL? Какие из них знаете? Когда их можно применять?
  • Какие блоки вы знаете у метода aggregate в MongoDB? Зачем нужна проекция?
  • Что такое популяция?
  • Что такое ORM? С какими ORM доводилось работать? Зачем использовать ORM?
  • Какие движки баз данных вы знаете?
  • Что такое индексы? Зачем их используют? В каком виде хранятся индексы?

TypeScript

  • Что такое статическая типизация? Чем она отличается от динамической?
  • Что такое компилятор? Зачем он нужен TypeScript?
  • Какие типы данных есть в TypeScript? Обязательно ли их указывать?
  • Чем отличается класс и интерфейс? Возможно ли множественное наследование в JavaScript/TypeScript?

Парадигмы программирования

  • Какие парадигмы программирования вы знаете?
  • Почему JavaScript можно назвать мультипарадигменным языком программирования?
  • Что такое ООП? Что такое объект и класс? Приведите примеры из реальной жизни.
  • Какие принципы ООП знаете? Что такое наследование?
  • Какие паттерны ООП знаете?
  • Что такое композиция в ООП? Чем отличаются композиция и наследование? Что лучше использовать и когда?
  • Что такое SOLID? Раскройте смысл каждой буквы, приведите примеры.
  • Что вы знаете о функциональном программировании?
  • Что такое каррирование?
  • Что такое мемоизация?
  • Чем отличаются ФП и ООП? Когда и что лучше использовать?

Тестирование

  • Что вы знаете о пирамиде тестирования? Из каких слоёв она состоит? Сколько и каких должно быть тестов на проекте? Приведите пример Unit-теста, интеграционного теста(API-теста), end-to-end теста.
  • Что такое подход TDD? Чем он отличается от BDD? С какими фреймворками для тестирования вам приходилось работать?
  • Какие паттерны тестирования вы знаете? Что такое загрушка?
  • Что такое регрессионное тестирование? Стоит ли его проводить и почему?
  • Как тестировать "чёрный ящик"?

Паттерны, архитектуры и принципы программирования