bad_test

module
v0.0.0-...-36bd7b3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2024 License: MIT

README

bad_test

Завдання для програми Become a Developer

Завдання - знайти наступні чотири/шість значень:
  1. максимальне число в файлі;
  2. мінімальне число в файлі;
  3. медіану ( https://goo.gl/hiCwVw );
  4. середнє арифметичне значення ( https://goo.gl/XJeAjZ );
  5. найбільшу послідовність чисел (які ідуть один за одним), яка збільшується (опціонально)
  6. найбільшу послідовність чисел (які ідуть один за одним), яка зменьшується (опціонально)

Запропонований метод рішення повинен знаходити всі чотири/шість величин з файлу не більше ніж за 90 секунд.

Обмеження #1:

Будь-яка людина повинна мати можливість скористатися вашим методом. Це означає, наприклад, якщо для вирішення завдання Ви використовували свою власну програму, то будь-яка інша людина повинна мати можливість її скомпілювати/запустити і т.д.; якщо Ви використовували сторонні програми/утиліти, то будь-яка людина повинна мати можливість їх також встановити та користуватися; також будь-яка людина може взяти зовсім інший файл з іншим набором цілих чисел і знайти всі чотири вказані величини;

Обмеження #2:

при вирішенні задачі не можна використовувати нелегальне програмне забезпечення (пропрієтарне ПЗ, яке зазнало злому, піратські копії ПЗ, тощо). Також якщо ви запозичили ідею рішення, ПЗ або вихідні джерела (або якусь їх частину) у друга/колеги/в інтернеті/де-завгодно, то згадайте джерело.

РІШЕННЯ:

Рішення виглядає як API, що має лише один ендпоінт. Можна завантажити .txt файл, розміром до 100мб. Сервіс зчитає всі цілі числа з файлу та видасть відповіді разом з часом виконаня у вигляді JSON.

Сервіс задеплоїний у тестовий продакшн, тож він відповідає вимозі Обмеження #2 стосовно того що будь-хто має можливість скористатися методом. Для того щоб протестувати, перейдіть за посиланням: https://bad-test.foradmin.pp.ua Код сервісу пожна подивитись за посиланням: https://github.com/markraiter/bad_test

Для вирішення завдання використовується мова програмування Go (Golang), яка має потужний інструмент управління конкурентністю завдяки горутинам. Цей код використовує горутини для обчислення максимального та мінімального значень, медіани та суми чисел одночасно, що дозволяє використовувати конкурентність для прискорення обчислень. Також використовується оптимальний алгоритм для пошуку медіани та обчислення суми чисел. Завдяки цьому, файл, який запропоновано в завданні (https://drive.google.com/file/d/1LxSB6UEAVK0NLgU0ah5y0CBbD0gL_oO9/) обробляється за 4,9 секунд.

Directories

Path Synopsis
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL