unix-junkie/teamcity-autotools-plugin

Тестовые задачи для летней стажировки JetBrains 2017

Closed this issue · 12 comments

Решения всех алгоритмических задач (т. е. всех, кроме последней) должны быть выполнены на любом из языков, поддерживаемых JVM (Java, Scala, Kotlin, Groovy, Clojure и т. д.) без использования сторонних библиотек (кроме runtime-библиотеки выбранного Вами языка) и собираться любым из стандартных инструментов (Gradle, Maven, SBT, Leiningen), т. е. в корневом каталоге каждого решения должен присутствовать соотв. файл для сборки (pom.xml, build.gradle).

Также должен быть предусмотрен простой запуск решения (напр., в случае Maven, посредством mvn exec:java).

В качестве альтернативы, решение может быть выполнено на C или C++ с использованием одной лишь стандартной библиотеки, при этом обязательно наличие Makefile'а или интеграция с любой стандартной системой сборки (CMake, Autotools, SCons). Решение должно собираться GCC и/или LLVM.

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

3.1415926

а не

Pi=3.1415926

Код каждого из решений может быть оформлен как закрытый Git-репозиторий на bitbucket.org с правами на чтение для пользователя bass.

Алгоритмические задачи

  1. Сумма последовательности

    11 + 22 + 33 + ... + 1010

    равна 10405071317. Найдите последние 10 цифр суммы последовательности

    11 + 22 + 33 + ... + 10001000

  2. Ряд Фибоначчи задаётся рекуррентным соотношением:

    Fn = Fn−1 + Fn−2, где F1 = 1 и F2 = 1.

    Следовательно, первыми 12-ю членами ряда будут:

    F1 = 1
    F2 = 1
    F3 = 2
    F4 = 3
    F5 = 5
    F6 = 8
    F7 = 13
    F8 = 21
    F9 = 34
    F10 = 55
    F11 = 89
    F12 = 144

    12-й член ряда, F12, — это первый член, в десятичной записи которого три цифры.

    Каков индекс первого члена ряда Фибоначчи, в десятичной записи которого 1000 цифр?

  3. Факториал 10 равен

    10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,

    а сумма цифр десятичной записи числа равна

    3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

    Найдите сумму цифр десятичной записи числа 100!

  4. 215 = 32768, а сумма цифр числа равна

    3 + 2 + 7 + 6 + 8 = 26.

    Какова сумма цифр десятичной записи числа 21000?

  5. Последовательность натуральных чисел задаётся следующими правилами:

    n → n/2, если n чётно;
    n → 3n + 1, если n нечётно.

    Используя их и выбирая 13 в качестве первого члена, получаем последовательность:

    13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

    Видно, что эта последовательность конечна и содержит ровно 10 членов. Хотя это до сих пор и не доказано (см. гипотеза Коллатца), предполагается, что, вне зависимости от выбора первого члена, все подобные последовательности конечны и последним своим членом имеют единицу.

    Если потребовать, чтобы первый член последовательности был строго меньше 1000000, то при каком выборе первого члена последовательность будет иметь наибольшую длину?

    Примечание: ограничение распространяется только на первый член; значения последующих членов могут превышать один миллион.

Задачи на владение инструментами

  1. Создайте простейший проект на C или C++ (GCC, Autotools) с реализацией native-метода Java посредством JNI (в виде разделяемой библиотеки — *.so).

    Требования:

    • Сценарий configure должен находить (если java в переменной PATH или определена переменная JAVA_HOME) хедер jni.h и библиотеку libjvm.so, создавая Makefile с корректными CFLAGS и LDFLAGS.
    • Сценарий configure должен принимать аргумент --with-java-home=..., позволяющий указать каталог установки JDK явно.
    • Если установка JDK не обнаружена, сценарий configure должен выводить понятное сообщение об ошибке.
    • Реализация native-метода Java должна просто бросать (произвольное, на Ваш выбор) Java-исключение с непустым сообщением.
    • Хедер-файл, соответствующий Java-классу (com_example_SomeClass.h) должен автоматически создаваться из Java-класса (утилитой javah). Сгенерированный Makefile должен содержать необходимые инструкции.

Здравствуйте.

Мой закрытый репозиторий с решениями достпуен Вам с правами на чтение.

Пожалуйста, дайте мне знать если чего-то не хватает или если что-то нужно переделать. Я с радостью займусь этим.

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

Можете так же писать сюда:

    Telegram: telegram.me/Sammers21
    Email: titantins@gmail.com

@lberserq Камиль, спасибо, принято. Я обязательно проверю и отвечу.

Добрый вечер.
Выложил все задания с правами чтения для bass.
https://YorovSobir@bitbucket.org/YorovSobir/internship.git

Здравствуйте,

У меня репозитории на GItHub с доступом для unix-junkie, это нормально?
Если нужно, могу залить на Bitbucket.

https://github.com/PersDep/JetBrainsTask1
https://github.com/PersDep/JetBrainsTask2
https://github.com/PersDep/JetBrainsTask3
https://github.com/PersDep/JetBrainsTask4
https://github.com/PersDep/JetBrainsTask5
https://github.com/PersDep/JetBrainsInstrumentTask

Telegram: telegram.me/SBBMos

@YorovSobir: Собир, здравствуйте.
Спасибо.
Доступ есть.
Проверю.

@PersDep Илья, спасибо, доступ есть.

Здравствуйте, вот репозитории с решениями
https://bitbucket.org/tavplubix/jb-algorithmical-tasks
https://bitbucket.org/tavplubix/jb-jni-task

Здравствуйте, с небольшим опозданием
https://bitbucket.org/evgerher/jetbrains

Друзья,

спасибо всем вам за участие,
и ждём вас снова в 2018 году.