Top 50 pitanja i odgovora na intervjuu za Kotlin (2026.)

Pripremate se za Kotlin intervju? Razumijevanje onoga ลกto moลพete oฤekivati โโmoลพe oblikovati vaลกu pripremu. Fraza Kotlin intervju oznaฤava bitna podruฤja koja otkrivaju dubinu, naฤin razmiลกljanja i prilagodljivost tijekom procjene kandidata.
Istraลพivanje Kotlin pitanja za intervju otvara prilike u svim promjenjivim potrebama industrije, povezujuฤi tehniฤko iskustvo s praktiฤnim rastom. Struฤnjaci koji rade u tom podruฤju stjeฤu struฤnost u domeni, usavrลกavajuฤi vjeลกtine analize i proลกirujuฤi svoj skup vjeลกtina. Ova uobiฤajena pitanja pomaลพu poฤetnicima, iskusnim talentima i programerima srednje razine da ispune tehniฤka oฤekivanja, a istovremeno se usklade sa stvarnim ciljevima tima. ฤitaj viลกeโฆ
๐ Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za Kotlin
Najฤeลกฤa pitanja i odgovori za Kotlin na intervjuu
1) ล to je Kotlin i zaลกto je bolji od Java?
Kotlin je moderni, statiฤki tipizirani programski jezik koji je razvio JetBrains za viลกeplatformske aplikacije. Nudi konciznu sintaksu, null sigurnost i potpunu interoperabilnost s Java, Za razliku od JavaKotlin smanjuje standardni kod i poveฤava produktivnost podrลพavajuฤi funkcije viลกeg reda, klase podataka i korutine.
Prednosti Kotlina u odnosu na Java:
| Faktor | Kotlin | Java |
|---|---|---|
| Nulta sigurnost | Ugraฤen | Odsutan |
| Funkcije proลกirenja | Podrลพano | Nije podrลพano |
| Korutine | Narodna podrลกka | Zahtijeva vanjske biblioteke |
| Code Konciznost | Vrlo visoko | verbalan |
| Interoperabilnost | 100% s Java | Ograniฤeno s Kotlinom |
Primjer:
val message: String? = "Hello" println(message?.length) // Safe call prevents NullPointerException
Kotlinova koncizna sintaksa i sigurniji dizajn ฤine ga zadanim izborom za Android i razvoj pozadinskog sustava.
2) Objasnite glavne znaฤajke i karakteristike Kotlina.
Kotlin je jezik bogat znaฤajkama koji integrira objektno orijentirane i funkcionalne paradigme. Njegove kljuฤne karakteristike ukljuฤuju:
- Nulta sigurnost: spreฤava
NullPointerExceptionu vrijeme kompajliranja. - Funkcije proลกirenja: Omoguฤuje programerima dodavanje novih funkcionalnosti postojeฤim klasama.
- Korutine: Pojednostavite asinhrono programiranje.
- Pametni castovi: Automatski pretvori u tip nakon provjere uvjeta.
- Klase podataka: Automatski generiraj
toString(),equals()ihashCode()metode. - Interoperabilnost: Potpuna kompatibilnost s postojeฤim Java kodne baze.
Ove znaฤajke zajedno poboljลกavaju sigurnost koda, ฤitljivost i performanse - kljuฤne ฤimbenike na razini poduzeฤa. Android aplikacije.
3) ล to su klase podataka u Kotlinu i koje prednosti nude?
Klase podataka su posebne klase u Kotlinu dizajnirane za pohranjivanje nepromjenjivih podataka. Kada se deklariraju s data kljuฤnu rijeฤ, oni automatski generiraju standardne metode kao ลกto su equals(), hashCode()i toString().
Prednosti:
- Smanjuje standardni kod.
- Poboljลกava jasnoฤu koda.
- Omoguฤuje funkcije komponenti za destrukturiranje deklaracija.
Primjer:
data class User(val name: String, val age: Int)
val user1 = User("Alice", 25)
println(user1) // Output: User(name=Alice, age=25)
Klase podataka se prvenstveno koriste za modeliranje podataka domene i osiguravanje nepromjenjivosti meฤu slojevima.
4) Kako korutine rade u Kotlinu?
Korutine u Kotlinu pruลพaju moฤan naฤin izvrลกavanja asinkronih i istovremenih zadataka bez blokiranja niti. To su lagane komponente koje obustavljaju izvrลกavanje bez blokiranja glavne niti, ลกto ih ฤini idealnim za mreลพne i I/O operacije.
Primjer:
GlobalScope.launch {
val data = async { fetchData() }
println(data.await())
}
Faze ลพivotnog ciklusa korutine:
- Stvaranje
- Izvrลกenje
- Suspenzija
- povraฤaj
- Zavrลกetak
Prednosti:
- Lagana konkurentnost
- Strukturirani paralelizam
- Poboljลกane performanse u Android aplikacije
Korutine pojednostavljuju kod u usporedbi s tradicionalnim povratnim pozivima ili Rx-omJavapristupi temeljeni na -.
5) Koja je razlika izmeฤu val i var u Kotlinu?
| svojstvo | val |
var |
|---|---|---|
| Promjenjivost | Nepromjenjivo (samo za ฤitanje) | Promjenjivo (moลพe se prenamijeniti) |
| Koristite sluฤaj | Konstante ili vrijednosti konfiguracije | Varijable koje trebaju aลพuriranja |
| Preraspodjela | Nije dozvoljeno | dopuลกteno |
| Kompilacija | Osigurava sigurnost niti | Moลพda ฤe biti potrebna sinkronizacija |
Primjer:
val name = "John" var age = 30 age = 31 // valid name = "Mark" // compilation error
Koriลกtenje val poboljลกava nepromjenjivost - najbolju praksu u Kotlin standardima kodiranja.
6) Kako Kotlin rjeลกava null sigurnost?
Null sigurnost je jedna od najvrjednijih znaฤajki Kotlina. Kotlin razlikuje null-labilne i ne-null-labilne tipove tijekom kompajliranja.
Primjer:
var name: String? = "Alex" println(name?.length) // Safe call
Operatorovi:
?: Operater sigurnog poziva?:Elvisov operator (pruลพa zadanu vrijednost)!!Ne-null tvrdnja (baca NPE ako je null)
Provoฤenjem null sigurnosti tijekom kompajliranja, Kotlin praktiฤki eliminira vrijeme izvoฤenja. NullPointerExceptions, poboljลกavajuฤi stabilnost aplikacije.
7) Koje su razliฤite vrste konstruktora u Kotlinu?
Kotlin podrลพava dvije vrste konstruktora:
| Tip | Description | Primjer |
|---|---|---|
| Primarni konstruktor | Definirano u zaglavlju klase | class Person(val name: String) |
| Sekundarni konstruktor | Definirano unutar tijela klase pomoฤu constructor |
constructor(name: String, age: Int) : this(name) |
Primjer:
class Student(val name: String) {
constructor(name: String, age: Int) : this(name) {
println("Age is $age")
}
}
Ova fleksibilnost omoguฤuje viลกe naฤina uฤinkovite inicijalizacije objekata.
8) Objasnite razliku izmeฤu operatora == i === u Kotlinu.
| Operahumka | Vrsta usporedbe | Description |
|---|---|---|
== |
Strukturalan | Provjerava jednakost vrijednosti pomoฤu equals() |
=== |
Referentni | Provjerava pokazuju li dvije reference na isti objekt |
Primjer:
val a = "Hello" val b = "Hello" println(a == b) // true println(a === b) // false (different references)
Ova razlika pomaลพe programerima da eksplicitno kontroliraju logiku jednakosti, posebno kada se radi o identitetu objekta i prilagoฤenim modelima.
9) ล to su funkcije proลกirenja u Kotlinu?
Funkcije proลกirenja omoguฤuju dodavanje novih funkcionalnosti postojeฤim klasama bez nasljeฤivanja. ฤine kod ฤitljivijim i modularnijim.
Primjer:
fun String.lastChar(): Char = this[this.length - 1]
println("Kotlin".lastChar()) // Output: n
Prednosti:
- ฤiลกฤa sintaksa
- Nema potrebe za klasama korisnosti
- Poboljลกava modularnost
Funkcije proลกirenja se intenzivno koriste u Android razvoj, posebno s UI komponentama i transformacijama podataka.
10) ล to su zatvorene klase u Kotlinu i gdje su korisne?
Zatvorena klasa ograniฤava nasljeฤivanje klase na definirani skup podklasa. Koristi se za predstavljanje ograniฤenih hijerarhija, ฤesto u when izrazi.
Primjer:
sealed class Result
data class Success(val data: String): Result()
data class Error(val error: String): Result()
fun handleResult(result: Result) = when(result) {
is Success -> println("Data: ${result.data}")
is Error -> println("Error: ${result.error}")
}
Prednosti:
- Osigurava iscrpno
whenProvjere - Poboljลกava sigurnost koda
- Idealno za modeliranje stanja odgovora korisniฤkog suฤelja ili API-ja
11) ล to su funkcije viลกeg reda u Kotlinu? Navedite primjere.
Funkcije viลกeg reda su funkcije koje ili uzimaju druge funkcije kao parametre ili vraฤaju funkciju. Ovaj koncept je posuฤen iz funkcionalnog programiranja i potiฤe ฤiลกฤi, modularni kod.
Primjer:
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operateOnNumbers(5, 3) { x, y -> x + y }
println(result) // 8
Prednosti:
- Promotest ponovne upotrebe
- Pojednostavljuje rukovanje logikom
- Omoguฤuje sintaksu temeljenu na lambda algoritmima za saลพete izraze
Kotlinova opseลพna upotreba funkcija viลกeg reda (kao ลกto su map, filteri forEach) poboljลกava produktivnost programera i u backendu i u Android projektima.
12) Objasnite koncept inline funkcija u Kotlinu.
An inline funkcija govori kompajleru da umetne tijelo funkcije izravno na mjesto poziva kako bi se izbjeglo dodatno optereฤenje prilikom stvaranja lambda objekta. Poboljลกava performanse, posebno pri prosljeฤivanju funkcija kao parametara.
Primjer:
inline fun measureTime(block: () -> Unit) {
val start = System.nanoTime()
block()
println("Time: ${System.nanoTime() - start}")
}
Prednosti:
| Faktor | Korist |
|---|---|
| Izvoฤenje | Izbjegava alokaciju objekata |
| ฤitljivost | Odrลพava jasnoฤu lambda signala |
| Fleksibilnost | Dobro funkcionira s reificiranim tipovima |
Inline funkcije su posebno korisne u aplikacijama visokih performansi ili niske latencije.
13) Koja je razlika izmeฤu otvorenog, finalnog i trbuลกnog vjeลพbanja?tract nastava u Kotlinu?
| Rijeฤ | Description | Primjer upotrebe |
|---|---|---|
open |
Omoguฤuje nasljeฤivanje | open class Vehicle |
final |
Sprjeฤava nasljeฤivanje (zadano) | class Car |
abstract |
Mora se naslijeฤivati, ne moลพe se instancirati | abstract class Shape |
Primjer:
open class Animal class Dog : Animal()
Kljuฤno za poneti: U Kotlinu su nastava konaฤno prema zadanim postavkama, promiฤuฤi nepromjenjivost i siguran dizajn - za razliku od Java, gdje je nasljeฤivanje otvoreno prema zadanim postavkama.
14) Kako generici funkcioniraju u Kotlinu? Koje su njihove prednosti?
Generiฤki tipovi u Kotlinu omoguฤuju kod siguran po tipu dopuลกtajuฤi koriลกtenje parametara tipa u klasama i funkcijama. To eliminira potrebu za eksplicitnim pretvaranjem (casting).
Primjer:
class Box<T>(val item: T)
val intBox = Box(10)
val stringBox = Box("Kotlin")
Prednosti generiฤkih lijekova:
- Vrsta sigurnosti
- Reus Sposobnost
- Provjera za vrijeme kompajliranja
- Smanjene pogreลกke tijekom izvoฤenja
Generiฤki lijekovi u Kotlinu takoฤer podrลพavaju modifikatori varijance (in, out) za poboljลกanu fleksibilnost - kljuฤ u kolekcijama i funkcionalnom programiranju.
15) ล to su prateฤi objekti u Kotlinu i zaลกto su korisni?
Popratni objekti su singletoni deklarirani unutar klasa za drลพanje ฤlanova sliฤnih statiฤkim. Ponaลกaju se sliฤno statiฤkim metodama u Java ali su fleksibilniji i objektno orijentirani.
Primjer:
class Database {
companion object {
fun connect() = println("Connected to DB")
}
}
Database.connect()
Prednosti:
- Nema potrebe za statiฤkim kljuฤnim rijeฤima
- Moลพe implementirati suฤelja
- Korisno za tvorniฤke metode i konstante
Popratni objekti potiฤu ฤistu organizaciju koda i odrลพavaju Kotlinovu filozofiju โsve je objektโ.
16) Objasnite delegiranje u Kotlinu s primjerom.
Delegiranje u Kotlinu je obrazac dizajna koji omoguฤuje objektu da delegira svoje ponaลกanje drugom objektu. Kotlinov by Kljuฤna rijeฤ pojednostavljuje ovaj obrazac.
Primjer:
interface Sound { fun makeSound() }
class CatSound : Sound { override fun makeSound() = println("Meow") }
class Cat(sound: Sound) : Sound by sound
val cat = Cat(CatSound())
cat.makeSound() // Output: Meow
Prednosti:
- Izbjegava standardne stavke
- Promosastav testova nad nasljeฤivanjem
- Poveฤava fleksibilnost koda
Delegiranje je jedan od najฤiลกฤih Kotlinovih obrazaca dizajna, ฤesto koriลกten u ubrizgavanju ovisnosti i rukovanju korisniฤkim suฤeljem.
17) Koja je razlika izmeฤu zatvorenih klasa i nabrajanja klasa u Kotlinu?
| svojstvo | Zatvorena klasa | Klasa nabrajanja |
|---|---|---|
| Svrha | Predstavljaju ograniฤene hijerarhije klasa | Predstavlja fiksni skup konstanti |
| Podklasiranje | Moลพe sadrลพavati razliฤite podatke po podklasi | Fiksne unaprijed definirane konstante |
| Koristite sluฤaj | Upravljanje stanjem, usklaฤivanje uzoraka | Nabrajanja, konstante |
Primjer:
sealed class NetworkState object Loading : NetworkState() data class Success(val data: String) : NetworkState()
Nabrajanja ne mogu sadrลพavati viลกe tipova podataka, dok zatvorene klase mogu predstavljati bogatije, tipovno sigurne hijerarhije za modeliranje stanja aplikacije.
18) ล to su opsegi korutina u Kotlinu i zaลกto su vaลพni?
Opsezi korutina definiraju ลพivotni ciklus i granice korutina, osiguravajuฤi strukturiranu konkurentnost. Uobiฤajeni opsezi ukljuฤuju GlobalScope, viewModelScopei lifecycleScope.
Primjer:
GlobalScope.launch {
delay(1000)
println("Running in GlobalScope")
}
Vrste opsega:
| Djelokrug | Description |
|---|---|
GlobalScope |
Neovisno o ลพivotnom ciklusu (izbjegavati u korisniฤkom suฤelju) |
CoroutineScope |
Prilagoฤeni korisniฤki definirani opseg |
viewModelScope |
Vezano za ลพivotni ciklus ViewModela |
lifecycleScope |
Koriลกteno u Android Aktivnosti ili fragmenti |
Opsezi sprjeฤavaju curenje memorije i osiguravaju da se korutine otkazuju kada se komponente uniลกte.
19) Kako je rukovanje iznimkama implementirano u Kotlinu?
Kotlin obraฤuje iznimke koristeฤi try, catchi finally blokovi, sliฤni JavaMeฤutim, Kotlin nema provjerene iznimke, ลกto kod ฤini ฤiลกฤim.
Primjer:
try {
val result = 10 / 0
} catch (e: ArithmeticException) {
println("Cannot divide by zero")
} finally {
println("Execution completed")
}
Prednosti:
- Nema provjerenih iznimki
- ฤiลกฤa sintaksa
- Sigurnije rukovanje tijekom izvoฤenja
Ova dizajnerska odluka pojednostavljuje Kotlinov model rukovanja greลกkama i smanjuje nepotrebne standarde.
20) ล to su lambde u Kotlinu i koji su njihovi uobiฤajeni sluฤajevi upotrebe?
Lambde su anonimne funkcije koje se mogu prenijeti kao izrazi. One pojednostavljuju kod smanjenjem opลกirnosti i poboljลกanjem ฤitljivosti.
Primjer:
val numbers = listOf(1, 2, 3)
val doubled = numbers.map { it * 2 }
println(doubled) // [2, 4, 6]
Uobiฤajeni sluฤajevi upotrebe:
- Manipulacija zbirkom (
map,filter,reduce) - Obrada dogaฤaja u Android
- Programiranje u funkcionalnom stilu
Lambde utjelovljuju Kotlinovu ekspresivnu sintaksu, omoguฤujuฤi programerima pisanje saลพetog, ฤitljivog i deklarativnog koda.
21) ล to su Kotlin DSL-ovi i koje su njihove prednosti?
A DSL (jezik specifiฤan za domenu) Kotlin je specijalizirani jezik stvoren unutar Kotlina kako bi se pojednostavila konfiguracija i poboljลกala ฤitljivost za odreฤene domene. Kotlinova fleksibilna sintaksa i funkcije viลกeg reda ฤine ga savrลกenim za izgradnju internih DSL-ova poput Gradle Kotlin skripte.
Primjer:
database {
table("Users") {
column("id", INT)
column("name", STRING)
}
}
Prednosti:
- Poboljลกava ekspresivnost i ฤitljivost
- Smanjuje pogreลกke u konfiguraciji
- Pojednostavljuje sloลพene API pozive
DSL-ovi se ฤesto koriste u Gradle izrada skripti, Jetpack Compose i Spring Kotlin DSL-ovi, ลกto Kotlin ฤini preferiranim izborom za deklarativno programiranje.
22) ล to je refleksija u Kotlinu i kako se moลพe koristiti?
Odraz u Kotlinu omoguฤuje programima pregled i mijenjanje njihove strukture tijekom izvoฤenja. Omoguฤuje dinamiฤki pristup klasama, metodama i svojstvima.
Primjer:
data class User(val name: String) val kClass = User::class println(kClass.simpleName) // Output: User
Uobiฤajeni sluฤajevi upotrebe:
- Serijalizacija i deserijalizacija
- Okviri za ubrizgavanje ovisnosti (kao ลกto su Koin, Dagger)
- ORM alati i napomene
Prednosti:
| Faktor | Description |
|---|---|
| Fleksibilnost | Dinamiฤki pristup metapodacima koda |
| Dinamiฤko ponaลกanje | Omoguฤuje izvrลกavanje logike za vrijeme izvoฤenja |
| Integracija | Koristi se u okvirima i bibliotekama |
Meฤutim, programeri moraju oprezno koristiti refleksiju zbog potencijalnih optereฤenje performansi i smanjena sigurnost pri kompajliranju.
23) ล to su anotacije u Kotlinu?
Anotacije u Kotlinu su oznake metapodataka dodane elementima koda kao ลกto su klase, funkcije ili svojstva. One upuฤuju kompajlere ili okvire da izvrลกe odreฤene radnje.
Primjer:
@Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) annotation class Info(val author: String) @Info(author = "Alice") class Example
Vrste napomena:
| Tip | Description |
|---|---|
| Standard | Ugraฤeno kao @Deprecated, @JvmStatic |
| obiฤaj | Korisniฤki definirano s annotation class |
Prednosti:
- Poboljลกava dokumentaciju koda
- Pomaลพe u generiranju i validaciji koda
- Intenzivno se koristi u Android i okviri za testiranje
24) Koja je razlika izmeฤu lazy i lateinit u Kotlinu?
| svojstvo | lazy |
lateinit |
|---|---|---|
| Tip | Radi s nepromjenjivim (val) |
Radi s promjenjivim (var) |
| Inicijalizacija | Pri prvom pristupu | Ruฤno kasnije prije upotrebe |
| Nultabilnost | Ne moลพe se nulirati | Mora se eksplicitno inicijalizirati |
| Sigurnost navoja | Dostupan je opcionalni parametar | Nije sigurno za koriลกtenje u viลกe niti |
Primjer:
val message by lazy { "Hello Kotlin" }
lateinit var username: String
Kljuฤni uvid: Koristiti lazy za nepromjenjiva svojstva i odgoฤenu inicijalizaciju; koristite lateinit kada je potrebna injekcija ovisnosti ili odgoฤena inicijalizacija.
25) Objasnite Kotlin kolekcije i njihove vrste.
Kotlin kolekcije su podijeljene na promjenjiv i nepromjenljiv tipovi. Nepromjenjive kolekcije ne mogu se mijenjati nakon stvaranja, dok promjenjive kolekcije mogu.
| Tip | Description | Primjer |
|---|---|---|
| Popis | Naruฤena kolekcija | listOf("A", "B") |
| Postaviti | Jedinstveni elementi | setOf(1, 2, 3) |
| Karta | Parovi kljuฤ-vrijednost | mapOf("key" to "value") |
Promjenjivi ekvivalenti: mutableListOf(), mutableSetOf(), mutableMapOf()
Primjer:
val fruits = mutableListOf("Apple", "Banana")
fruits.add("Orange")
Kotlin kolekcije su interoperabilne s Javaokvir za prikupljanje i pruลพa funkcionalne alate kao ลกto su map, filteri reduce.
26) Koja je razlika izmeฤu Flowa i LiveData u Kotlinu?
| svojstvo | Protok | LiveData |
|---|---|---|
| Podrijetlo | Kotlin korutine | Android Jetpack |
| Threading | Ugraฤena podrลกka za korutine | Glavna nit prema zadanim postavkama |
| Hladno/Vruฤe | Hladni tok (poฤinje kada se sakupi) | Vruฤi stream (uvijek aktivan) |
| Koristite sluฤaj | Tokovi podataka, obrada u pozadini | Promatranje podataka vezanih uz korisniฤko suฤelje |
Primjer:
val numbers = flow { emit(1); emit(2); emit(3) }
Kljuฤni odlazak: Koristiti Protok za asinhrone tokove podataka (npr. obrasce repozitorija) i LiveData za aลพuriranja vezana uz korisniฤko suฤelje koja su svjesna ลพivotnog ciklusa. U modernom Android arhitektura, StateFlow i SharedFlow preferiraju se za reaktivne UI dizajne.
27) Koji su Kotlinovi modifikatori vidljivosti i njihove karakteristike?
Kotlin definira ฤetiri modifikatora vidljivosti za kontrolu pristupa ฤlanova klase:
| Promijeniti | Djelokrug | Description |
|---|---|---|
public |
Svuda | Zadani pristup |
private |
Unutar klase/datoteke | Skriveno izvana |
protected |
Samo podklase | Nije vidljivo izvan lanca nasljeฤivanja |
internal |
Isti modul | Idealno za modularne projekte |
Primjer:
internal class Logger
private fun logError() { }
Odabir ispravnog modifikatora vidljivosti poboljลกava enkapsulacija, modularnost i odrลพivost Kotlin kodnih baza.
28) Kako funkcionira upravljanje memorijom u Kotlinu?
Kotlin se oslanja na automatsko odvoz smeฤa putem JVM-a. Upravlja memorijom sliฤno kao Java ali s dodatnim optimizacijama kompajlera poput null sigurnosti i pametnog pretvaranja koje smanjuju curenje.
Kljuฤni ฤimbenici koji utjeฤu na pamฤenje:
- Reference objekata i opseg
- Upravljanje ลพivotnim ciklusom korutina
- Izbjegavanje curenja statiฤkog konteksta (posebno u Android)
Najbolje prakse:
- Koristiti
weak referencesza sluลกatelje - Otkaลพi korutine u
onDestroy() - Preferirajte nepromjenjive objekte
In Android, Kotlinova jaka interoperabilnost s Java osigurava uฤinkovito rukovanje memorijom bez uvoฤenja dodatnih troลกkova.
29) ล to je Kotlin Multiplatform i koje prednosti pruลพa?
Kotlin viลกeplatformski (KMP) omoguฤuje programerima dijeljenje zajedniฤke poslovne logike na viลกe platformiโAndroid, iOS, web i backend - uz zadrลพavanje korisniฤkih suฤelja specifiฤnih za platformu.
Prednosti:
| Korist | Description |
|---|---|
| Code Reus Sposobnost | Dijeljenje logike na razliฤitim platformama |
| Dosljednost | Ujedinjena arhitektura i poslovna logika |
| Fleksibilnost | Integrira se s izvornim API-jima |
| sposobnost snabdijevanja | Smanjuje duplicirani napor |
Primjer: Uobiฤajeni moduli napisani u Kotlinu mogu se koristiti u oba Android i iOS projekti putem Kotlina/Nativea.
KMP ubrzava razvoj na viลกe platformi uz oฤuvanje izvornih performansi i korisniฤkog iskustva.
30) Koje su najbolje prakse kodiranja u Kotlinu za profesionalne projekte?
Profesionalni Kotlin programeri slijede standardizirane smjernice kako bi odrลพali ฤitljivost, sigurnost i uฤinkovitost.
Kljuฤne prakse:
- preferiraju
valumjesto premavarza nepromjenjivost. - Koristiti klase podataka za modele.
- Rukovati nulta sigurnost paลพljivo s
?.i?:. - Izbjegavajte upotrebu GlobalScope za korutine.
- Koristiti funkcije proลกirenja modularizirati logiku korisnosti.
- Korak po korak do prijave zatvorene klase za drลพavnu reprezentaciju.
- Follow konvencije imenovanja i koristite jasne strukture paketa.
Primjer:
fun String.capitalizeWords(): String = split(" ").joinToString(" ") { it.capitalize() }
Slijeฤenje ovih praksi osigurava da Kotlin kodne baze ostanu skalabilne, ฤiste i usklaฤene s modernim arhitektonskim obrascima.
31) Koji se dizajn obrasci obiฤno koriste u Kotlin razvoju?
Kotlin podrลพava viลกe obrazaca dizajna zahvaljujuฤi svojoj konciznoj sintaksi i funkcionalnim znaฤajkama. Najฤeลกฤi ukljuฤuju:
- Singleton uzorak: Lako se implementira uz pomoฤ
objectkljuฤne rijeฤi. - Uzorak graditelja: Postiลพe se putem imenovanih argumenata i zadanih parametara.
- Tvorniฤki uzorak: Implementirano putem prateฤih objekata.
- Uzorak promatraฤa: Pojednostavljeno koriลกtenje
Flow,LiveDataili povratne pozive. - Uzorak delegiranja: Ugraฤeno s
bykljuฤne rijeฤi.
Primjer (Singleton uzorak):
object Logger {
fun log(message: String) = println("Log: $message")
}
Logger.log("Started")
Kotlinove jeziฤne znaฤajke poput funkcija proลกirenja i zatvorenih klasa prirodno smanjuju standardne obrasce koji se nalaze u tradicionalnim obrascima dizajna.
32) Objasnite rukovanje konkurentnoลกฤu u Kotlinu.
Kotlin se prvenstveno bavi konkurentnoลกฤu putem korutine, ลกto omoguฤuje lagani, kooperativni multitasking bez blokiranja niti. Korutine su superiornije tradicionalnim nitima zbog manje upotrebe memorije i strukturiranog upravljanja ลพivotnim ciklusom.
Primjer:
runBlocking {
launch { println("Task 1") }
async { println("Task 2") }.await()
}
Prednosti u odnosu na niti:
| Faktor | Korutine | Teme |
|---|---|---|
| memorija | Lak | teลกko |
| Vrijeme stvaranja | mikrosekundi | Milisekunde |
| skalabilnost | visok | ograniฤen |
| Poniลกtenje | Strukturirani | Priruฤnik |
Kotlinov model konkurentnosti podrลพava strukturirani paralelizam, ลกto ga ฤini idealnim za Android i optereฤenja pozadinskog sustava.
33) ล to je Ktor i kako se koristi u Kotlin razvoju?
Ktor je Kotlin-nativni okvir za izgradnju asinkronih posluลพitelja i klijenata. U potpunosti je baziran na korutinama, ลกto osigurava neblokirajuฤe mreลพne operacije.
Primjer (HTTP posluลพitelj):
fun main() {
embeddedServer(Netty, port = 8080) {
routing {
get("/") { call.respondText("Hello, Ktor!") }
}
}.start(wait = true)
}
Prednosti:
- Lagan i modularan
- Potpuno voฤen korutinama
- Podrลพava WebSockets, JSON i autentifikaciju
- Idealno za mikroservise
Ktorova jednostavnost, u kombinaciji s Kotlinovom ekspresivnom sintaksom, ฤini ga moฤnom alternativom teลกkim frameworkovima poput Spring Boota za moderni backend razvoj.
34) ล to je Dependency Injection (DI) u Kotlinu i koje se biblioteke najฤeลกฤe koriste?
Ubrizgavanje ovisnosti (DI) je princip dizajna koji potiฤe labavo povezivanje (loose coupling) tako ลกto ovisnosti pruลพa izvana umjesto da ih se ฤvrsto kodira. U Kotlinu, DI poboljลกava modularnost, testnost i odrลพivost.
Popularne DI knjiลพnice:
| Knjiลพnica | Karakteristike |
|---|---|
| Koin | Lagani, Kotlin-nativni DSL |
| Bodeลพ/Balฤak | Validacija za vrijeme kompajliranja, pogodna za Android |
| Kodein | Fleksibilan i siguran za tip |
Primjer (Koin):
val appModule = module {
single { Repository() }
viewModel { MainViewModel(get()) }
}
Prednosti:
- Smanjuje standardne standarde
- Poboljลกava ponovnu upotrebu koda
- Pojednostavljuje testiranje i upravljanje ลพivotnim ciklusom
35) ล to su funkcije obustave u Kotlinu?
A funkcija obustave je posebna vrsta funkcije koja se moลพe pauzirati i nastaviti bez blokiranja niti. Moลพe se pozvati samo iz druge suspendirane funkcije ili korutine.
Primjer:
suspend fun fetchUserData(): String {
delay(1000)
return "User Data"
}
Karakteristike:
- Koristi se za dugotrajne operacije (mreลพa, baza podataka).
- Upravlja kontekstom korutine.
- Poboljลกava responzivnost u UI aplikacijama.
Prednosti:
| Faktor | Prednost |
|---|---|
| Izvoฤenje | Non-blokiranje |
| ฤitljivost | Sekvencijalni stil |
| Sigurnosni | Strukturirana konkurentnost |
36) Kako testirate korutine u Kotlinu?
Testiranje korutina zahtijeva deterministiฤko upravljanje asinkronim ponaลกanjem. kotlinx-coroutines-test Knjiลพnica nudi alate poput runTest i TestDispatcher.
Primjer:
@OptIn(ExperimentalCoroutinesApi::class)
@Test
fun testCoroutine() = runTest {
val result = fetchUserData()
assertEquals("User Data", result)
}
Najbolje prakse:
- Koristiti
runTestza strukturirano testiranje. - Zamijenite prave dispeฤere s
TestDispatcher. - Provjerite scenarije otkazivanja i iznimki.
Testiranje korutina osigurava pouzdanu asinhronu logiku i sprjeฤava greลกke u konkurentnosti u produkciji.
37) ล to je Kotlin serijalizacija i po ฤemu se razlikuje od Gson-a?
Kotlin serijalizacija je ugraฤena biblioteka za pretvaranje Kotlin objekata u JSON, ProtoBuf ili druge formate. Za razliku od Gson-a, sigurna je po tipu, brลพa i posebno dizajnirana za Kotlin.
| Faktor | Kotlin serijalizacija | Gson |
|---|---|---|
| Integracija | Izvorna podrลกka za Kotlin | Java temeljen na refleksiji |
| Izvoฤenje | Brลพa serijalizacija tijekom kompajliranja | Sporiji odraz tijekom izvoฤenja |
| Nulta sigurnost | Ugraฤen | Potrebne su napomene |
| zavisnost | Lak | teลพe |
Primjer:
@Serializable
data class User(val name: String)
val json = Json.encodeToString(User("Alice"))
Kotlin serijalizacija pruลพa snaลพnu sigurnost tipova i provjere tijekom kompajliranja, ลกto je ฤini idealnom za Kotlin-first projekte.
38) Koja je uloga Kotlin kompajlera i njegove faze?
The Kotlin kompajler (kotlinc) prevodi Kotlin kod u JVM bajtkod, JavaSkripta ili izvorne binarne datoteke. Sastoji se od nekoliko kljuฤnih faza:
| Faza | Description |
|---|---|
| gramatiฤko raลกฤlanjivanje | Pretvara izvorni kod u ABS datotekutract sintaksno stablo |
| Analiza | Provjerava sintaksu, tipove i reference |
| Srednja reprezentacija | Pretvara kod u optimizirani IR |
| Code Generacija | Emitira kod ciljne platforme (JVM, JS, Native) |
Prednosti Kotlin kompajlera:
- Pametno zakljuฤivanje o tipu
- Nulti sigurnosni provedba
- Interoperabilnost s Java
- Optimizacija bajtkoda
Razumijevanje ponaลกanja kompajlera pomaลพe programerima da piลกu uฤinkovit i predvidljiv Kotlin kod.
39) Koje se tehnike optimizacije performansi koriste u Kotlin projektima?
Optimizacija Kotlin aplikacija ukljuฤuje poboljลกanje oba uฤinkovitost izvoฤenja i upravljanje memorijom.
Kljuฤne tehnike:
- Koristiti
inlinefunkcije za smanjenje lambda optereฤenja. - Izbjegavajte nepotrebno stvaranje objekata (preferirajte nepromjenjive podatke).
- Koristiti
SequenceumjestoListza velike lanฤane operacije. - Optimizirajte koriลกtenje opsega korutine.
- Aplikacije profila koje koriste Android Profiler ili JMH za JVM aplikacije.
Primjer (koriลกtenje sekvence):
val result = generateSequence(1) { it + 1 }.take(1000).sum()
Ove optimizacije zajedno smanjuju optereฤenje prikupljanja smeฤa i poveฤavaju brzinu izvrลกavanja, ลกto je kljuฤno za skalabilne Kotlin aplikacije.
40) Koje su razlike izmeฤu Kotlina i Java u smislu performansi i filozofije dizajna?
| Aspekt | Kotlin | Java |
|---|---|---|
| Sintaksa | Saลพeto, moderno | verbalan |
| Nulta sigurnost | Ugraฤen | Odsutan |
| Korutine | Domorodac | Zahtijeva treฤu stranu |
| Funkcionalna podrลกka | jak | ograniฤen |
| Kompilacija | Neลกto sporije | Neลกto brลพe |
| Izvoฤenje | Gotovo identiฤno za vrijeme izvoฤenja | Optimizirano desetljeฤima |
Kljuฤna razlika: Kotlin naglaลกava produktivnost, sigurnost i moderne jeziฤne konstrukcije programera, Dok Java fokusiran na stabilnost i zrelost ekosustava.
U stvarnim primjenama, Kotlin ฤesto pruลพa kraฤe kodne baze, manje greลกaka i brลพi razvojni ciklusi bez ลพrtvovanja performansi na razini JVM-a.
41) ล to je Jetpack Compose i kako se razlikuje od tradicionalnih XML izgleda?
Jetpack Compose is Androidmoderni deklarativni alat za korisniฤko suฤelje napisan u Kotlinu. Za razliku od XML izgleda, Compose omoguฤuje programerima da definiraju korisniฤka suฤelja izravno u Kotlin kodu.
Primjer:
@Composable
fun Greeting(name: String) {
Text(text = "Hello, $name!")
}
Razlika izmeฤu Composea i XML-a:
| Faktor | Jetpack Compose | XML izgledi |
|---|---|---|
| Sintaksa | Deklarativno temeljeno na Kotlinu | Imperativ temeljen na XML-u |
| Upravljanje stanjem | Ugraฤeno putem State |
Zahtijeva ruฤno vezanje |
| Reus Sposobnost | visok | ograniฤen |
| Izvoฤenje | Optimizirano renderiranje | Pogledajte opฤe troลกkove inflacije |
Prednosti:
- Manje redaka koda
- Jednostavnije upravljanje stanjem korisniฤkog suฤelja
- Bolja integracija s Kotlin korutinama i Flowom
Jetpack Compose je buduฤnost Android Korisniฤko suฤelje, s fokusom na reaktivni, kompozibilni i deklarativni dizajn.
42) ล to je Kotlin Native i gdje se koristi?
Kotlin izvorni jezik kompajlira Kotlin kod u izvorne binarne datoteke (npr. za iOS, Windows, Linux) bez potrebe za virtualnim strojem. Koristi LLVM kao pozadinu za generiranje strojnog koda.
Upotrijebite sluฤajeve:
- Zajedniฤka poslovna logika za aplikacije na viลกe platformi
- Alati naredbenog retka
- Ugraฤeni sustavi
Primjer:
fun main() {
println("Running Kotlin on iOS or Linux!")
}
Prednosti:
| Faktor | Korist |
|---|---|
| Izvoฤenje | Brzina na izvornoj razini |
| Interoperabilnost | Radi s C bibliotekama |
| Pokretnost | Podrลกka na viลกe platformi |
Kotlin Native je kljuฤni dio Kotlin viลกeplatformski, ลกto omoguฤuje razvoj na viลกe platformi bez prepisivanja poslovne logike.
43) Koja je razlika izmeฤu KAPT-a i KSP-a u Kotlinu?
| Aspekt | KAPT (Alat za obradu anotacija u Kotlinu) | KSP (Obrada simbola u Kotlinu) |
|---|---|---|
| Model obrade | Koristi Java obrada anotacija (APT) | Kotlin-nativni API |
| Izvoฤenje | Sporije (Java na temelju refleksije) | Brลพe (izravan pristup simbolima) |
| Integracija | Stari alat za bodeลพ, soba | Moderna alternativa za Koin, Hilt |
| Vrijeme kompilacije | Viลกe | Kraฤe za ~50% |
Primjer:
plugins {
id("com.google.devtools.ksp") version "1.8.0"
}
Kljuฤna prednost: KSP ponude izravan pristup Kotlin sintaksnim stablima, poboljลกavajuฤi brzinu izgradnje i stabilnost. Postupno zamjenjuje KAPT u veฤini novih Kotlin projekata.
44) Kako funkcionira promjena konteksta u Kotlin korutinama?
Korutina prebacivanje konteksta odreฤuje gdje i kako se dogaฤa izvrลกavanje korutine. Njime upravlja dispeฤera, koji definiraju okruลพenje za navoje.
Uobiฤajeni dispeฤeri:
| Dispeฤer | Description | Upotreba |
|---|---|---|
Dispatchers.Main |
Radi na niti korisniฤkog suฤelja | Android Aลพuriranja suฤelja |
Dispatchers.IO |
Optimizirano za I/O zadatke | Mreลพa, disk |
Dispatchers.Default |
Zadaci koji intenzivno koriste CPU | raฤunanje |
Dispatchers.Unconfined |
Poฤinje u trenutnoj temi | Lagani zadaci |
Primjer:
launch(Dispatchers.IO) { fetchData() }
Prednosti:
- Sprjeฤava blokiranje korisniฤkog suฤelja
- Uฤinkovito koristi sistemske niti
- Podrลพava strukturiranu konkurentnost
Uฤinkovito koriลกtenje dispeฤera kljuฤno je za performanse i odziv u Android aplikacije.
45) Objasnite sigurnost niti u Kotlin korutinama.
Kotlin korutine su nije inherentno siguran za koriลกtenje u viลกe niti โ sigurnost niti ovisi o tome kako se dijeljenim resursima upravlja u kontekstima korutina.
Strategije za sigurnost niti:
- Koristiti
MutexorSemaphoreza sinkronizaciju. - preferiraju nepromjenjivi podaci strukture.
- Koristiti
withContext(Dispatchers.IO)za ograniฤen pristup.
Primjer:
val mutex = Mutex()
launch {
mutex.withLock { counter++ }
}
Prednosti:
- Sprjeฤava uvjete utrke
- Omoguฤuje siguran istovremeni pristup
- Odrลพava integritet podataka
Ispravna sinkronizacija osigurava predvidljivo ponaลกanje korutina u viลกenitnim okruลพenjima.
46) Koji su glavni arhitektonski obrasci koriลกteni u Kotlinu Android projekti?
Tri najpopularnija uzorka su:
| Uzorak | Description | Primjer upotrebe |
|---|---|---|
| MVVM (Model-Prikaz-PrikazModela) | Odvajanje korisniฤkog suฤelja i logike pomoฤu LiveData/StateFlowa | Jetpack ViewModel |
| MVI (Model-Prikaz-Namjera) | Jednosmjerni protok podataka, dobar za Compose | Aplikacije s reaktivnim korisniฤkim suฤeljem |
| bjelica Architektura | Slojevito odvajanje (domena, podaci, korisniฤko suฤelje) | Velike aplikacije |
Primjer (MVVM):
class MainViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
Prednosti:
- Poboljลกava testabilnost i modularnost
- Smanjuje spajanje
- Usklaฤuje se s modernim Android najbolje prakse
47) ล to su StateFlow i SharedFlow u Kotlinu?
Obojica su hladni asinhroni tokovi podataka izgraฤen na Kotlin Flowu, ali dizajniran za specifiฤne svrhe.
| svojstvo | StateFlow | SharedFlow |
|---|---|---|
| Zadrลพavanje podataka | Zadrลพava posljednju vrijednost | Ne pohranjuje vrijednost |
| Zadano ponaลกanje | Jedan pretplatnik | Viลกe pretplatnika |
| Koristite sluฤaj | Stanje korisniฤkog suฤelja | Emitiranje dogaฤaja |
Primjer:
private val _state = MutableStateFlow("Loading")
val state: StateFlow<String> = _state
Prednosti:
- Dijeljenje podataka svjesno ลพivotnog ciklusa
- Pojednostavljeno upravljanje reaktivnim stanjem
- Idealno za Jetpack Compose i MVVM
48) Kako uฤinkovito obraฤujete API pozive u Kotlinu koristeฤi Coroutines i Retrofit?
Retrofit se besprijekorno integrira s Kotlin korutinama za asinhrone API pozive.
Primjer:
interface ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}
Upotreba:
viewModelScope.launch {
try {
val users = api.getUsers()
_state.value = users
} catch (e: Exception) {
handleError(e)
}
}
Prednosti:
- Pojednostavljuje rukovanje povratnim pozivima
- Omoguฤuje strukturiranu konkurentnost
- Smanjuje standardne standarde
Koriลกtenje korutina s Retrofitom poboljลกava jasnoฤu koda, testabilnost i performanse u modernim Android arhitekture.
49) Koje su Kotlinove napredne optimizacije kompajlera i inline klase?
Kotlinov kompajler izvodi viลกe optimizacija, ukljuฤujuฤi pametno zakljuฤivanje o tipu, uklanjanje mrtvog kodai ugraฤena klasa optimizacija.
Ugraฤene klase dopusti prelamanjeping primitivne vrijednosti bez optereฤenja tijekom izvoฤenja.
Primjer:
@JvmInline value class UserId(val id: String)
Prednosti:
| Faktor | Description |
|---|---|
| Izvoฤenje | Izbjegava stvaranje objekata |
| Vrsta Sigurnost | Sprjeฤava nevaลพeฤe dodjele |
| Interoperabilnost | Radi besprijekorno s JVM-om |
Ugraฤene klase se ลกiroko koriste u API-jima sigurnim za tip i dizajnu voฤenom domenom kako bi se poboljลกala uฤinkovitost izvoฤenja.
50) Koji su najnoviji trendovi i novosti u Kotlinu (od 2025.)?
Od 2025. godine, Kotlin se znaฤajno razvio izvan Android, usredotoฤujuฤi se na razvoj, performanse i integracija umjetne inteligencije za viลกe platformi.
Najnoviji trendovi:
- Kotlin 2.0 IR kompajler: Brลพi, ujedinjeni backend za sve ciljeve.
- Viลกeplatformska 2.0: Poboljลกanja stabilne interoperabilnosti iOS-a.
- Sastavi za viลกe platformi: Ujedinjenje korisniฤkog suฤelja Android, stolna raฤunala i web.
- Usvajanje KSP-a: Zamjena KAPT-a u cijeloj industriji.
- Kotlin WASM (webAssembly): Izvorno dovoฤenje Kotlina u preglednike.
Udarac: Kotlin nastavlja uฤvrลกฤivati โโsvoju ulogu kao univerzalni, viลกeplatformski jezik koji naglaลกava iskustvo programera, sigurnost i visoke performanse u svim ekosustavima.
๐ Najฤeลกฤa pitanja za intervju za Kotlin sa stvarnim scenarijima i strateลกkim odgovorima
U nastavku je deset profesionalno relevantnih Kotlin pitanja za intervju, koja obuhvaฤaju kategorije temeljene na znanju, ponaลกanju i situaciji. Svako pitanje ukljuฤuje ono ลกto ispitivaฤ traลพi i snaลพan primjer odgovora. Potrebne fraze koriลกtene su toฤno jednom svaka.
1) Koje su kljuฤne razlike izmeฤu Kotlina i Java?
Oฤekivano od kandidata: Pokazati razumijevanje znaฤajki, poboljลกanja i kompatibilnosti modernog jezika.
Primjer odgovora: โKotlin se razlikuje od Java putem znaฤajki kao ลกto su null sigurnost, funkcije proลกirenja, korutine i konciznija sintaksa. Ova poboljลกanja omoguฤuju programerima da piลกu ฤiลกฤi i sigurniji kod uz odrลพavanje pune interoperabilnosti s Java".
2) Kako Kotlin korutine pomaลพu u asinhronom programiranju?
Oฤekivano od kandidata: Pokaลพite znanje o modelima konkurentnosti i zaลกto su korutine vaลพne.
Primjer odgovora: โKotlinove korutine pojednostavljuju asinhrone zadatke omoguฤujuฤi programerima pisanje neblokirajuฤeg koda u sekvencijalnom stilu. Uฤinkovito upravljaju konkurentnoลกฤu koriลกtenjem suspend funkcija i laganih niti, ลกto pomaลพe u poboljลกanju performansi i ฤitljivosti aplikacije.โ
3) Moลพete li objasniti Kotlinov pristup null sigurnosti?
Oฤekivano od kandidata: Pokaลพite majstorstvo osnovnog Kotlin koncepta koji rjeลกava uobiฤajene probleme Java pitanja.
Primjer odgovora: โKotlin provodi null sigurnost razlikovanjem null-popustivih i nenull-popustivih tipova tijekom kompajliranja. To pomaลพe u izbjegavanju NullPointerExceptionsa zahtijevajuฤi eksplicitno rukovanje potencijalno null vrijednostima putem sigurnih poziva, Elvis operatora ili null provjera.โ
4) Opiลกite situaciju u kojoj ste morali brzo nauฤiti novu tehnologiju. Kako ste tome pristupili?
Oฤekivano od kandidata: Pokaลพite prilagodljivost i spremnost na uฤenje.
Primjer odgovora: โU svojoj prethodnoj ulozi brzo sam usvojio nove alate raลกฤlanjivanjem procesa uฤenja na strukturirane korake, pregledom sluลพbene dokumentacije i stvaranjem malih vjeลพbenih projekata. To mi je omoguฤilo da izgradim samopouzdanje i uฤinkovito primijenim novu tehnologiju.โ
5) Kako osiguravate kvalitetu koda prilikom rada na Kotlin projektu?
Oฤekivano od kandidata: Pokaลพite predanost odrลพavanju i ฤistom kodu.
Primjer odgovora: โKvalitet koda osiguravam slijedeฤi Kotlinove konvencije kodiranja, koristeฤi alate za statiฤku analizu poput Detekt-a, piลกuฤi jediniฤne testove i provodeฤi temeljite preglede koda. Ove prakse pomaลพu u odrลพavanju dosljednosti i pouzdanosti tijekom cijelog projekta.โ
6) Recite mi o izazovnom problemu koji ste rijeลกili radeฤi s Kotlinom.
Oฤekivano od kandidata: Sposobnost suoฤavanja sa sloลพenoลกฤu i rjeลกavanja problema.
Primjer odgovora: โNa prethodnoj poziciji naiลกao sam na izazovan problem konkurentnosti uzrokovan nepravilnom upotrebom korutina. Rijeลกio sam ga restrukturiranjem opsega korutina i dodavanjem odgovarajuฤeg rukovanja iznimkama, ลกto je eliminiralo nedosljedno ponaลกanje i poboljลกalo stabilnost.โ
7) Kako biste rijeลกili situaciju u kojoj se vaลก tim ne slaลพe oko primjene nove Kotlin biblioteke?
Oฤekivano od kandidata: Rjeลกavanje sukoba, komunikacija i donoลกenje odluka.
Primjer odgovora: โOmoguฤio bih otvorenu raspravu u kojoj ฤlanovi tima mogu predstaviti prednosti i rizike usvajanja biblioteke. Potaknuo bih pristup temeljen na podacima pregledom dokumentacije, metrika performansi i dugoroฤne kompatibilnosti prije postizanja konsenzusa.โ
8) Kako uspijevate u kratkim rokovima prilikom izrade aplikacija temeljenih na Kotlinu?
Oฤekivano od kandidata: Vjeลกtine upravljanja vremenom i odreฤivanja prioriteta.
Primjer odgovora: โNa prethodnom poslu upravljao sam kratkim rokovima tako ลกto sam posao podijelio na zadatke s prioritetima, rano komunicirao sa zainteresiranim stranama i osiguravao da se najvaลพnije znaฤajke prvo isporuฤe. Ovaj pristup pomogao je u odrลพavanju brzine i kvalitete.โ
9) Koja je uloga funkcija proลกirenja u Kotlinu?
Oฤekivano od kandidata: Razumijevanje znaฤajki Kotlinovog ekspresivnog jezika.
Primjer odgovora: โFunkcije proลกirenja omoguฤuju programerima dodavanje novih funkcionalnosti postojeฤim klasama bez mijenjanja izvornog koda. To pomaลพe u odrลพavanju fleksibilnosti kodne baze i poboljลกava ฤitljivost omoguฤujuฤi prirodnije pozive metoda.โ
10) Kako ste koristili Kotlin za poboljลกanje performansi ili uฤinkovitosti u aplikaciji?
Oฤekivano od kandidata: Iskustvo u primjeni Kotlina na smislene naฤine u stvarnom svijetu.
Primjer odgovora: โU svojoj posljednjoj ulozi poboljลกao sam performanse refaktoriranjem mreลพnih poziva kako bih koristio Kotlin korutine umjesto tradicionalnih povratnih poziva. To je smanjilo optereฤenje nitima, poveฤalo odzivnost i pojednostavilo ukupnu strukturu koda.โ
