Вопросы, которые мне задавали на собеседованиях и другие джуны

Kate

Administrator
Команда форума
Мой опыт работы показывает, что вопросы на собеседованиях кардинально отличаются из собеседования к собеседованию. Я собрал все те вопросы, которые проходил на собеседованиях в течении двух лет, а также те вопросы, которые меня спрашивали джуны на работе, дабы показать их вам.
Данная статья будет интересна тем, кто хочет устроиться на работу. Она также поможет тем, кто не уверен в своих знаниях и хочет проверить себя. Опытные разработчики возможно найдут для себя пару интересных вещей, новички же соберут уйму информации для обдумывания. Ну, что ж начнём.

Базовый Javascript​

Что выведет следующий фрагмент кода:
const symbol = Symbol('foo');
const object = {[symbol]: 1};
console.log(object[Symbol('foo')]);
Показать ответ
Данный код выведет undefined, так как символ представляет из себя уникальный идентификатор. Можете проверить:
console.log(Symbol('f') === Symbol('f'));
> false
Подробнее о символах можно прочитать здесь.
Что выведет следующий фрагмент кода:
const m = 10000;
new Intl.NumberFormat('de-DE',
{
style: 'currency',
currency: 'EUR'
}).format(m);
Показать ответ
Данный код выведет '10.000,00 €'
Intl - конструктор чисел, который зависит от языка
Подробнее читайте на MDN
Что выведет следующий фрагмент:
const [num,str] = [10, 'str'];
console.log(
Number.isNaN(str),
Number.isNaN(num),
isNaN(num),
isNaN(str)
);
Показать ответ
Данный код выведет false, false, false, true
Подробнее о отличиях Number.isNaN() и isNaN() тут.
Что выведет данный фрагмент кода:
console.log(
JSON.stringify(
{
x: 5,
y: 7
},
[
'x',
8
]
));
Показать ответ
Данный код выведет {"x": 5}
Подробнее о JSON.stringify() можно посмотреть здесь.
Продолжаем:
console.log(typeof('1' + 1));
Показать ответ
Интерпретатор выведет 'string'
Любое выражение сложенное со строкой, где строка является первым операндом превращается в строку. Выражение '11' является типом string.
Продолжаем вопросы про приведение типов:
var str = "1";
str = +!str;
console.log(typeof str);
Показать ответ
Данный код выведет 'number'
Строка с оператором не (!) превращается в false (любая непустая строка преобразовывается в true). Унарный плюс превращает любое значение в примитив числа. false переведённый в числа является нулем. Выражение 0 является числом
Ещё один вопрос про приведение типов:
console.log(+`3`- true + '1');
Показать ответ
Данный код выведет '21'
Унарный плюс превращает строку `3` в число. true при вычислении с числом преобразовывается в единицу => 3 - 1 = 2. 2 + '1' = '21'
Следующий вопрос:
Какая длина массива?
let arr = [1,2,3,4,5];
delete arr[0];
Какие из данных методов меняют массив, а не возвращают новый:
  • map
  • reduce
  • splice
  • slice
  • find
  • filter
Ответ
Из всех методов прототипа Array только splice() редактирует сам массив, а не создает копию массива.
Что будет выводом данной программы:
const config = {
react: true,
node: false,
angular: true,
javascript: true
}
const techStack = ['javascript', 'angular', 'react'];
console.log(config.techStack[1]);
Показать ответ
TypeError - ответ данного вопроса.
Что выведет данный код:
console.log([] === []);
Посмотреть ответ
Данный код выведет false
В данном случае JS сравнивает два указателя, а не их содержание.
Подробнее можно посмотреть здесь.

React​

Какой эквивалент данного кода
React.createElement('div', { style: { color: 'red' } }, 'title="block"')
Показать ответ
<div style="color: red;">title="block"</div>
Расскажите последовательность методов, которая происходит при монтировании компонента?
Ответ
  1. constructor()
  2. static getDerivedStateFromProps()
  3. render()
  4. componentDidMount()
Расскажите последовательность методов, которая происходит при обновлении компонента?
Показать ответ
  1. getDerivedStateFromProps()
  2. shouldComponentUpdate()
  3. render()
  4. getSnapshotBeforeUpdate()
  5. componentDidUpdate()
Как развернуть spread оператор для того чтобы все элементы из объекта перешли в пропсы?
Ответ
const opts = {foo: 'a', bar: 'b'};
// .....
<Component {...opts}/>


 
Сверху