Мтс юрент · май 2025

Тех собес на middle-senior Android Разработчик в Мтс юрент

middle-senior Тех собес 13 вопросов 1 задача
1

Сетевое взаимодействие и безопасность

1. Как устроено клиент-серверное взаимодействие, протокол авторизации OAuth 2.0?

2. Какие есть способы защиты приложения от атак типа Man-in-the-Middle?

3. Чем отличается протокол UDP от TCP?

4. Чем отличается GET-запрос от POST-запроса функционально?

5. Есть ли опыт работы с WebSocket?

2

Криптография

6. Чем отличается хеширование от шифрования?

7. Чем отличается симметричное шифрование от асимметричного?

3

Архитектура и принципы

8. В чем заключается концепция Trunk-Based Development, какие есть плюсы и минусы у этого подхода?

9. Какие основные архитектурные слои есть и от кого зависит domain слой?

10. Есть ли опыт работы с MVI?

11. В чем суть принципа подстановки Барбары Лисков из SOLID, и какие есть примеры его нарушения в Android SDK?

12. В чем суть принципа разделения интерфейсов из SOLID, и какие есть примеры его нарушения в Android SDK?

13. Что такое архитектура NVI?

4

Задача

Практика

14. Задача: Реализовать логику запроса на сервер и метод onTextChanged для экрана с поиском

@Composable
fun Screen() {
    val viewModel = koinInject()
    Column(modifier = Modifier.fillMaxSize().verticalScroll()) {
        TextField(onChanged: { value -> viewModel.onTextChanged(value) })
        viewModel.list.observeAsState().forEach { model ->
            Item(model = model)
        }
    }
}

interface Interactor {
    suspend fun getModels(query: String): List<Model>
}

class ScreenViewModel(private val interactor: Interactor) : ViewModel() {

    val list: MutableStateFlow<List<Model>> = MutableStateFlow()

    fun onTextChanged(value: String) {
        //
    }
}