Сказ о том, как я в Яндекс не прошёл

Обзор собеседования в Яндекс
19 ноября, 2013
1 минута чтения

Если контент не отображается, включите VPN.

yandex 1920
Собеседование в Яндекс

Я искал новую работу. Обновил профиль на hh. И вдруг, через неделю, меня пригласили в яндекс! На вакансию разработчик интерфейсов внутренних сервисов.

Требования мне подходили, единственное разочарование было в знании XSLT. Поговорив с hr, узнал что должность касается разработки админки на шаблонизаторе-велосипеде от яндекса. Что же, подумал я, минус большой, но терпимый. Серьёзная контора, интересные задачи. Что же, вполне возможно меня возьмут под свое уютное гнездышко!

Получив ссыль на задание, я приступил выполнять его через неделю. Да, у меня были дела поважнее 😉
1.Напишите функцию, принимающую в качестве аргумента массив числовых значений и возвращающую уникальные элементы этого массива.
Хм. Подумал я, садясь за Dev-tools. Написал обычную функцию, ничего лишнего.

function uniq(){
  var c=[],
  e,
  d,
  b = this.length;

  for( e = 0; e < b; e++ ) {
    for( d = e + 1; d < b; d++ ) {
      if( this[e] === this[d] ) {
        d =++ e;
      }
    }
    c.push( this[e] );
  }
  return c
}

Итог. Я не сделал ограничение на вхождение числовых значений, т.е. в массив можно добавить также любые другие типы, включая строки. Первый фейл.

2. Изменится ли внешняя переменная someFlag? Объясните результат.

var someFlag = 0;
function foo() {
  if (true) {
    someFlag = 1;
  } else {
    var someFlag = -1;
  }
  return someFlag;
}
foo();

Итог. Вот это ЭПИК Фейл! Вообще не думая, я тупо копирнул код в консоль, получив в итоге ответ 1. Всякое бывает.

3. Напишите функцию перемножения чисел, которая вызывается следующим образом: multiply(a)(b).

Придя в мир web-dev’a от десктопных C# проектов, я сначала подумал, что это будет очень сложно. Сразу вспоминались делегаты и пр. К счастью, js это ещё и функциональный язык и я вовремя вспомнил что в нём можно возвращать результат в виде функции.

function multyply(a) {
  return function temp(b) {
    return a * b;
  }
}

Итог. Вот это по-настоящему задание мне понравилось. Но как видно, я опять забыл добавить проверку на число. Фейл.

4. Какие способы передачи данных без перезагрузки страницы вы знаете?
Для меня знакомы лишь 3 технологии: ajax, websocket, webrtc. Но чтение документации socket.io показало мне еще пару-тройку устаревших механизмов, вроде long-pooling и comet.

5. Задание для верстальщиков
Это самое сложное задание. Здесь без Photoshop’a никуда. Откуда ещё копировать CSS-ый код?

5.1. Сверстайте контрол оценки и показа рейтинга
http://jsfiddle.net/hr8wK/

Итог. Нет обработки кликов на js, семантически неверная разметка.

5.2. Сверстайте прогресс-бар
http://jsfiddle.net/rCSBu/3
Итог. Пытаясь добавить все префиксы браузеров я забыл добавить w3c свойство!

5.3. Сверстайте кнопку
http://jsfiddle.net/CJmhU/1
Итог. Нет EventListener’a.

5.4. Сверстайте список из иконок
Тут нет нареканий

5.5. Сверстайте текст
http://jsfiddle.net/r3VkB/2

Итог.  Еле победил свой перфекционизм. Сверстал через таблицы. Кое-где выбрал неправильный полуторный пробел.

Общий итог: Epic fail. 

От себя добавлю — никогда не публикуйте свои задания в 12 часов вечера! Подождите до середины дня. Покажите код своему знакомому прогеру, или скиньте на форум — пускай поругают. Не торопитесь и все будет ок. Читайте-перечитывайте задания. Делайте чуть больше написанного. И тогда вас возьмут. Наверное…

Денис Сергеевич Басковский

Философ, изобретатель и поэт.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
blender
Предыдущая статья

Моя первая работа в Blender

Release APK
Следующая статья

Подписываем Release APK для Cordova