1 line
46 KiB
HTML
1 line
46 KiB
HTML
<!doctype html><html lang="en" itemscope itemtype="https://schema.org/Article"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Вопросы кандидату на должность front-end разработчика ★ Front-end Job Interview Questions</title><meta name="description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta name="keywords" content="front-end, interview questions, css questions, js questions, html questions, performance questions, interview test"><meta name="author" content="Front-end Job Interview Questions"><meta itemprop="author" content="Front-end Job Interview Questions"><meta itemprop="name" content="Вопросы кандидату на должность front-end разработчика ★ Front-end Job Interview Questions"><meta itemprop="description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta itemprop="image" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/og-image.png"><meta property="og:title" content="Вопросы кандидату на должность front-end разработчика ★ Front-end Job Interview Questions"><meta property="og:description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta property="og:url" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/translations/russian/"><meta property="og:site_name" content="Front-end Job Interview Questions"><meta property="og:image" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/og-image.png"><meta property="og:image:secure_url" content="/assets/images/og-image.png"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Вопросы кандидату на должность front-end разработчика ★ Front-end Job Interview Questions"><meta name="twitter:description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta name="twitter:site" content="@h5bp"><meta name="twitter:image" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/og-image.png"><meta name="twitter:creator" content="@h5bp"><link type="image/png" rel="apple-touch-icon" href="/assets/images/apple-touch-icon.png"><link type="image/png" sizes="32x32" rel="icon" href="/assets/images/favicon-32x32.png"><link type="image/png" sizes="16x16" rel="icon" href="/assets/images/favicon-32x32.png"><link type="image/png" color="#181818" rel="mask-icon" href="/assets/images/favicon-96x96.png"><meta name="mobile-web-app-capable" content="yes"><meta name="robots" content="index,follow"><style>code[class*=language-],pre[class*=language-]{color:#c5c8c6;text-shadow:0 1px rgba(0,0,0,.3);font-family:Inconsolata,Monaco,Consolas,'Courier New',Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#1d1f21}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7c7c7c}.token.punctuation{color:#c5c8c6}.namespace{opacity:.7}.token.keyword,.token.property,.token.tag{color:#96cbfe}.token.class-name{color:#ffffb6;text-decoration:underline}.token.boolean,.token.constant{color:#9c9}.token.deleted,.token.symbol{color:#f92672}.token.number{color:#ff73fd}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a8ff60}.token.variable{color:#c6c5fe}.token.operator{color:#ededed}.token.entity{color:#ffffb6}.token.url{color:#96cbfe}.language-css .token.string,.style .token.string{color:#87c38a}.token.atrule,.token.attr-value{color:#f9ee98}.token.function{color:#dad085}.token.regex{color:#e9c062}.token.important{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}:root{--font-family-heading:sans-serif;--font-family-body:Georgia,serif;--font-family-code:Menlo,Monaco,'Courier New',monospace;--color-primary:#835EFF;--color-secondary:#FF008D;--color-safe:#8338EC;--color-gradient:linear-gradient(to right, var(--color-primary), var(--color-secondary));--color-highlight:var(--color-primary);--color-gray-opacity:rgba(39,39,39,0.04);--color-heading:#23231A;--color-text:#23231A;--background-default:#F9F9F9;--border-radius-default:5px;--box-shadow-default:0 2rem 4rem rgba(0,0,0,.15);--transition-duration:0.27s}*{margin:0;padding:0;box-sizing:border-box;outline-color:var(--color-primary)}::selection{background:var(--color-primary);color:var(--background-default)}::-moz-selection{background:var(--color-primary);color:var(--background-default)}.nav{padding:1rem 0;margin-bottom:1rem}.navigation{list-style:none;display:flex;font-size:1rem}.navigation-item-emoji{margin-right:.8rem}.navigation-item-emoji a{text-decoration:none;display:inline-block;vertical-align:middle}.navigation-item:not(:last-of-type){margin-right:.8rem}.topbar{width:100%;height:.18rem;background:var(--color-gradient)}.skip-link{position:absolute;top:0;left:0;padding:.5rem 1rem;background-color:var(--color-primary);color:#fff;text-decoration:none;transform:translateY(-100%)}.skip-link:focus{transform:none}.header{margin-bottom:2rem}.header-big-title{font-size:6.9rem;line-height:1.06;margin:2.1rem 0;color:var(--color-primary);word-break:break-word}@supports (mix-blend-mode:lighten){.header-big-title{display:inline-block;position:relative;color:#000;background:#fff;mix-blend-mode:multiply}.header-big-title::before{content:'';display:block;position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/images/gradient.svg);pointer-events:none}.header-big-title::before{mix-blend-mode:screen}}.header-heading{font-size:2.3rem;text-transform:uppercase}.header-big-description{font-size:1.8rem;line-height:1.4;padding:1rem 0}.header-description{padding-top:1rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--font-family-body);font-weight:400;font-size:1.2rem;line-height:1.5;color:var(--color-text)}section+section{padding-top:2rem}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading);color:var(--color-heading);font-style:normal;line-height:1.2;font-weight:600}section+section{padding-top:2rem}a{color:inherit;text-decoration:none;color:var(--color-secondary);transition:color ease-out var(--transition-duration)}a:focus:not(.skip-link),a:hover:not(.skip-link){color:var(--color-primary)}a[rel~=external]{text-decoration:overline}ul:not(.navigation):not(.inline-list){list-style:none}ul:not(.navigation):not(.inline-list) li::before{content:"\25A0";color:var(--color-primary);font-weight:700;display:inline-block;width:1em;margin-left:-1em}li{margin-bottom:.6rem}b,strong{font-weight:600}time{display:inline-block;color:var(--color-gray-70)}[tabindex='-1']{outline:0}img,svg{vertical-align:middle}img{display:block;max-width:100%;border-radius:var(--border-radius-default)}code{font-family:var(--font-family-code);color:var(--color-code);font-style:normal;font-size:1rem}blockquote:not([class]){padding-left:1rem;margin-left:-1rem;border-left:2px solid var(--color-primary);color:var(--color-gray-70);font-style:italic}code[class*=language-],pre[class*=language-]{font-size:.9rem;font-style:normal}p+pre[class*=language-]{margin-bottom:1.8rem}mark{color:var(--color-highlight);background-color:transparent}dt{font-weight:700}dd+dt{padding-top:.5rem}abbr[title],acronym[title]{text-decoration:overline;background:var(--color-gray-opacity);border:1px solid var(--color-gray-opacity);cursor:help}.container{max-width:54rem;padding:3rem 4rem 4rem;margin-right:auto;margin-left:auto}.content li:not(:last-of-type){margin-bottom:.5rem}.content h2{max-width:33rem}.content>:not(:last-child){margin-bottom:2rem}.content :not(hr)+h2,.content :not(hr)+h3{padding-top:1rem}.content ol:not(.inline-list),.content ul:not(.inline-list){padding-left:1.2rem}.content-simple li:not(:last-of-type){margin-bottom:.5rem}.content-edit{text-align:right;margin-top:2rem}.inline-list{padding:0;list-style:none}.inline-list li{padding:0;display:inline-block;vertical-align:middle;text-align:center}.inline-list li::before{content:'';margin-left:0}.inline-list li img{display:block;margin:auto;margin-bottom:.6rem}.inline-list li a{display:inline-block;vertical-align:middle;margin:0 .15rem}.avatar{max-width:12rem}.footer{padding-top:3rem}.footer-text{font-size:.8rem}</style></head><body><div class="topbar"></div><div class="container"><a class="skip-link" href="#main-content">Skip to main content</a><nav class="nav"><ul class="navigation"><li class="navigation-item"><span class="navigation-anchor">Questions:</span></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/coding-questions/" title="Coding Questions">Coding</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/css-questions/" title="CSS Questions">CSS</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/fun-questions/" title="Fun Questions">Fun</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/general-questions/" title="General Questions">General</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/html-questions/" title="HTML Questions">HTML</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/javascript-questions/" title="JavaScript Questions">JavaScript</a></li><li class="navigation-item"><a rel="external noreferrer noopener" target="_blank" class="navigation-anchor" href="https://scottaohara.github.io/accessibility_interview_questions/" title="Accessibility Questions (external link)">A11y</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/network-questions/" title="Network Questions">Network</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/performance-questions/" title="Perfomance Questions">Perfomance</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/testing-questions/" title="Testing Questions">Testing</a></li><li class="navigation-item">|</li><li class="navigation-item-emoji"><a class="navigation-anchor" href="/" title="Home">🏠</a></li><li class="navigation-item-emoji"><a class="navigation-anchor" href="/translations" title="Translations">🌐</a></li></ul></nav><main id="main-content" tabindex="-1"><header class="header"><h1 class="header-big-title">Вопросы кандидату на должность front-end разработчика</h1></header><div class="content"><h1>Вопросы кандидату на должность front-end разработчика</h1><p><strong>Замечание:</strong> Этот репозиторий содержит подборку вопросов, которые могут быть использованы на собеседованиях на должность front-end разработчика. Здесь предлагаются лишь идеи, не нужно задавать все вопросы сразу (иначе в один час точно не уложитесь).</p><p>Также имейте в виду, что многие вопросы не требуют однозначного короткого ответа, а лишь помогают завести беседу на ту или иную тему (предоставляя кандидату возможность показать себя во всей красе).</p><h2 id="%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5"><a class="header-anchor" href="#%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5" aria-hidden="true"></a> <a name="toc">Содержание</a></h2><ol><li><a href="#contributors">Авторы</a></li><li><a href="#general">Общие вопросы</a></li><li><a href="#html">Вопросы по HTML</a></li><li><a href="#css">Вопросы по CSS</a></li><li><a href="#js">Вопросы по JavaScript</a></li><li><a href="#testing">Вопросы по тестированию</a></li><li><a href="#performance">Вопросы по производительности</a></li><li><a href="#network">Вопросы по сетям</a></li><li><a href="#jscode">Примеры кода на JavaScript</a></li><li><a href="#fun">“Светская беседа”</a></li></ol><h4><a href="#toc">[⬆]</a> <a name="contributors">Авторы</a></h4><p>Этот проект был запущен в 2009 году в сотрудничестве с <a href="https://twitter.com/paul_irish">@paul_irish</a> <a href="https://twitter.com/bentruyman">@bentruyman</a> <a href="https://twitter.com/cowboy">@cowboy</a> <a href="https://twitter.com/ajpiano">@ajpiano</a> <a href="https://twitter.com/slexaxton">@SlexAxton</a> <a href="https://twitter.com/boazsender">@boazsender</a> <a href="https://twitter.com/miketaylr">@miketaylr</a> <a href="https://twitter.com/vladikoff">@vladikoff</a> <a href="https://twitter.com/gf3">@gf3</a> <a href="https://twitter.com/jon_neal">@jon_neal</a> <a href="https://twitter.com/sambreed">@sambreed</a> и <a href="https://twitter.com/iansym">@iansym</a>.</p><p>В настоящее время этот проект поддерживают:</p><ul><li><a href="https://github.com/roblarsen">roblarsen</a></li><li><a href="https://github.com/cezaraugusto">cezaraugusto</a></li><li><a href="https://github.com/vvscode">vvscode</a></li></ul><p>С тех пор он был активным благодаря этим <a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/CONTRIBUTORS.md">замечательным людям</a>.</p><h4><a href="#toc">[⬆]</a> <a name="general">Общие вопросы:</a></h4><ul><li>Что вы изучили вчера/на этой неделе?</li><li>Что вас привлекает в программировании?</li><li>С какой технической сложностью вы недавно столкнулись и как с ней справились?</li><li>Какие методы для повышения производительности вы использовали при создании или обслуживании сайта?</li><li>Можете ли вы описать некоторые методы SEO, которые вы использовали в последнее время?</li><li>Можете ли вы объяснить общие принципы относительно front-end безопасности или недавние проблемы, которые вы решили?</li><li>Какие действия вы лично предприняли в недавних проектах для повышения удобства использования вашего кода?</li><li>Расскажите о предпочтительной среде разработки.</li><li>С какими системами контроля версий вы знакомы?</li><li>Можете ли вы описать порядок действий при создании новой веб-страницы?</li><li>Если у вас есть 5 разных файлов со стилями, какой лучший способ интегрировать их в сайт?</li><li>Можете ли вы описать разницу между прогрессивным улучшением и изящной деградацией?</li><li>Как можно оптимизировать загрузку внешних ресурсов на странице?</li><li>Сколько ресурсов браузер может одновременно загружать с одного домена?<ul><li>Какие есть исключения?</li></ul></li><li>Назовите три способа уменьшения времени загрузки страницы (воспринимаемого или реального).</li><li>Если вы присоединились к проекту, где для форматирования используются табы, а вы привыкли использовать пробелы, как вы поступите?</li><li>Опишите, как бы вы реализовали примитивное слайд-шоу.</li><li>Если бы у Вас была возможность освоить новую технологию в этом году, что бы это было?</li><li>Объясните важность стандартов и комитетов по стандартам.</li><li>Что такое FOUC (Flash Of Unstyled Content)? Как его избежать?</li><li>Объясните, что такое ARIA и скринридеры, а также как сделать вебсайт доступным.</li><li>Какие преимущества и недостатки у CSS и JavaScript анимаций?</li><li>Что означает CORS и какую проблему решает?</li></ul><h4><a href="#toc">[⬆]</a> <a name="html">Вопросы по HTML:</a></h4><ul><li>Для чего нужен <code>doctype</code>?</li><li>Как следует оформлять страницу, содержимое которой может быть на разных языках?</li><li>На что необходимо обратить внимание при разработке мультиязычных сайтов?</li><li>Для чего отлично подойдут <code>data-</code> атрибуты?</li><li>Представьте HTML5 как открытую веб-платформу. Из каких блоков состоит HTML5?</li><li>Объясните разницу между <code>cookie</code>, <code>sessionStorage</code> и <code>localStorage</code>.</li><li>Объясните разницу между <code><script></code>, <code><script async></code> и <code><script defer></code>.</li><li>Почему хорошей практикой считается располагать <code><link></code> для подключения CSS между <code><head></head></code>, а <code><script></code> для подключения JS ставить перед <code></body></code>? Знаете ли вы исключения?</li><li>Что такое прогрессивный рендеринг?</li><li>Для чего используется атрибут <code>srcset</code> в теге изображения? Опишите процесс, который использует браузер при оценке содержимого этого атрибута.</li><li>Приходилось ли вам работать с языками HTML-шаблонизации?</li></ul><h4><a href="#toc">[⬆]</a> <a name="css">Вопросы по CSS:</a></h4><ul><li>Что такое специфичность CSS селекторов и как она работает?</li><li>В чем разница между “сбросом” и “нормализацией” CSS? Что бы вы выбрали и почему?</li><li>Объясните, что такое плавающие элементы (floats) и как они работают.</li><li>Объясните, что такое z-index и как формируется контекст наложения.</li><li>Объясните, что такое блочный контекст форматирования и как он работает.</li><li>Какие вы знаете методы запрета обтекания (clearing) и в каких случаях они применяются?</li><li>Как вы решаете стилевые проблемы, связанные с особенностями браузеров?</li><li>Как вы обеспечиваете отображение страниц в браузерах с ограниченными возможностями?<ul><li>Какие приёмы/процессы вы при этом используете?</li></ul></li><li>Какими способами можно визуально скрыть элемент (оставив его доступным только для скринридера)?</li><li>Использовали ли вы систему сеток, и если да, то какую вы предпочитаете?</li><li>Приходилось ли Вам использовать или реализовывать медиа-запросы или вёрстку под мобильные устройства?</li><li>Вы знакомы со стилизацией SVG?</li><li>Можете ли вы привести пример свойства <code>@media</code>, отличного от <code>screen</code>?</li><li>На что нужно обратить внимание при написании эффективного CSS?</li><li>Какие преимущества/недостатки в использовании CSS препроцессоров?<ul><li>Опишите, что вам нравится и не нравится в CSS препроцессорах, которыми вы пользовались.</li></ul></li><li>Как вы реализуете макет, который использует нестандартные шрифты?</li><li>Объясните, как браузер определяет, на какие элементы накладывать CSS стили?</li><li>Объясните, что такое псевдоэлементы и для чего они нужны.</li><li>Объясните своими словами, что такое блочная модель.</li><li>Что делает <code>* { box-sizing: border-box; }</code>? В чем его преимущества?</li><li>Что означает свойство <code>display</code> и можете ли вы привести несколько примеров его использования?</li><li>В чем разница между строчным и блочно-строчным элементом?</li><li>В чем разница между относительным, фиксированным, абсолютным и статически позиционированным элементом?</li><li>Какими CSS фреймворками вы пользовались? Что бы вы хотели в них изменить/улучшить?</li><li>Пользовались ли вы Flexbox или Grid?</li><li>Можете ли вы объяснить разницу между responsive сайтом и mobile-first?</li><li>Вы имеете опыт работы с ретиновой графикой? Если да, то какие методы вы использовали?</li><li>В каком случае вы предпочтёте использовать <code>translate()</code> вместо абсолютного позиционирования и наоборот? И почему?</li></ul><h4><a href="#toc">[⬆]</a> <a name="js">Вопросы по JavaScript:</a></h4><ul><li>Объясните делегирование событий.</li><li>Объясните, как <code>this</code> работает в JavaScript.</li><li>Расскажите, как работает прототипное наследование.</li><li>Что вы думаете о AMD против CommonJS?</li><li>Объясните, почему это не является IIFE: <code>function foo(){ }();</code>.<ul><li>Что необходимо изменить, чтобы это стало IIFE?</li></ul></li><li>В чём различие между переменными, значение которых: <code>null</code>, <code>undefined</code> и не объявлено?<ul><li>Как бы вы проверили их на каждое из этих значений?</li></ul></li><li>Что такое замыкание и как/для чего его используют?</li><li>Можете ли вы описать основное различие между циклом <code>forEach</code> и циклом <code>.map()</code>? И в каких случаях каждый из них используется?</li><li>В каких случаях обычно используются анонимные функции?</li><li>Как вы организуете свой код? (module pattern, classical inheritance)</li><li>В чем разница между host-объектами и нативными объектами?</li><li>В чем разница между: <code>function Person(){}</code>, <code>var person = Person()</code>, и <code>var person = new Person()</code>?</li><li>В чем разница между <code>.call</code> и <code>.apply</code>?</li><li>Что делает и для чего нужна функция <code>Function.prototype.bind</code>?</li><li>В чем разница между feature detection (определение возможностей браузера), feature inference (предположение возможностей) и анализом строки user-agent?</li><li>Расскажите об Ajax как можно более подробно.</li><li>Какие преимущества и недостатки в использовании Ajax?</li><li>Объясните, как работает JSONP (и почему это не совсем AJAX).</li><li>Вы когда-нибудь использовали шаблонизацию на JavaScript?<ul><li>Если да, то какие библиотеки вы использовали?</li></ul></li><li>Расскажите, что такое “hoisting”.</li><li>Объясните event bubbling.</li><li>В чём разница между “атрибутом” (attribute) и “свойством” (property)?</li><li>Почему не следует расширять нативные JavaScript объекты?</li><li>В чём разница между событием document load и событием document DOMContentLoaded?</li><li>В чем разница между <code>==</code> и <code>===</code>?</li><li>Объясните <code>same-origin policy</code> в контексте JavaScript.</li><li>Сделайте так, чтобы этот код работал:</li></ul><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token function">duplicate</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [1,2,3,4,5,1,2,3,4,5]</span></div></code></pre><ul><li>Почему тернарный оператор так называется?</li><li>Что делает строчка <code>"use strict";</code>? Какие достоинства и недостатки от ее использования?</li><li>Напишите цикл, который перебирает числа до <code>100</code>, возвращая <strong>“fizz”</strong> на числа кратные <code>3</code>, <strong>“buzz”</strong> на числа кратные <code>5</code> и <strong>“fizzbuzz”</strong> на числа кратные <code>3</code> и <code>5</code></li><li>Почему считается хорошим тоном оставить глобальную область видимости (global scope) в нетронутом состоянии?</li><li>Для чего используют событие <code>load</code>? Есть ли у этого события недостатки? Знаете ли вы какие-либо альтернативы, и в каких случаях бы стали их использовать?</li><li>Расскажите, что такое одностраничное приложение, и как сделать его SEO-оптимизированным.</li><li>Насколько вы опытны в работе с промисами (promises) и/или их полифиллами?</li><li>Какие преимущества и недостатки при использовании промисов вместо функций обратного вызова (callbacks)?</li><li>Каковы преимущества и недостатки написания JavaScript кода на языке, который компилируется в JavaScript?</li><li>Какие инструменты и методы вы используете при отладке кода?</li><li>Какие языковые конструкции вы используете для итерации по свойствам объекта и элементам массива?</li><li>Объясните разницу между изменяемыми (mutable) и неизменяемыми (immutable) объектами.<ul><li>Приведите пример неизменяемого объекта в JavaScript.</li><li>Какие преимущества и недостатки у неизменяемости?</li><li>Как вы можете достигнуть неизменяемости в вашем коде?</li></ul></li><li>Объясните разницу между синхронными и асинхронными функциями.</li><li>Что такое цикл событий (event loop)?<ul><li>В чем разница между стеком вызовов (call stack) и очередью событий (task queue)?</li></ul></li><li>Объясните разницу при использовании <code>foo</code> в <code>function foo() {}</code> и <code>var foo = function() {}</code></li><li>В чём различие между переменными, созданными при помощи <code>let</code>, <code>var</code> и <code>const</code>?</li><li>В чём разница между классом в ES6 и функцией-конструктором в ES5?</li><li>Можете ли вы привести пример использования стрелочных функции <code>=></code>? Чем они отличаются от других функций?</li><li>Дайте определение функции высшего порядка.</li><li>Можете ли вы привести пример деструктуризации объекта или массива?</li><li>Шаблонные строки в ES6 намного упрощают создание строк, можете ли вы привести пример их использования?</li><li>Можете ли вы привести пример каррированной функции (curry function) и в чём их преимущество?</li><li>В чём преимущества использования <code>spread</code> оператора и чем он отличается от <code>rest</code> оператора?</li><li>Каким образом можно обмениваться кодом между файлами?</li><li>Для чего используются статические члены класса?</li></ul><h4><a href="#toc">[⬆]</a> <a name="testing">Вопросы по тестированию:</a></h4><ul><li>Какие преимущества/недостатки в тестировании собственного кода?</li><li>Какие инструменты вы будете использовать для тестирования работоспособности своего кода?</li><li>В чём различие между юнит-тестами и функциональными/интеграционными тестами?</li><li>Для чего предназначены линтеры (code style linting tool)?</li></ul><h4><a href="#toc">[⬆]</a> <a name="performance">Вопросы по производительности:</a></h4><ul><li>Какие инструменты вы используете, чтобы найти недостатки в производительности вашего кода?</li><li>Какие вы знаете способы улучшения производительности при скроллинге на вебсайте?</li><li>Объясните разницу между layout, painting и compositing.</li></ul><h4><a href="#toc">[⬆]</a> <a name="network">Вопросы по сетям:</a></h4><ul><li>Почему лучше загружать ресурсы для сайта с нескольких доменов?</li><li>Опишите весь процесс, начиная с ввода адреса сайта в адресную строку до окончания его загрузки на экране.</li><li>В чём различия между Long-Polling, Websockets и Server-Sent Events?</li><li>Опишите следующие заголовки HTTP-запросов и ответов:<ul><li>Разницу между Expires, Date, Age и If-Modified-…</li><li>Do Not Track</li><li>Cache-Control</li><li>Transfer-Encoding</li><li>ETag</li><li>X-Frame-Options</li></ul></li><li>Что такое HTTP методы? Перечислите все HTTP-методы, которые вы знаете, и объясните их.</li></ul><h4><a href="#toc">[⬆]</a> <a name="jscode">Примеры кода на JavaScript</a></h4><p><em>Вопрос: Чему равно <code>foo</code>?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token number">10</span> <span class="token operator">+</span> <span class="token string">'20'</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Что выводит код ниже?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">0.1</span> <span class="token operator">+</span> <span class="token number">0.2</span> <span class="token operator">==</span> <span class="token number">0.3</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Как сделать, чтобы это выражение работало?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token function">add</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 7</span></div><div class="highlight-line"><span class="token function">add</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 7</span></div></code></pre><p><em>Вопрос: Какое значение возвращает данное выражение?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token string">"i'm a lasagna hog"</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">reverse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Чему равно <code>window.foo</code>?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token punctuation">(</span> window<span class="token punctuation">.</span>foo <span class="token operator">||</span> <span class="token punctuation">(</span> window<span class="token punctuation">.</span>foo <span class="token operator">=</span> <span class="token string">"bar"</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Что покажут эти два alert?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token string">"Hello"</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></div><div class="highlight-line"> <span class="token keyword">var</span> bar <span class="token operator">=</span> <span class="token string">" World"</span><span class="token punctuation">;</span></div><div class="highlight-line"> <span class="token function">alert</span><span class="token punctuation">(</span>foo <span class="token operator">+</span> bar<span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token function">alert</span><span class="token punctuation">(</span>foo <span class="token operator">+</span> bar<span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Чему равно <code>foo.length</code>?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></div><div class="highlight-line">foo<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line">foo<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Чему равно <code>foo.x</code>?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token punctuation">{</span>n<span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">}</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token keyword">var</span> bar <span class="token operator">=</span> foo<span class="token punctuation">;</span></div><div class="highlight-line">foo<span class="token punctuation">.</span>x <span class="token operator">=</span> foo <span class="token operator">=</span> <span class="token punctuation">{</span>n<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">}</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: Что выводит код ниже?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'one'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></div><div class="highlight-line"> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'two'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'three'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Вопрос: В чем разница между этими четырьмя промисами (promises)?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token function">doSomething</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></div><div class="highlight-line"> <span class="token keyword">return</span> <span class="token function">doSomethingElse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"></div><div class="highlight-line"><span class="token function">doSomething</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></div><div class="highlight-line"> <span class="token function">doSomethingElse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"></div><div class="highlight-line"><span class="token function">doSomething</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token function">doSomethingElse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"></div><div class="highlight-line"><span class="token function">doSomething</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>doSomethingElse<span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><h4><a href="#toc">[⬆]</a> <a name="fun">“Светская беседа”:</a></h4><ul><li>Самое крутое, что вы когда-либо делали и чем гордитесь?</li><li>Что вы больше всего любите в ваших инструментах разработки?</li><li>Кто из фронтенд-сообщества вас вдохновляет?</li><li>У вас есть какие-нибудь личные проекты? Какого рода?</li><li>Какая ваша любимая “фишка” Internet Explorer?</li><li>Какой кофе вы предпочитаете?</li></ul></div><div class="content-edit"><a rel="external noreferrer noopener" target="_blank" href="https://github.com/h5bp/Front-end-Developer-Interview-Questions/tree/master/src/translations/russian/index">Edit this page</a></div></main><footer class="footer"><p class="footer-text">Copyright (c) 2012 - 2018. Contributors to <a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions">Front-end-Developer-Interview-Questions.</a><br>This project is maintained by <a href="https://github.com/cezaraugusto" target="_blank" rel="noreferrer noopener">Cezar Augusto</a>, <a href="https://github.com/roblarsen" target="_blank" rel="noreferrer noopener">Rob Larsen</a> and <a href="https://github.com/vvscode" target="_blank" rel="noreferrer noopener">Vasiliy Vanchuk</a> .<br>Curious about the project? <a href="/about/">Read more about here</a>.</p></footer></div><script>console.log("%cA black belt is a white belt that didn't quit.","color: #fff; font-size: 80px; text-shadow: 1px 1px 1px #000; font-family: serif;");</script></body></html> |