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

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

Разработчик поиска (Москва, Екатеринбург)

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

В то же время поисковый кластер Яндекса является одной из самых сложных и масштабных IT-систем в России. Сегодня он состоит из нескольких тысяч серверов, которые обрабатывают миллионы запросов в день, обходят рунет несколько раз в неделю и хранят терабайты информации.

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

Требования:

  • хорошее знание C++;

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

  • опыт разработки параллельных/многопоточных приложений;

  • ответственность и аккуратность, умение тестировать собственный код (вместе с пониманием того, что мы пишем проекты, работающие в режиме 24x7x365).

Желательно (если вы этого не знаете, ничего страшного, но готовьтесь все это быстро изучить):

  • опыт разработки под Unix;

  • знание скриптовых языков Perl, Shell, AWK и Python.

Условия

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

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

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

     



    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))?


    Есть приложение, написанное на 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 кода. Аргументируйте преимущество вашего кода над существующим.


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

     
    Пожалуйста, укажите, где вы живёте

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

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

     

     

    ещё

    Исследования Яндекса

    ещё

    Картинки и цифры про интернет

    ещё

    Темы для главной страницы

    ещё

    Яндекс в Твиттере

    ещё

    Прямой эфир

    Для просмотра видео установите проигрыватель Adobe Flash Player.

    ещё

    Офис

    ещё

    Видеоролики

    Для просмотра видео необходима включить поддержку Javascript.

    Для просмотра видео установите проигрыватель Adobe Flash Player.

    ещё

    Технологии

    Индексирование интернета

    Поиск в интернете состоит из двух частей. Первая — поисковик обходит интернет, создавая его слепок на своих серверах. Вторая — пользователь задаёт запрос и получает ответ с серверов поисковика.

    in EnglishTürkçe