Вопросы кандидату на должность front-end разработчика
Вопросы кандидату на должность фронтенд-разработчика
Замечание: Этот репозиторий содержит подборку вопросов, которые могут быть использованы на собеседованиях на должность фронтенд-разработчика. Здесь предлагаются лишь идеи, не нужно задавать все вопросы сразу (иначе в один час точно не уложитесь).
Так��е имейте в виду, что многие вопросы не требуют однозначного короткого ответа, а лишь помогают завести беседу на ту или иную тему (предоставляя кандидату возможность показать себя во всей красе).
Содержание
- Авторы
- Общие вопросы
- Вопросы по HTML
- Вопросы по CSS
- Вопросы по JavaScript
- Вопросы по тестированию
- Вопросы по производительности
- Вопросы по сетям
- Примеры кода на JavaScript
- “Светская беседа”
[⬆] Авторы
Этот проект был запущен в 2009 году в сотрудничестве с @paul_irish @bentruyman @cowboy @ajpiano @SlexAxton @boazsender @miketaylr @vladikoff @gf3 @jon_neal @sambreed и @iansym.
В настоящее время этот проект поддерживают:
С тех пор он был активным благодаря этим замечательным людям.
[⬆] Общие вопросы:
- Что вы изучили вчера/на этой неделе?
- Что вас привлекает в программировании?
- С какой технической сложностью вы недавно столкнулись и как с ней справились?
- Какие методы для повышения производительности вы использовали при создании или обслуживании сайта?
- Можете ли вы описать некоторые методы SEO, которые вы использовали в последнее время?
- Можете ли вы объяснить общие принципы относительно фронтенд-безопасности или недавние проблемы, которые вы решили?
- Какие действия вы лич��о предприняли в недавних проектах для повышения удобства использования вашего кода?
- Расскажите о предпочитаемой среде разработки.
- С какими системами контроля версий вы знакомы?
- Можете ли вы описать порядок действий при создании новой веб-страницы?
- Если у вас есть 5 разных файлов со стилями, какой лучший способ интегрировать их в сайт?
- Можете ли вы описать разницу между прогрессивным улучшением и изящной деградацией?
- Как можно оптимизировать загрузку внешних ресурсов на странице?
- Сколько ресурсов браузер может одновременно загружать с одного домена?
- Какие есть исключения?
- Назовите три способа уменьшения времени загрузки страницы (воспринимаемого или реального).
- Если вы присоединились к проекту, где для форматирования используются табы, а вы привыкли использовать пробелы, как вы поступите?
- Опишите, как бы вы реализовали примитивное слайд-шоу.
- Если бы у вас была возможность освоить новую технологию в этом году, что бы это было?
- Объясните важность стандартов и комитетов по стандартам.
- Что такое FOUC (Flash Of Unstyled Content)? Как его избежать?
- Объясните, что такое ARIA и скринридеры, а также как сделать сайт доступным.
- Какие преимущества и недостатки у CSS и JavaScript анимаций?
- Что означает CORS и какую проблему решает?
[⬆] Вопросы по HTML:
- Для чего нужен
doctype? - Как следует оформлять страницу, содержимое которой может быть на разных языках?
- На что необходимо обратить внимание при разработке мультиязычных сайтов?
- Для чего нужны атрибуты, начинающиеся с
data-? - Представьте HTML5 как открытую веб-платформу. Из каких блоков состоит HTML5?
- Объясните разницу между
cookie,sessionStorageиlocalStorage. - Объясните разницу между
<script>,<script async>и<script defer>. - Почему хорошей практикой считается располагать
<link>для подключения CSS между<head></head>, а<script>для подключения JS ставить перед</body>? Знаете ли вы исключения? - Что такое прогрессивная отрисовка?
- Для чего используется атрибут
srcsetв теге изображения? Опишите процесс, который использует браузер при оценке содержимого этого атрибута. - Приходилось ли вам работать с языками HTML-шаблонизации?
- Объясните разницу в поведении между тегами
<button>и<input type="button">внутри формы? - Объясните разницу между тегами
<strong>и<b>? - Приведи примеры использования тега
<label>? - Чем тег
<a>отличается от тега<button>с точки зрения функциональности и использования?
[⬆] Вопросы по CSS:
Что такое специфичность CSS-селекторов и как она работает?
В чем разница между «сбросом» и «нормализацией» CSS? Что бы вы выбрали и почему?
Объясните, что такое плавающие элементы (floats) и как они работают.
Объясните, что такое z-index и как формируется контекст наложения.
Объясните, что такое блочный контекст форматирования и как он работает.
Какие вы знаете методы запрета обтекания (clearing) и в каких случаях они применяются?
Как вы решаете стилевые проблемы, связанные с особенностями браузеров?
Как вы обеспечиваете отображение страниц в браузерах с ограниченными возможностями?
- Какие приёмы/процессы вы при этом используете?
Какими способами можно визуально скрыть элемент (оставив его доступным только для скринридера)?
Использовали ли вы систему сеток, и если да, то какую вы предпочитаете?
Приходилось ли вам использовать или реализовывать медиазапросы или вёрстку под мобильные устройства?
Вы знакомы со стилизацией SVG?
Можете ли вы привести пример свойства
@media, отличного отscreen?На что нужно обратить внимание при написании эффективного CSS?
Какие преимущества/недостатки в использовании CSS препроцессоров?
- Опишите, что вам нравится и не нравится в CSS препроцессорах, которыми вы пользовались.
Как вы реализуете макет, который использует нестандартные шрифты?
Объясните, как браузер определяет, на какие элементы накладывать CSS стили?
Объясните, что такое псевдоэлементы и для чего они нужны.
Объясните своими словами, что такое блочная модель.
Что делает
* { box-sizing: border-box; }? В чем его преимущества?Что означает свойство
displayи можете ли вы привести несколько примеров его использования?В чем разница между строчным и блочно-строчным элементом?
В чем разница между относительным, фиксированным, абсолютным и статически позиционированным элементом?
Какими CSS-фреймворками вы пользовались? Что бы вы хотели в них изменить/улучшить?
Пользовались ли вы Flexbox или Grid?
Можете ли вы объяснить разницу между отзывчивым (responsive) сайтом и сайтом, сделанным по принципу mobile-first?
Вы имеете опыт работы с ретиновой графикой? Если да, то какие методы вы использовали?
В каком случае вы предпочтёте использовать
translate()вместо абсолютного позиционирования и наоборот? И почему?Можете ли вы привести пример псевдокласса?
- Какие новые псевдоклассы появились за последние год-два?
В чем отличие между
emиrem? Как они рассчитываются?Какие проблемы появляются при попытке переопределить стили компонента их UI-библиотеки? Какие ��пособы решения существуют?
- Что такое
@layerи как это могло бы помочь решить проблему переопределения стилей?
- Что такое
Объясните, что такое
vhиvw?- Какие проблемы возникают на мобильных устройствах при использовании
vh? Как их можно решить?
- Какие проблемы возникают на мобильных устройствах при использовании
Что такое пользовательские css свойства?
- Как ограничить их область видимости?
Какой цвет применится и почему?
.red {
color: red;
}
.blue {
color: blue
}<div class="blue red">Hello world</div>- Как можно оптимизировать данный код? (Возможно несколько решений)
main h1 {
color: red;
}
main p {
color: red;
}
main a {
color: red;
}[⬆] Вопросы по JavaScript:
- Объясните делегирование событий.
- Объясните, как
thisработает в JavaScript. - Расскажите, как работает прототипное наследование.
- Что вы думаете о AMD против CommonJS?
- Объясните, почему это не является IIFE:
function foo(){ }();.- Что необходимо изменить, чтобы это стало IIFE?
- В чём различие между переменными, значение которых:
null,undefinedи не объявлено?- Как бы вы проверили их на каждое из этих значений?
- Что такое замыкание и как/для чего его используют?
- Можете ли вы описать основное различие между циклом
forEachи циклом.map()? И в каких случаях каждый из них используется?- Расскажите про другие популярные методы итерации массивов.
- В каких случаях обычно используются анонимные функции?
- Как вы организуете свой код? (module pattern, classical inheritance)
- В чем разница между host-объектами и нативными объектами?
- В чем разница между:
function Person(){},var person = Person(), иvar person = new Person()? - В чем разница между
.callи.apply? - Что делает и для чего нужна функция
Function.prototype.bind? - В чем разница между feature detection (определение возможностей браузера), feature inference (предположение возможностей) и анализом строки user-agent?
- Расскажите об Ajax как можно более подробно.
- Какие преимущества и недостатки в использовании Ajax?
- Объясните, как работает JSONP (и почему это не совсем AJAX).
- Вы когда-нибудь использовали шаблонизацию на JavaScript?
- Если да, то какие библиотеки вы использовали?
- Расскажите, что такое поднятие (hoisting).
- Объясните, что такое всплытие событий (event bubbling).
- В чём разница между «атрибутом» (attribute) и «свойством« (property)?
- Почему не следует расширять нативные JavaScript-объекты?
- В чём разница между событием document load и событием document DOMContentLoaded?
- В чём разница между
==и===? - Объясните
same-origin policyв контексте JavaScript. - Сделайте так, чтобы этот код работал:
duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5]- Почему тернарный оператор так называется?
- Что делает строчка
"use strict";? Какие достоинства и недостатки от ее использования? - Напишите цикл, который перебирает числа до
100, возвращая “fizz” на числа кратные3, “buzz” на числа кратные5и “fizzbuzz” на числа кратные3и5 - Почему считается хорошим тоном оставить глобальную область видимости (global scope) в нетронутом состоянии?
- Для чего используют событие
load? Есть ли у этого события недостатки? Знаете ли вы какие-либо альтернативы, и в каких случаях бы стали их использовать? - Расскажите, что такое одностраничное приложение, и как сделать его SEO-оптимизированным.
- Насколько вы опытны в работе с промисами (promises) и/или их полифилами?
- Какие преимущества и недостатки при использовании промисов вместо колбэков (callbacks)?
- Каковы преимущества и недостатки написания JavaScript-кода на языке, который компилируется в JavaScript?
- Какие инструменты и методы вы используете при отладке кода?
- Какие языковые конструкции вы используете для итерации по свойствам объекта и элементам массива?
- Объясните разницу между изменяемыми (mutable) и неизменяемыми (immutable) объектами.
- Приведите пример неизменяемого объекта в JavaScript.
- Какие преимущества и недостатки у неизменяемости?
- Как вы можете достигнуть неизменяемости в вашем коде?
- Объясните разницу между синхронными и асинхронными функциями.
- Что такое цикл событий (event loop)?
- В чём разница между стеком вызовов (call stack) и очередью событий (task queue)?
- Объясните разницу при использовании
fooвfunction foo() {}иvar foo = function() {} - В чём различие между переменными, созданными при помощи
let,varиconst?- Можем ли мы менять свойства объекта объявленного через
const? Как мы можем изменить это поведение?
- Можем ли мы менять свойства объекта объявленного через
- В чём разница между классом в ES6 и функцией-конструктором в ES5?
- Можете ли вы привести пример использования стрелочных функции
=>? Чем они отличаются от других функций? - Дайте определение функции высшего порядка.
- Можете ли вы привести пример деструктуризации объекта или массива?
- Шаблонные строки в ES6 намного упрощают создание строк, можете ли вы привести пример их использования?
- Можете ли вы привести пример каррированной функции (curry function) и в чём их преимущество?
- В чём преимущества использования
spreadоператора и чем он отличается отrestоператора? - Каким образом можно обмениваться кодом между файлами?
- Для чего используются статические члены класса?
- Объясните разницу между
event.targetиevent.currentTarget? - Объясните разницу между
event.preventDefault()иevent.stopPropagation()?
[⬆] Вопросы по тестированию:
- Какие преимущества/недостатки в тестировании собственного кода?
- Какие инструменты вы будете использовать для тестирования работоспособности своего кода?
- В чём различие между юнит-тестами и функциональными/интеграционными тестами?
- Для чего предназначены линтеры (code style linting tool)?
[⬆] Вопросы по производительности:
- Какие инструменты вы используете, чтобы найти недостатки в производительности вашего кода?
- Какие вы знаете способы улучшения производительности при скроллинге на вебсайте?
- Объясните разницу между раскладкой (layout), painting и композитингом (compositing).
[⬆] Вопросы по сетям:
- Почему лучше загружать ресурсы для сайта с нескольких доменов?
- Опишите весь процесс, начиная с ввода адреса сайта в адресную строку до окончания его загрузки на экране.
- В чём различия между Long-Polling, Websockets и Server-Sent Events?
- Опишите следующие заголовки HTTP-запросов и ответов:
- Разницу между Expires, Date, Age и If-Modified-…
- Do Not Track
- Cache-Control
- Transfer-Encoding
- ETag
- X-Frame-Options
- Что такое HTTP-методы? Перечислите все HTTP-методы, которые вы знаете, и объясните их.
[⬆] Примеры кода на JavaScript
Вопрос: Чему равно foo?
var foo = 10 + '20';Вопрос: Что выводит код ниже?
console.log(0.1 + 0.2 == 0.3);Вопрос: Как сделать, чтобы это выражение работало?
add(2, 5); // 7
add(2)(5); // 7Вопрос: Какое значение возвращает данное выражение?
"i'm a lasagna hog".split("").reverse().join("");Вопрос: Чему равно window.foo?
( window.foo || ( window.foo = "bar" ) );Вопрос: Что покажут эти два alert?
var foo = "Hello";
(function() {
var bar = " World";
alert(foo + bar);
})();
alert(foo + bar);Вопрос: Чему равно foo.length?
var foo = [];
foo.push(1);
foo.push(2);Вопрос: Чему равно foo.x?
var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};Вопрос: Что выводит код ниже?
console.log('one');
setTimeout(function() {
console.log('two');
}, 0);
console.log('three');Вопрос: В чем разница между этими четырьмя промисами (promises)?
doSomething().then(function () {
return doSomethingElse();
});
doSomething().then(function () {
doSomethingElse();
});
doSomething().then(doSomethingElse());
doSomething().then(doSomethingElse);[⬆] «Светская беседа»:
- Самое крутое, что вы когда-либо делали и чем гордитесь?
- Что вы б��льше всего любите в ваших инструментах разработки?
- Кто из фронтенд-сообщества вас вдохновляет?
- У вас есть какие-нибудь личные проекты? Какого рода?
- Какая ваша любимая “фишка” Internet Explorer?
- Какой кофе вы предпочитаете?