└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Вопросы для интервью 2 | 3 | Все вопросы с реальных интервью, которые я проходил в конце 2019 года. Вакансии были условно на middle (зарплата 3000 USD), но джунирам задают те же самые вопросы. Эта подборка по результам примерно 10 собсеседований, не сложно догадаться, что пересечение по вопросам сильно больше 50%. 4 | 5 | Желающим подготовиться к интервью могу предложить занятия: https://sinyakov.com/frontend/ 6 | 7 | ## Javascript 8 | 9 | 1 .В каком порядке выведутся сообщения в консоль? 10 | 11 | ```js 12 | const intervalId = setInterval(() => { 13 | console.log('James'); 14 | }, 10); 15 | 16 | setTimeout(() => { 17 | const promise = new Promise((resolve) => { 18 | console.log('Richard'); 19 | resolve('Robert'); 20 | }); 21 | 22 | promise 23 | .then((value) => { 24 | console.log(value); 25 | 26 | setTimeout(() => { 27 | console.log('Michael'); 28 | 29 | clearInterval(intervalId); 30 | }, 10); 31 | }); 32 | 33 | console.log('John'); 34 | }, 10); 35 | ``` 36 | 37 | 2. Вопрос про this 38 | 39 | ```js 40 | function Person(age) { 41 | this.age = age; 42 | 43 | setInterval(function() { 44 | this.age++; 45 | }, 1000); 46 | } 47 | 48 | const vasya = new Person(13); 49 | 50 | setTimeout(function() { 51 | console.log(vasya.age); // ??? 52 | }, 5000); 53 | 54 | ``` 55 | 56 | 3. Вопрос про прототипы 57 | ```js 58 | function Person(name) { 59 | this.name = name; 60 | } 61 | 62 | const juan = new Person('Juan'); 63 | 64 | Person.prototype = { 65 | getName: function () { 66 | return this.name; 67 | } 68 | }; 69 | 70 | const pedro = new Person('Pedro'); 71 | 72 | console.log(pedro.getName()); 73 | console.log(juan.getName()); 74 | ``` 75 | 76 | 4. Map, Set, WeakMap, WeakSet 77 | 78 | 5. Bind, call, apply — зачем нужны. Реализовать байнд, реализовать кол 79 | 80 | 6. Посчитать сумму 81 | ```js 82 | sum(1)(2)(3)(4)(5) == 15 83 | 4..add(3) === 7 84 | ``` 85 | 86 | 7. Замыкания 87 | ```js 88 | const button = document.querySelector('button'); 89 | 90 | for (var i = 0; i < 3; i++) { 91 | button.addEventListener('click', function (e) { 92 | console.log(i); 93 | }); 94 | } 95 | 96 | button.click(); 97 | ``` 98 | 99 | ## React 100 | 101 | 1. setState 102 | 2. keys 103 | 3. Жизненный цикл реакт-компонентов 104 | 4. Аналоги shouldComponentUpdate 105 | 5. Различие между функциональными и классовыми компонентами 106 | 6. Что возвращает метод render 107 | 7. Чем отличаются hoc и hook 108 | 8. Fiber и история реакта 109 | 110 | ## Броузер 111 | 112 | 1. Какими способами мы можем добавить картинку 113 | 2. Выставить три дива по горизонтали 114 | 3. Адаптирование графики 115 | 4. Ссылка внутри ссылки 116 | 5. rel: noopener/noreferrer 117 | 6. Специфичность селекторов 118 | 7. Чем поведение скрипта с атрибутом defer отличается от async? 119 | 8. Расскажите всё, что вы знаете о событиях в JS. 120 | 9. Что происходит при вводе адреса сайта 121 | 122 | ## Программирование 123 | 124 | - Напишите функцию, принимающую на вход время (в любом формате) и возвращающую угол между стрелками аналоговых часов. 125 | - Написать генератор чисел от а до б 126 | - Заполнить матрицу 10×10 случайными числам от 1 до 100 без повторений 127 | - FizzBuzz 128 | - RLE 129 | - Уникальные значения в массиве 130 | - flat 131 | - sort odd numbers in array 132 | - random hex colour 133 | - Напишите функцию, принимающую на вход строку и проверяющую, является ли эта строка палиндромом. Приведите несколько вариантов решения. 134 | - Напишите функцию, принимающую массив произвольных слов и на выходе дающую двумерный массив анаграмм: 135 | ``` 136 | ['стол', 'барокко', слот', 'кот', 'кошка', 'ток', 'коробка'] → 137 | [['стол', 'слот'], ['кот', 'ток'], ['барокко', 'коробка']] 138 | ``` 139 | - массив из десяти функций: `arr[3]() // 3` 140 | 141 | ## Не программирование 142 | 143 | - HTTP-протокол 144 | - Cookie 145 | - Принципы ООП 146 | - ФП vs процедурное 147 | - SOLID 148 | - Event loop 149 | - MVP 150 | - REST 151 | 152 | --------------------------------------------------------------------------------