Был несколько месяцев назад в 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 - В программе есть баг при генерации карточек.
Но так как это не требовалось, то решил не исправлять.
Баг в том, что у одинакового вида транспорта одинаковый рейс и все параметры.
Надеюсь кому-нибудь пригодится.
Удачи.