Какой опыт у вас есть в программировании под микроконтроллеры
Что проверяют
Android-разработчику этот вопрос задают в командах, где приложение работает с «железом»: носимые устройства, датчики, умный дом, торговое оборудование. Хотят понять, сможете ли вы договориться с прошивкой о протоколе и отладить связку телефона с устройством. Следом спрашивают про BLE: как устроено подключение и что делать с обрывами.
Как отвечать
Стройте ответ вокруг двух сторон: что вы делали на микроконтроллере и как с ним общалось приложение.
- сторона устройства: платформа (ESP32, STM32, nRF52, Arduino), язык C или C++, среда (ESP-IDF, Arduino, Zephyr, FreeRTOS). Периферия: GPIO, UART, I2C, SPI, прерывания, режимы сна;
- BLE на Android: поиск через
BluetoothLeScanner, подключениеconnectGatt, сервисы и характеристики GATT, подписка на уведомления через дескриптор CCCD, увеличение пакета черезrequestMtu; - разрешения: с Android 12 нужны
BLUETOOTH_SCANиBLUETOOTH_CONNECT, на более старых версиях сканирование требует разрешения на геолокацию; - другие каналы: USB Host через
UsbManager, Wi-Fi с MQTT или HTTP, NFC; - протокол обмена: формат пакета, контрольная сумма, версия протокола, обновление прошивки по воздуху;
- надёжность: операции GATT на Android выполняются строго по одной, поэтому нужна очередь команд, плюс переподключение и таймауты.
Опыт у вас свой: какая плата, что делало устройство, какую часть писали вы. Если микроконтроллеры были только в хобби, скажите это прямо: «собрал метеостанцию на ESP32 и приложение, которое читает её данные по BLE». Если опыта нет совсем, не сочиняйте, а покажите, что понимаете, как устроена связь телефона с устройством.
Где спотыкаются
Отправляют следующую запись в характеристику, не дождавшись колбэка предыдущей. Вызов возвращает отказ, его не проверяют, и данные теряются.
Забывают про разрешения и ограничения системы: на старых версиях без геолокации скан не находит ни одного устройства, а частое сканирование в фоне система режет сама.
Рассказывают только про прошивку и ни слова про приложение. Для роли Android-разработчика это ответ мимо вакансии.