Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тестовое задание Yandex (https://javascript.ru/forum/offtopic/18474-testovoe-zadanie-yandex.html)

mycoding 02.07.2011 16:51

Тестовое задание Yandex
 
Был несколько месяцев назад в Yandex.
Думал летом поработать там, а потом если бы устроил то остаться на постоянку.
К сожалению ритм в Москве очень сложный и побыв 3 дня там понял, что жить я не смогу в столице.
Прийдя на собеседование мне сказали, что на удаленку не берут, хотя вроде были готовы взять офисным сотрудником.

Хочу показать тестовое задание, которое мне дали.
Чтобы те, кто хочет работать в Yandex проверили свои силы и возможно устроились в эту классную компанию.

Итак тестовое задание
http://vreshenie.ru/Trip_Sorter.doc

Теперь как сделал я.
Ниже я опишу, что сделано не так и свои комментарии
http://vreshenie.ru/done.html
Код думаю все смогут просмотреть)))

Итак:
1 - Я сделал для наглядности генерацию карточек, чего делать не надо было.
2 - По поводу сортировки и в каком формате должны быть карточки.
Карточки должны выглядеть так
{
"Города 1":{
параметры
},
"Город 2":{
параметры
}
}
У меня в коде по другому.
Почему именно так.
Предположим у нас есть массив, и надо найти индекс массива, у которого у одного из объектов имеется параметр с тем или иным значением.
Если это делать через for(), то времени уйдет очень много.
Если же это делать обращаясь к свойству объекта, то выполниться моментально.
Пример
var o = {};
for(var i=0;i<1000000;i++){
	o[i] = (function(i){
		return function(){
			console.log(i);
		};
	})(i);
}

var t1 = new Date().getTime();
o[900000]();
var t2 = new Date().getTime();
console.log(t2-t1);

3 - В коде я использую arguments.callee. Если не ошибаюсь, Илья Кантор говорил, что в EcmaScript 5 этого свойства нет.
Также если не ошибаюсь, мне говорили, что при вызове рекурсивной функции через arguments.callee, затрачивается ресурсов в два раза больше, чем при вызове внешней функции.
Как то так.
В любом случае arguments.callee - использовать не следует.
4 - В программе есть баг при генерации карточек.
Но так как это не требовалось, то решил не исправлять.
Баг в том, что у одинакового вида транспорта одинаковый рейс и все параметры.


Надеюсь кому-нибудь пригодится.
Удачи.

DrStrangelove 02.07.2011 17:17

Посмотри тут
пример..

Похоже Яндекс позаимствовал тест. задание у кого-то...

А что там с темпом?? Яндекс заставляет работать круглосуточно??

monolithed 02.07.2011 17:48

DrStrangelove, если не секрет, как это вы с ходу нашли это задание?

PS: вообще задание простое, но весьма интересное с точки зрения его реализации разработчиками. Я бы к примеру, вообще по другому все сделал. Этим оно и интересно

mycoding 02.07.2011 18:15

Цитата:

Сообщение от DrStrangelove (Сообщение 111477)
Посмотри тут
пример..

Похоже Яндекс позаимствовал тест. задание у кого-то...

А что там с темпом?? Яндекс заставляет работать круглосуточно??

С темпом не знаю как.
Я там не работал.
Лишь был на собеседовании.
Очень понравился офис.
Понравилось, что можно на стенах маркером писать - удобно.
А еще очень приятно было разговаривать с Федором Голубевым - очень позитивный человек :)

mycoding 02.07.2011 18:27

Цитата:

Сообщение от monolithed (Сообщение 111480)
PS: вообще задание простое, но весьма интересное с точки зрения его реализации разработчиками. Я бы к примеру, вообще по другому все сделал. Этим оно и интересно

Можете привести пример задания по сложнее.
Хочется себя проверить :)

А как бы Вы сделали?

DrStrangelove 02.07.2011 18:50

Цитата:

Сообщение от monolithed (Сообщение 111480)
DrStrangelove, если не секрет, как это вы с ходу нашли это задание?

PS: вообще задание простое, но весьма интересное с точки зрения его реализации разработчиками. Я бы к примеру, вообще по другому все сделал. Этим оно и интересно

Сейчас только достал ссылку из закладок..
Нашёл давно, когда только увидел это тест. задание в вакансиях Яндекса-
стало интересно как сортировать объекты, и в Гугле как-то всплыла эта ссылка..

DrStrangelove 02.07.2011 19:03

Цитата:

Сообщение от mycoding (Сообщение 111483)
С темпом не знаю как.
Я там не работал.
Лишь был на собеседовании.
Очень понравился офис.
Понравилось, что можно на стенах маркером писать - удобно.
А еще очень приятно было разговаривать с Федором Голубевым - очень позитивный человек :)

А как вообще проходит собеседование??
Проверяют дипломы??
Требуют высшее образование?? обязательно профильное программерское??
или просто высшее?? В объявлениях о вакансии часто не пишут о в/о, в основном об опыте..
А как на самом деле, на собеседовании??

mycoding 02.07.2011 19:09

Цитата:

Сообщение от DrStrangelove (Сообщение 111491)
А как вообще проходит собеседование??
Проверяют дипломы??
Требуют высшее образование?? обязательно профильное программерское??
или просто высшее?? В объявлениях о вакансии часто не пишут о в/о, в основном об опыте..
А как на самом деле, на собеседовании??

Про ВО ни разу не спросили.
Хотя в вакансиях пишут, что желательно.

Вообще, если есть знания и без ВО можно работать.
Например V~Vladi вроде без ВО, а работает в очень серьезной фирме :)

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

Все профессиональные знания получаются на работе в реальных условиях бизнеса. Либо самим человеком при чтении книг, блогов и прочего.

Про собеседование:
Я общался с Федором Голубевым и еще одним человеком.
Вопросы были вроде тех, что вот здесь
http://company.yandex.ru/job/vacanci..._developer.xml
http://company.yandex.ru/job/vacanci...dia_search.xml

Мне на собеседовании очень понравилось)))
Длилось где-то два часа.

Я не помню уже всего о чем спрашивали.
Вот что запомнилось
1 - Что такое JSONP
2 - Реализации ООП в js(примеры)
3 - Про замыкания, классический пример с массивом
Больше ничего не запомнилось)))

Собеседование проходило в кабинете с надписью "Пятая колонна"
Было очень дружелюбно.
На прощанье дали папочку с надписью "Яндекс")))

tenshi 02.07.2011 19:55

> Карточки должны выглядеть так

не должны. для ускорения выборок лучше создать отдельный индекс как в реляционных субд. нет ничего хуже, чем внутренняя оптимизация зашитая во внешний апи.

> В любом случае arguments.callee - использовать не следует.

почему? не вижу ни одного веского аргумента. аналогичная ситуация с with.

mycoding 02.07.2011 20:06

Цитата:

Сообщение от tenshi (Сообщение 111498)
не должны. для ускорения выборок лучше создать отдельный индекс как в реляционных субд. нет ничего хуже, чем внутренняя оптимизация зашитая во внешний апи.

Можете по подробней?


Часовой пояс GMT +3, время: 02:33.