Logo
TGCATALOG
Catálogo Selecciones Blog
Kotlin  Preguntas de Entrevista

Kotlin Preguntas de Entrevista

Preguntas de entrevista para desarrolladores de Kotlin con respuestas.

Sin valoraciones
708
29.10.2026
708
29.10.2026
Sin valoraciones
708
29.10.2026
Redirección segura vía bot
О канале

Preguntas de entrevista para desarrolladores de Kotlin con respuestas.

Подписчиков 2,449
Тематика Tecnología
Язык Español
Ссылка t.me/easy_kotlin

También te recomendamos

Kekaton AI  Voz en off y clon de voz
Kekaton AI Voz en off y clon de voz
Bot

bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.

Descripción

Preguntas de entrevista Kotlin: extensiones, coroutenos, colecciones. Con ejemplos de código y explicaciones para Android y backend.

Últimas publicaciones

Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Как определить изменение скорости работы программы после наших действий? 🟠Profile GPU Rendering Этот инструмент показывает время, затраченное на отрисовку каждого кадра. Использование этого инструмента позволяет выявить "тяжелые" кадры и измерить улучшения после оптимизации. 1⃣Включите режим разработчика на устройстве. 2⃣Перейдите в "Настройки" -> "Для разработчиков". 3⃣Включите опцию "Profile GPU Rendering" и выберите "On screen as bars". 4⃣Запустите ваше приложение и наблюдайте за графиками. Зеленые линии указывают на время отрисовки, и ваша цель - оставаться ниже 16 мс (для 60 кадров в секунду). 🟠Android Profiler Предоставляет набор инструментов для анализа производительности приложения. 1⃣ Откройте Android Studio и запустите ваше приложение. 2⃣Перейдите в "View" -> "Tool Windows" -> "Profiler". 3⃣Выберите ваше устройство и запущенное приложение. 4⃣Используйте вкладки CPU, Memory, Network и Energy для анализа различных аспектов производительности. 5⃣Сравните данные до и после оптимизации. 🟠Benchmarking Создание и использование тестов производительности помогает количественно оценить улучшения. Вы можете использовать библиотеку Jetpack Benchmark для создания и выполнения тестов производительности. 🚩Пример использования Jetpack Benchmark: 1⃣Добавьте зависимости в build.gradle: dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.1.0" androidTestImplementation "androidx.test:runner:1.3.0" androidTestImplementation "androidx.test:rules:1.3.0" } 2⃣Создайте класс теста: import androidx.benchmark.junit4.BenchmarkRule import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class ExampleBenchmark { @get:Rule val benchmarkRule = BenchmarkRule() @Test fun myFunctionBenchmark() { benchmarkRule.measureRepeated { // Вызов вашей функции или кода для тестирования производительности myFunction() } } } 🟠Logcat Используйте журналирование для измерения времени выполнения определенных операций. val startTime = System.currentTimeMillis() // Ваш код val endTime = System.currentTimeMillis() Log.d("Performance", "Время выполнения: ${endTime - startTime} мс") 🟠StrictMode StrictMode помогает обнаружить операции, которые могут замедлить работу приложения, такие как работа с сетью или базой данных в главном потоке. if (BuildConfig.DEBUG) { StrictMode.setThreadPolicy( StrictMode.ThreadPolicy.Builder() .detectAll() .penaltyLog() .build() ) StrictMode.setVmPolicy( StrictMode.VmPolicy.Builder() .detectAll() .penaltyLog() .build() ) } 🟠Systrace Systrace позволяет собирать и анализировать трассировки производительности системы, предоставляя детализированные данные о времени выполнения различных операций. 1⃣Включите режим разработчика на устройстве. 2⃣В "Настройки" -> "Для разработчиков" включите "Enable GPU Debug Layers". 3⃣Запустите команду adb shell am broadcast -a com.android.systemui.screenshot.ScreenshotService.ACTION_SYSTRACE. Ставь 👍 и забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 В чём измеряется производительность layout? Производительность измеряется в миллисекундах времени отрисовки (measure, layout, draw). Также учитывается количество операций пересчёта и перекомпоновки. В Jetpack Compose оценивается количеством recomposition и snapshot изменений. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Зачем нужно разделять отображение и бизнес-логику? Разделение UI и бизнес-логики делает код понятнее, тестируемее и проще в поддержке. Это ключевой принцип чистой архитектуры (Clean Architecture) и паттернов MVP, MVVM, MVI. 🚩Что такое UI и бизнес-логика? Плохой код (UI + логика в Activity) class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById(R.id.button) button.setOnClickListener { val result = fetchData() // ❌ Логика в UI button.text = result } } fun fetchData(): String { return "Данные с сервера" // ❌ Тут должна быть ViewModel } } 🚩Как правильно разделять UI и логику? (MVVM) Разделим код на Activity + ViewModel MainActivity (только UI) class MainActivity : AppCompatActivity() { private val viewModel: MainViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById(R.id.button) viewModel.text.observe(this) { text -> button.text = text // ✅ UI обновляется из ViewModel } button.setOnClickListener { viewModel.loadData() // ✅ Вызываем бизнес-логику } } } MainViewModel (бизнес-логика) class MainViewModel : ViewModel() { private val _text = MutableLiveData() val text: LiveData = _text fun loadData() { _text.value = "Данные с сервера" // ✅ UI не знает, откуда данные } } Ставь 👍 и забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Что значит android:exported="true" / "false"? - android:exported="true" — компонент (Activity, Service, Receiver) доступен извне (например, через интенты или deeplinks). - android:exported="false" — компонент может вызываться только внутри приложения. С Android 12 это поле обязательно для всех компонентов с intent-filter. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Как сохранить состояние скролла при пересоздании Activity? При пересоздании Activity (например, при повороте экрана) состояние ScrollView или RecyclerView сбрасывается. Чтобы этого избежать, можно сохранить и восстановить позицию скролла. 🟠Использование `onSaveInstanceState()` Android позволяет сохранять данные в Bundle перед уничтожением Activity, а затем восстанавливать их. class MainActivity : AppCompatActivity() { private lateinit var scrollView: ScrollView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) scrollView = findViewById(R.id.scrollView) // Восстанавливаем позицию скролла savedInstanceState?.let { val scrollY = it.getInt("scroll_position", 0) scrollView.post { scrollView.scrollTo(0, scrollY) } } } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) outState.putInt("scroll_position", scrollView.scrollY) } } 🟠Для `RecyclerView` У RecyclerView уже есть встроенный механизм сохранения состояния через LinearLayoutManager. class MainActivity : AppCompatActivity() { private lateinit var recyclerView: RecyclerView private lateinit var layoutManager: LinearLayoutManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) layoutManager = LinearLayoutManager(this) recyclerView = findViewById(R.id.recyclerView) recyclerView.layoutManager = layoutManager recyclerView.adapter = MyAdapter() // Восстанавливаем позицию скролла savedInstanceState?.let { val scrollPosition = it.getInt("recycler_position", 0) recyclerView.post { layoutManager.scrollToPosition(scrollPosition) } } } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) outState.putInt("recycler_position", layoutManager.findFirstVisibleItemPosition()) } } 🟠Использование `android:freezesText` для `EditText` Если EditText находится внутри ScrollView, можно включить android:freezesText="true", чтобы автоматически сохранять данные. Ставь 👍 и забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Как преобразовать горячий поток в холодный в RxJava и наоборот? Горячий поток можно симулировать, используя Subject с несколькими подписчиками. Холодный поток можно создать заново или применить defer, чтобы каждый подписчик получал независимый поток. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Как в Ретрофите в гет методе поставить атрибут в путь в контретом месте? В Retrofit, чтобы передать значение в определенное место URL-адреса для GET-запроса, нужно использовать аннотацию @Path. Эта аннотация позволяет заменить параметр в строке пути на значение, переданное в метод. 🚩Как работает `@Path`? 1. Внутри аннотации @GET вы указываете строку пути, содержащую плейсхолдеры в фигурных скобках ({}). 2. Аннотация @Path связывает переменную метода с плейсхолдером в URL. 3. Когда метод вызывается, значение переменной подставляется вместо плейсхолдера в URL. Допустим, у вас есть API с эндпоинтом Ссылка скрыта Настраиваем интерфейс Retrofit interface ApiService { @GET("users/{id}/details") suspend fun getUserDetails( @Path("id") userId: String ): Response } Теперь, когда вы вызываете этот метод, вы можете передать значение для id, и Retrofit автоматически подставит его в URL val apiService = retrofit.create(ApiService::class.java) suspend fun fetchUserDetails() { val userId = "123" // Пример значения val response = apiService.getUserDetails(userId) if (response.isSuccessful) { println("User details: ${response.body()}") } else { println("Error: ${response.errorBody()?.string()}") } } 🚩Дополнительные аспекты использования `@Path` 🟠Как работают несколько параметров? Вы можете использовать несколько плейсхолдеров в пути и связать их с несколькими параметрами с помощью @Path. Например: API-эндпоинт Ссылка скрыта Интерфейс Retrofit interface ApiService { @GET("users/{userId}/posts/{postId}") suspend fun getPostDetails( @Path("userId") userId: String, @Path("postId") postId: String ): Response } Вызов метода val response = apiService.getPostDetails("123", "456") // URL: Ссылка скрыта 🟠Что если переменная null или пустая? Если вы передаете null или пустую строку в @Path, это вызовет ошибку, так как Retrofit требует обязательного значения для всех параметров пути. Убедитесь, что передаваемое значение всегда валидно. 🟠Как избежать ошибок при форматировании? Если значение пути может содержать символы, требующие экранирования (например, пробелы, специальные символы), Retrofit автоматически обработает это с помощью кодировки URL. Это делает использование @Path безопасным. @GET("search/{query}") suspend fun search( @Path("query") searchQuery: String ): Response Если вы вызовете метод с поисковым запросом apiService.search("hello world!") // Retrofit закодирует URL: Ссылка скрыта Ставь 👍 и забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Откуда у Handler способность работать с главным потоком? Handler связан с Looper, который обрабатывает очередь сообщений. Главный поток имеет свой Looper, созданный автоматически при запуске приложения, и Handler, связанный с этим Looper, может отправлять сообщения в главный поток. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Kotlin  Preguntas de Entrevista
Kotlin Preguntas de Entrevista
🔒Открыть пост
и посмотреть медиа
🤔 Сколько типов инстансов у nothing? Nothing — это специальный bottom type (нижний тип), который означает: Функция никогда не возвращает результат (throw, error()). Код после Nothing недостижим. fun fail(): Nothing { throw IllegalStateException("Ошибка!") // Никогда не возвращает значение } 🚩Почему `Nothing` не имеет инстансов? Все классы в Kotlin могут иметь инстансы (объекты), кроме Nothing. Nothing нельзя создать (instantiate), потому что он не имеет конструктора. Любая переменная типа Nothing просто не существует. val x: Nothing = Nothing() // ❌ Ошибка: у Nothing нет конструктора 🚩Где используется `Nothing`? Используется в throw fun fail(): Nothing = throw IllegalArgumentException("Ошибка") Используется в TODO() fun getData(): String { TODO("Функция ещё не реализована") } Используется в if-else, где один вариант throw fun getValue(x: Int): String { return if (x > 0) "Позитивное число" else throw IllegalArgumentException("Отрицательное!") } Ставь 👍 и забирай 📚 Базу знаний
Kotlin Preguntas de Entrevista
Evolución de suscriptores
+0.0% últimos 30 días
Actuales
2,449
Hace un mes
2,450
Crecimiento medio
+0 / día
Actualizado
hace 3 días

Reseñas de canal Kotlin Preguntas de Entrevista

Inicia sesión para dejar una reseña

Solo los usuarios registrados pueden compartir su opinión.

Aún no hay reseñas

¡Sé el primero en compartir tu experiencia con este recurso!

Recursos similares

Loading
Cambiar a tema claro
Inicio Catálogo Selecciones Blog Entrar