Неделя собеседований на Хабре прошла, но я решил добить ещё живого уважаемого читателя статьёй, в которой поделюсь некоторыми заданиями, которые мне давали на собеседованиях работодатели в течение последнего месяца (среди них — Яндекс, Topface, ITMozg, парочка весьма интересных и пара довольно мутных стартапов).
Разумеется, у вас не получится успешно пройти собеседование, просто заучив ответы на эти вопросы. Ответ на каждый вопрос будет необходимо пояснить, иногда — очень подробно. Многие вопросы будут ещё дополнены собеседующими. Я прошу рассматривать эти вопросы как некоторую «планку», которой необходимо самостоятельно достичь, чтобы стать Junior'ом в хорошей компании.
Собственно, сами задания
1
Представьте, что у нас есть квадратное поле-сетка, по которому ходит бродяга.
Напишите объект «Бродяга», содержащий его координаты и четыре метода, реализующих шаг бродяги вверх, вниз, вправо и влево.
Как реализовать в таком объекте цепочку вида:
vagabond.goUp().goLeft().goDown().goDown().goRight();
2
Имеется массив произвольной длины, заполненный случайными значениями:
var list = [34, 1, 529, -78, 89.7, 1243];
необходимо найти значение максимального элемента.
3
Необходимо отправить на сервер набор данных без перезагрузки страницы. Перечислите способы сделать это, назовите самый кроссбраузерный.
4
В чем разница между уткой ==
и ===
?
5
Что такое Local Storage, Cookies и Session Storage? В чем разница между ними?
6
@media only screen and (max-width: 1200px) {
}
Что это за конструкция? Зачем она может понадобиться?
7
Чем в Git отличаются merge
и rebase
?
8
Дано:
var a = new F();
var b = new F();
alert(a == b);
function F() {}
Сделать так, чтобы a == b
возвращало true
.
9
Напишите результаты выполнения операций:
"1" + 2;
1 + "2";
null == undefined;
null == 0;
null > 0;
null >= 0;
"a" > "A";
10
Дано:
var list = [1, 2, 3, 4, 5, 6];
function sum() {
var sum = 0;
for (i=0; i<arguments.length; i++) {
sum += arguments[i];
}
}
Подсчитать с помощью функции sum
сумму элементов list
.
11
Представьте большую и сложную страницу, которая очень медленно загружается. Допустим, на ней плохо всё. Ваша задача — оптимизировать время загрузки. Ваши действия?
Заключение
Практически все задания нужно было выполнить устно или в старой доброй IDE «Paper & Pencil». Безбажного кода никто не требовал. Тех, что поадекватнее, в первую очередь, интересовал ход мысли, а не знание тонкостей технологии. Но, естественно, уровень знаний HTML, JS и CSS тоже имеет значение (а вы как хотели). Собеседования в некоторых случаях больше напоминают экзамен с хорошими преподавателями (так было в ITMozg и в Topface), в некоторых — приятную дружескую беседу с чаепитием (Яндекс, Radario), а в некоторых — вообще чёрт знает что (не буду называть компании, к тому же, они малоизвестны).
Если кому-нибудь из читателей после прочтения придёт в голову мысль «Оказывается, на собеседованиях даже в самые крутые компании бояться нечего. Работа в Яндексе и Топфэйсе — это вполне досягаемо», значит, я писал это не зря.
Спасибо за внимание. Всем удачи.
Автор: oshibka404
Надо же, третий месяц интенсивно изучаю веб с нуля и уже могу ответить на 9/11 вопросов :)