Мой опыт работы показывает, что вопросы на собеседованиях кардинально отличаются из собеседования к собеседованию. Я собрал все те вопросы, которые проходил на собеседованиях в течении двух лет, а также те вопросы, которые меня спрашивали джуны на работе, дабы показать их вам.
Данная статья будет интересна тем, кто хочет устроиться на работу. Она также поможет тем, кто не уверен в своих знаниях и хочет проверить себя. Опытные разработчики возможно найдут для себя пару интересных вещей, новички же соберут уйму информации для обдумывания. Ну, что ж начнём.
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];
Какие из данных методов меняют массив, а не возвращают новый:
Из всех методов прототипа 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.createElement('div', { style: { color: 'red' } }, 'title="block"')
Показать ответ
<div style="color: red;">title="block"</div>
Расскажите последовательность методов, которая происходит при монтировании компонента?
Ответ
Показать ответ
Ответ
const opts = {foo: 'a', bar: 'b'};
// .....
<Component {...opts}/>
Данная статья будет интересна тем, кто хочет устроиться на работу. Она также поможет тем, кто не уверен в своих знаниях и хочет проверить себя. Опытные разработчики возможно найдут для себя пару интересных вещей, новички же соберут уйму информации для обдумывания. Ну, что ж начнём.
Базовый 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>
Расскажите последовательность методов, которая происходит при монтировании компонента?
Ответ
- constructor()
- static getDerivedStateFromProps()
- render()
- componentDidMount()
Показать ответ
- getDerivedStateFromProps()
- shouldComponentUpdate()
- render()
- getSnapshotBeforeUpdate()
- componentDidUpdate()
Ответ
const opts = {foo: 'a', bar: 'b'};
// .....
<Component {...opts}/>
Вопросы из собеседований и бесед с джунами
Мой опыт работы показывает, что вопросы на собеседованиях кардинально отличаются из собеседования к собеседованию. Я собрал все те вопросы, которые проходил на собеседованиях в течении двух лет, а...
habr.com