Новое интересное обсуждение на Reddit — вопросы по Android (и не только) разработке, которые задавались на собеседовании:
Я начну. Самый странный вопрос, который мне задавали, был, пожалуй, таким:
Вы согласны или не согласны с тем, что в Kotlin мы можем заменить паттерн Строитель на классы данных?
Я ответил какую-то белиберду, но правильным ответом было то, что паттерн Builder по-прежнему очень полезен, когда мы хотим инициализировать сложные объекты.
Вот еще некоторые интересные вопросы с собеседований:
- Сейчас 16:55 пятницы, большинство ваших коллег разъехались по домам на длинные выходные, а ваш босс ушел в отпуск, но доступен только в экстренных случаях. Сервер падает. Что вы будете делать? (да, этот вопрос был задан для должности мобильного разработчика)
- Оцените количество автомобилей в [стране]. Вот и все, вот и весь вопрос. Пытаюстся нанять Энрико Ферми на младшую должность.
- Довольно сложный вопрос для джуниора, но если вы хотите узнать, как на него ответить, возьмите книгу Льюиса Лина «Decode and Conquer». Цель состоит в том, чтобы получить ПОЧТИ точный ответ, не требующий большого количества информации, поскольку вам придется делать это много раз, будучи инженером.
- Создайте свою собственную реализацию BigInteger (это было для работы в Amazon в далеком прошлом).
- Опишите случай, когда вы продвигали хорошую идею джуниор-разработчика. Я не могу описать, как сильно я ненавижу подобные вопросы и как плохо умею на них отвечать.
- Как бы вы разработали DI-фреймворк. В конце концов я получил эту работу, но зарплата была меньше, чем моя нынешняя. Я, естественно, отказался.
- Пожалуйста, опишите, как вы создадите надежный сервис потоковой передачи музыки с глобально низкой задержкой и высокой доступностью. В список вопросов были включены как клиентская часть, так и бэкэнд. Это собеседование длилось час, и я не помню почти ничего из того, что было потом, но, видимо, я сказал что-то правильное, и меня взяли на работу.
- Что-то в духе «почему стоит использовать MVVM — вместо MVP, MVC». Проблема была в том, что я изучал Android в 2020 году, когда MVVM уже был рекомендованным архитектурным паттерном.
- Как бы вы реализовали свою собственную viewModel без какой-либо другой библиотеки.
- Если кому интересно: получаем или создаем его в onCreate с getLastNonConfigurationInstance, возвращаем в onRetainNonConfigurationInstance, избавляемся в onDestroy, если isChangingConfigurations возвращает false.
- В чем ваша самая большая слабость? Не знаю… Шоколад? Мне нравится фокусироваться на самосовершенствовании, а не зацикливаться на своих слабостях. Конечно, в чем-то я слаб, но в чем-то могу быть замечательным и при этом стараться учиться. Я не получил эту работу, потому что не смог определить свои слабые стороны.
- Определите, сколько последовательностей двоичных единиц находится внутри целого числа. Например, если задано 5, то на выходе получится 2. Поскольку в двоичном исчислении это 101. Я и по сей день не знаю, как решить эту задачу. Возможно, это задача с Leetcode с решением, но я просто ухожу от того, чтобы когда-либо узнать эти ответы.