Тестовые задачи для летней стажировки 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.
Алгоритмические задачи
-
Сумма последовательности
11 + 22 + 33 + ... + 1010
равна 10405071317. Найдите последние 10 цифр суммы последовательности
11 + 22 + 33 + ... + 10001000
-
Ряд Фибоначчи задаётся рекуррентным соотношением:
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 = 14412-й член ряда, F12, — это первый член, в десятичной записи которого три цифры.
Каков индекс первого члена ряда Фибоначчи, в десятичной записи которого 1000 цифр?
-
Факториал 10 равен
10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
а сумма цифр десятичной записи числа равна
3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.
Найдите сумму цифр десятичной записи числа
100!
-
215 = 32768, а сумма цифр числа равна
3 + 2 + 7 + 6 + 8 = 26.
Какова сумма цифр десятичной записи числа 21000?
-
Последовательность натуральных чисел задаётся следующими правилами:
n → n/2, если n чётно;
n → 3n + 1, если n нечётно.Используя их и выбирая 13 в качестве первого члена, получаем последовательность:
13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
Видно, что эта последовательность конечна и содержит ровно 10 членов. Хотя это до сих пор и не доказано (см. гипотеза Коллатца), предполагается, что, вне зависимости от выбора первого члена, все подобные последовательности конечны и последним своим членом имеют единицу.
Если потребовать, чтобы первый член последовательности был строго меньше 1000000, то при каком выборе первого члена последовательность будет иметь наибольшую длину?
Примечание: ограничение распространяется только на первый член; значения последующих членов могут превышать один миллион.
Задачи на владение инструментами
-
Создайте простейший проект на 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/NikitaBratukhin/task1
https://bitbucket.org/NikitaBratukhin/task2
https://bitbucket.org/NikitaBratukhin/task3
https://bitbucket.org/NikitaBratukhin/task4
https://bitbucket.org/NikitaBratukhin/task5
https://bitbucket.org/NikitaBratukhin/autotools
Здравствуйте, вот репозитории с решениями
https://bitbucket.org/tavplubix/jb-algorithmical-tasks
https://bitbucket.org/tavplubix/jb-jni-task
Здравствуйте, с небольшим опозданием
https://bitbucket.org/evgerher/jetbrains
Друзья,
спасибо всем вам за участие,
и ждём вас снова в 2018 году.