Эту заметку я создал для того, чтобы записывать в неё вопросы, которые мне (или не мне) задавали на собеседовании (или не собеседовании) по JS.
Тут вы не найдете ответов на эти вопросы (или немного найдете), только вопросы.
И когда вы найдёте ответы на эти вопросы где-то ещё, то вам не станет от этого лучше. Это просто вопросы, ответы на которые кто-то кому-то задает.
React JS / Native
- Жизненный цикл компонента? В какой метод какие аргументы приходят? Где и как лучше обновлять стейт?
- Что такое функциональный компонент и PureComponent? В чём разница?
- Что такое Redux?
- Что такое сайд-эффекты?
- Какие бывают миддлвары в Redux?
- Для чего нужен redux-thunk?
- На чём построена redux-saga (на генераторах) и для чего она нужна?
- React Router и redux-router. Что? Зачем? Почему?
- Для чего нужен второй аргумент в функции setState?
- С какой версии React пользуешься и какие крупные изменения за это время произошли?
- Какие ломающие изменения произошли в 16 версии?
- Что такое Context API и какие в нём произошли изменения?
- Что такое Flux-архитектура и в чём её отличия с реализацией Redux?
- React и Vue - что лучше и для каких задач?
- Redux и MobX - что лучше и для каких задач? Какие ещё есть библиотеки для управления стейта приложения?
- Server-Side Rendering?
- Что такое Higher-Ordered Component?
- Что такое React Native? Зачем оно? В чём отличия от обычного React? (да, именно так мне его и задали)
- Как отрендерить компонент в указанное время?
Java Script
- Так что же наконец такое, это замыкание!?
- Как работает Event Loop? Таски, микротаски, очереди, etc.?
- Что такое garbage collector в js и как он работает? (нет ссылок - нет объекта, есть ссылка - есть страдание)
- Что такое делегирование? (когда вешаем обработчик на контейнер и проверяем клик по элементу внутри - ага, всё ещё спрашивают)
- Что такое LocalStorage и в чём его отличия от Cookie? Как защитить запись в куке, чтобы её не смог прочитать js (флаг HttpOnly)?
- Что такое WebSocket? Что такое long-polling и в чём их разница? Какие проблемы они решают?
- ServiceWorker / WebWorker / SharedWorker? Что это? Зачем это? Как это?
- event.preventDefault() и event.stopPropagation() - зачем и когда?
- Что интересного в новых proposal и чего ждёшь больше всего?
- Что такое higher-ordered function? (однажды мне задали дополнительный вопрос - "можно ли в неё передать функцию?" и это был очень странный вопрос!)
- Что такое Promise? Как отлаживать ошибки?
- Что такое Async/Await и во что его компилят транспиллеры? И как их отлаживать?
- Что такое генераторы?
- Что такое Proxy?
- TypeScript / Flow? Что это и зачем это?
- Что такое optimistic rendering? Как бы реализовал?
- Что такое virtual scroll? Как оно работает?
- Что такое node.js?
- Что такое d3? Для чего она нужна?
- Как работают генераторы?
- Напиши генератор, который реализует последовательность Фибоначи (лайв кодинг не моё вообще, после собеса подумал и написал)
DOM
- DOM Events: 3 фазы прохода события (
Фаза погружения (capturing phase) – событие сначала идёт сверху вниз.
Фаза цели (target phase) – событие достигло целевого(исходного) элемента.
Фаза всплытия (bubbling stage) – событие начинает всплывать.
).
- Как предотвратить всплытие? (event.stopPropagation(), event.stopImmediatePropagation())
CSS
- Если дело вообще касается css, то почему-то всё ещё спрашивают про способы "оцентровать блок по центру экрана". В 2к18!
- Препроцессоры и их плюсы/минусы относительно друг друга (это обычно вопрос про опыт и почему-то про postcss так никто и не спросил)?
- css-modules / styled-components. Что это? Зачем это? Плюсы-минусы?
- Какие бывают значения display и есть ли элементы, которые по-умолчанию inline-block (img)?
- Чем отличается opacity: 0 от opacity: 0.00001?
- Чем отличается visibility: hidden от display: none?
- Что такое float? Как обнулить? Из чего состоит .clearfix?
- В чём разница box-sizing: content-box от border-box?
- Через какие директивы реализуется респонзив?
- Какого цвета будет текст если ...
Other Браузер
- Что такое SVG? Какие есть способы вставить SVG на страницу? SVG-анимации?
- Что такое canvas и почему он такой быстрый?
- Какие бывают способы оптимизации приложения? (спрайты, минификация, лейзи-лоад, etc.)
- Сколько запросов одновременно можно отправить из браузера на определённый домен? Как решают проблему с ограничением? Решает ли её http/2?
Other программирование
- Какие бывают паттерны? Перечисли какие знаешь и поясни коротко? (обычно говорят про медиатор, фабрику и декоратор)
- Какие паттерны проектирования знаешь и в чём особенности? (например MVC и MVVM)
- Что такое чистая функция (pure function)?
- Какие языки программирования бывают (функциональные/императивные)? В чём суть этих парадигм? К какой парадигме относится JS?
- Чем компилируемые языки отличаются от интерпретируемых? Какие есть интерпретируемые языки? Где интерпретируется их код?
- Что такое Rx?
- Что такое REST и в чём его отличие от RPC? CRUD?
- Чем отличается GET от POST? Какие ещё виды запросов есть и для чего используются?
- На каком уровне OSI находятся http / tcp / ping / json / витая пара?
- Что происходит после запроса из браузера на открытие какой-то страницы?
- S.O.L.I.D.?
- Что такое JSON? Что такое XML? Продолжи список (мне вспомнился только YAML)? Можно ли сконвертировать XML в JSON?
- Что такое protobuf и messagepack? В чём отличие?
- Что такое микросервисы? Зачем они? Какие проблемы решает микросервисная архитектура?
- Что такое мутабельность и иммутабельность?
После этого всего в голове остаётся один самый важный вопрос: стал ли я счастливее, узнав ответы на все эти вопросы?