Мой опыт работы показывает, что вопросы на собеседованиях кардинально отличаются из собеседования к собеседованию. Я собрал все те вопросы, которые проходил на собеседованиях в течении двух лет, а также те вопросы, которые меня спрашивали джуны на работе, дабы показать их вам.
Данная статья будет интересна тем, кто хочет устроиться на работу. Она также поможет тем, кто не уверен в своих знаниях и хочет проверить себя. Опытные разработчики возможно найдут для себя пару интересных вещей, новички же соберут уйму информации для обдумывания. Ну, что ж начнём.
Базовый 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];
Длина массива будет 5, так как вместо первого элемента будет просто пустота, но длина не поменяется.
Более подробно о delete
тут.
Какие из данных методов меняют массив, а не возвращают новый:
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()
Как развернуть spread
оператор для того чтобы все элементы из объекта перешли в пропсы?
Ответ
const opts = {foo: 'a', bar: 'b'};
// .....
<Component {...opts}/>
Если вам было интересно почитать про то, на какие именно вопросы на собеседованиях отвечал я, то вы можете подписаться на мой телеграм канал, там такого материала предостаточно.
Некоторые вопросы кажутся мучением, однако, работодатели есть работодатели. Я бы, естественно, задавал вопросы связанные непосредственно с работой, а не гонял бы по знаниям закоулков языка. Спасибо за то, что дочитали данную статью, надеюсь было интересно и вы немного поломали голову, как и я когда-то на собеседованиях. Хорошего дня и продуктивной недели!
Комментарии (14)
AndreyMyagkov
30.09.2021 11:33+15Вопросы по JS не имеют ничего общего с реальными задачами в жизни, и скорее нацелены на унижение кандидата и, соответственно, самоутверждение интервьюера.
Да, эта муть встречается на собеседованиях и к таким вопросам можно подготовиться за 1 день, пройти собес. А дальше что? Человек не пройдет испытательный срок, т.к. не умеет решать задачи.daniil-dev Автор
30.09.2021 11:59-3Данные вопросы нужны для того чтобы понять знает ли кандидат язык, не более, к задачам они действительно не имеют никакого отношения. Я просто поделился тем, что меня спрашивали, сам бы я такую муть не спрашивал)
MarkFish
30.09.2021 13:40+2Вопросы, которые меня спрашивали ... другие джуны
Простите, а зачем спрашивать про то, что можно вбить в редакторе кода и самостоятельно получить ответ?
daniil-dev Автор
30.09.2021 14:03-1Тот же вопрос про массивы `[] === []` без определенных знаний не понять. + На собеседованиях зачастую проверяют знания языка, а не умение гуглить (хотя и тот и тот навык нужен)
AGrinko
30.09.2021 13:58+4Кто-нибудь уже прокомментировал заголовок статьи? Возьму это на себя :)
Чуть три раза голову не сломал, пока понял суть заголовка. Вас спрашивали вопросы? Вопросы и другие джуны? Другие джуны на собеседованиях? Джуны уже проводят собеседования? x_x
Чтоб не быть совсем деструктивным, предложу пару альтернативных вариантов:
Вопросы, которые мне задавали интервьюеры и коллеги
Вопросы интервьюеров и джуниоров
Вопросы на собеседованиях и в реальной работе
Вопросы бывших, настоящих и потенциальных коллег
kilexx
30.09.2021 14:01+1Не хочу обидеть. Очень режет слух "Вопросы, которые меня спрашивали...". Наверное лучше использовать "Вопросы, которые мне задавали ..."
daniil-dev Автор
30.09.2021 14:02Да, так действительно лучше, исправил)
AGrinko
30.09.2021 18:14Всё равно некорректно: "... задавали на собеседовании и другие джуны". Ну не строятся так предложения в русском языке. "Задавали рекрутеры и другие джуны" - вот так валидно.
muturgan
30.09.2021 19:46+8Да ты не понимаешь специфики. Люди, которые привыкли разбирать выражения вида console.log(+ '3' - true + '1') только так предложения и строят ;)
Alexandroppolus
30.09.2021 17:29+1Вопросы довольно скучные. Какого хрена я должен знать, как там в этом их немецком языке выглядит карренси??
Особенно рассмешил криво поставленный вопрос "Какие из данных методов меняют массив, а не возвращают новый". Сплайс тоже возвращает новый массив. Лол, кек.
interprise
Второй вопрос, мне кажется очень странным "
Intl - конструктор чисел, который зависит от языка
", значит подразумевается, что я знаю как он работает именно для DE? и зачем мне эти знания? Да и задачи про сложение строк, чисел и булевых значений ну такое.OFFTOP В статье в блоке про
stringify
ссылка не работает.unibasil
Поддерживаю, даже для русской локали нельзя сходу уверенно сказать, как будет отформатирован ответ — будет там знак ₽ или "руб", а уж про иностранные вообще что-то из области метазнаний.