ПоискПочтаКартыМаркетНовостиСловариБлогиВидеоКартинки
Войти

Работа в Яндексе

Разработчик индексатора Маркета

Яндекс.Маркет — это сервис, который помогает выбрать товар и решить, где его купить. Каждый месяц почти миллион человек пользуется Маркетом, чтобы найти нужный товар. Сервис постоянно развивается — добавляются новые возможности, облегчающие процесс выбора товара и места покупки.

Вы будете разрабатывать индексатор Маркета — систему подготовки данных для нашего поискового кластера, которая работает в режиме 24x7. Большие объемы данных, распределенные/параллельные процессы их обработки, надежность и масштабируемость индексации — вот лишь часть того, чем вы сможете заниматься.

Требования

  • Хорошее знание С++;

  • знание базовых алгоритмов и структур данных;

  • опыт многопоточного программирования;

  • ответственность;

  • способность создать надёжную систему.

Желательно

  • Знание Perl, Python, CORBA;

  • опыт разработки под unix/linux;

  • опыт руководства.

Условия

    Работа в офисе Яндекса в Москве полный рабочий день, динамичный и дружный коллектив.

    Подробнее об условиях работы в Яндексе

    Продемонстрируйте свои знания

     
    
    class Foo
    {
    public:
        Foo(int j) { i=new int[j]; }
        ~Foo() { delete i; }
    private:
        int* i;
    };
    
    class Bar: Foo
    {
    public:
        Bar(int j) { i=new char[j]; }
        ~Bar() { delete i; }
    private:
        char* i;
    };
    
    
    void main()
    {
        Foo* f=new Foo(100);
        Foo* b=new Bar(200);
        *f=*b;
        delete f;
        delete b;
    }                      
    

    Перечислите все проблемы, которые вы видите в данном коде:


    Какие из следующих стандартных контейнеров позволяют найти в них элемент (по его значению) за O(ln(n))?


    Базы данных/SQL.

    Вам нужно создать в MySQL таблицу со следующей структурой

    CREATE TABLE `URL_IDS` (
    `ID` INTEGER(11) NOT NULL AUTO_INCREMENT,
    `PICTURE_ID` INTEGER(11) NOT NULL UNIQUE,
    `URL` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`ID`, `URL`))TYPE=MyISAM ;
    
    
    

    и быстро вставить в нее 100M записей из файла.

    Опишите, как бы вы стали реализовывать эту задачу.


    Есть приложение, написанное на C++ под Linux, производительность которого необходимо серьезно улучшить. Расскажите, как можно найти его «узкие места» и какие инструменты вы станете для этого использовать.

    Есть класс CodeGenerator, который умеет генерить код на разных языках.

    
    class CodeGenerator
    {
    public:
        enum Lang {JAVA, C_PLUS_PLUS, PHP};
        CodeGenerator(Lang language) { _language=language; }
        std::string generateCode()
        {
            switch(_language) {
            case JAVA:        //return generated java code
            case C_PLUS_PLUS: //return generated C++ code
            case PHP:         //return generated PHP code
            }
            throw new std::logic_error("Bad language");
        }
        std::string someCodeRelatedThing() // used in generateCode()
        {
            switch(_language) {
            case JAVA:        //return generated java-related stuff
            case C_PLUS_PLUS: //return generated C++-related stuff
            case PHP:         //return generated PHP-related stuff
            }
            throw new std::logic_error("Bad language");
        }
    
    private:
        Lang _language;
    }
    						
    

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


    Расскажите нам о себе

     

    Пожалуйста, укажите код города

     
    ОтправитьОчистить

     

     

    Мы постоянно растем и ищем талантливых людей

    У нас хорошая компания не только для обсуждения работы

    Коротко о Яндексе

    Все, что вы хотели бы знать о компании перед тем, как идти к нам работать

    Стажировка

    В результате вы сможете узнать Яндекс изнутри и, если вам понравится, устроиться на постоянную работу

    Памятка

    Кто такой менеджер проектов Яндекса и как им стать

     

    Если вы опытный специалист и хотели бы работать в Яндексе, но не нашли для себя подходящей вакансии, не отчаивайтесь, а напишите нам. Вдруг мы договоримся?

    ruRu