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

Разработчик сервиса Яндекс.Карты (С++)

Требуется программист в группу разработки картографических сервисов. У вас есть отличная возможность поучаствовать в развитии географического поиска и картографического движка.

Требования

  • опыт промышленной разработки на C++;

  • опыт работы с MySQL или другими реляционными СУБД;

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

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

  • опыт работы в команде.

Желательно

  • опыт использования XML, Boost, CORBA.

Приветствуются

  • опыт создания кросс-платформенных приложений;

  • опыт разработки сервисов, работающих под большой нагрузкой (24×7);

  • умение разбираться в чужих реализациях;

  • привычка писать документацию.

Условия

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

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

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

Вопрос 1


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;
}                      

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

 

Вопрос 2

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

Аргументируйте ответ, прокомментируйте правильность постановки вопроса.

Вопрос 3

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

 

Вопрос 4

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

 

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

Резюме до 250 КБ
Ссылка на профиль в Моем Круге
Имя, Фамилия
Телефон

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

E-mail
Дополнительные сведения
если Вы узнали про эту вакансию от сотрудника Яндекса, пожалуйста, укажите его имя и фамилию