Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Как интерпретировать понятие “высоконагруженное Android приложение”?

#android #highload #задание_на_собеседовании


На одном собеседовании на позицию Android developer мне был задан вопрос: "Имею ли
я опыт создания высоконагруженных Android приложений." (Жаль, что мысль уточнить определение
этого понятия мне пришла уже после собеседования)

Разработкой приложений для Android я занимаюсь уже несколько лет. Так получилось,
что проекты с которыми я работаю(л) не имели большого успеха в плане количества пользователей.
Исходя из этого, на вышеупомянутый вопрос я ответил, что такого опыта не имел, все
проекты доростали в лучшем случае до нескольки тысяч пользователей. (В данном случае,
я интерпретировал highload как количество активных пользователей)

Ранее я не встречал применение понятия "высоконагруженный" (highload) в контексте
Android приложений. И сейчас, задавшись вопросом я вижу, что это понятие применяется
по отношению к бекенду и сайтам.

После проведения аналогий с highload в вебе, я бы сказал, что highload Android app
- это приложение архитектура которого будет легко поддерживать внедрение новых функций,
оптимально расходовать ресурсы Android девайса. Но разве не каждое приложение должно
разрабатываться с учетом этих требований?

Хочу поинтересоваться у других специалистов, как вы понимаете "высоконагруженный"
(hihgload) по отношению к Android приложению?
    


Ответы

Ответ 1



Сложно сказать, что именно имели в виду на собеседовании, но я могу предположить следующие ситуации: Собеседование проводил нетехнический специалист, у которого был опросник (или опыт) для собеседования бекенд-специалистов, который на лету как-то адаптировал вопросы, а в ответах надеялся услышать уверенный ответ (не важно какой) Собеседование проводил грамотный интервьюер, вопрос задавался с целью проверить уверенность знаний или ввести в некий стресс. Ожидаемым ответом на такие вопросы являются уточняющие вопросы или рассказ о том, что вопрошающий спрашивает чушь. Собеседник разговаривает на каком-то внутреннем диалекте, известном только ему или его окружению. В этом случае он хотел узнать что-то конкретное, но вот что именно - остается только гадать. И если с первыми 2 случаями все относительно понятно, то в последнем варианте можно подумать о: Отзывчивости и плавности приложения, особенно когда оно обвешано сторонними модулями и библиотеками. Мне порой попадались приложения, которые на топовом железе прошлого года выдавали ну просто сверх-тормозящие списочки. Впрочем, гигагерцы и ядра только растут, а списочки все равно всегда тормозят. Оптимизации сетевого обмена с сервером. Когда сервер задыхается от миллионов запросов, то тут надо бы подумать, как сделать работу сервера попроще. К примеру, отказаться от XML/JSON и других человекочитаемых протоколов, как бы ввести несколько серверов, как бы снизить число запросов так, чтобы и функциональность не пострадала, и при этом сервер без лишней надобности не трогать. Надо сказать, что это в общем-то не работа Андроид-девелопера, но порой больше этим некому заниматься. Вопрос мог означать, умеете ли вы работать с байтиками или ума хватает только на парсинг XML и голые запросы по http. Иногда надо работать с большими объемами данных. К примеру, отображать карту с миллионами объектов на ней одновременно. Да, это возможно, но если все приложение написать на сишечке, а не использовать гугломапсы, как это делают все. Есть ряд приложений, где отзывчивость критически важна и которые потребляют максимум ресурсов. К примеру, Angry Birds делает внутри себя какую-то магию, что мой планшет становится горячим примерно за 10 минут игры. Я не знаю как они этого добились, но я верю, что это пример высоконагруженного приложения Майнинг биткоинов, подсчет прогноза погоды, рисование чего-то поверх фотографий на основе нейросетей. Возможно, в скрытом режиме. Наверное злые птицы чем-то таким в фоне и занимаются. Думаю, список можно продолжать бесконечно. Если кто-то напишет другие варианты, то будет круто. А вообще, порог входа в профессию "погромизд на андроид" настолько низок, что достаточно понимать как правильно копипастить код со стековерфлоу и клеить свои приложения из копипасты. АПИ меняется постоянно, равно как и практики, равно как и требования. Я совершенно не понимаю, зачем проводят такие собеседования.

Комментариев нет:

Отправить комментарий