TGViewer
ANDROID SCHOOL.RU - Android на практике ANDROID SCHOOL.RU - Android на практике @android_school_ru · 943 subscribers
Post #361 1.01K
​​Вы не сможете сделать это тестовое задание… если не знакомы с теорией графов.

В этом посте (еще один пост про курс доллара😁) хочу поделиться с вами одним реальным тестовым заданием, которое без знаний теории графов выполнить не получится.

Если кратко, то задача звучит так: необходимо реализовать Android-приложение для конвертирования валют. Данные о курсах валют предоставляются в json-файле. Что может пойти не так? При этом тут стоит задуматься о нескольких моментах:

1) Когда есть несколько вариантов конвертации, лучше минимизировать количество конвертаций и сократить расходы. Вы можете представить, как работает обмен валют в реальном мире: чем больше промежуточных конвертаций вы делаете, тем больше денег теряете за каждую транзакцию. Например если известен курс USD -> GBP то лучше использовать его вместо USD -> EUR -> GBP
2) Если есть выбор, вы, вероятно, предпочтете более выгодные курсы вместо более дорогих, чтобы максимизировать прибыль.

И тут нам на помощь могут придти знания о графах. По сути, задача сводится к поиску оптимального пути конвертации: использование алгоритма для поиска оптимального пути конвертации между валютами с учетом обменных курсов и минимизации затрат.

📌 Моделирование задачи как графа
- Вершины графа представляют валюты.
- Рёбра графа представляют возможные конвертации между валютами. Вес ребра может быть равен комиссии или курсу конвертации (в зависимости от постановки задачи).

📌 Выбор алгоритма
Для поиска кратчайшего пути (минимального количества конвертаций) подходят следующие алгоритмы:

- Алгоритм Дейкстры — если учитываются веса рёбер (например, комиссии или курсы). Основным ограничением алгоритма является невозможность работы с отрицательными весами рёбер.
- Алгоритм поиска в ширину (BFS) — если веса рёбер не учитываются, а важно только количество конвертаций.
- Если есть отрицательные веса, можно использовать алгоритм Беллмана-Форда.

Ну а далее, уже в зависимости от конкретных деталей можно реализовать тот или иной алгоритм. Так что, в современных реалиях не достаточно знать особенности Android SDK или Kotlin, могут спросит как алгоритмы так и System Design, поэтому готовиться нужно тщательно. Как вам такое тестовое?
  • 🔥 4
  • 🤔 1
More from @android_school_ru
  1. Oct 8, 2026Как быть Android-разработчику в эпоху перемен? Спасибо всем, кто принял участие в опросе п…
  2. Sep 28, 2026Post #401
  3. Sep 14, 2026​​Как ChatGPT украл у начинающих разработчиков самое важное. Вчера был День программиста,…
  4. Sep 9, 2026Как научиться решать задачи на Leetcode Знаю, что многих разработчиков буквально вводят в…
  5. Sep 1, 2026🎓 1 сентября - хороший повод снова чему-то поучиться. Особенно если осенью планируете ход…
  6. Aug 31, 2026​​Получил оффер в Яндекс и ... отказался. Да, вы не ошиблись, сам отказался 😁. Никогда не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →