Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Kotlin
Kotlinhard

`tailrec`: co robi i kiedy Kotlin może zoptymalizować rekurencję?

Tagi
#kotlin#tailrec#recursion#performance
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

`tailrec` prosi kompilator o zamianę rekurencji ogonowej na pętlę (bez rosnącego stosu wywołań). Działa tylko dla bezpośredniej rekurencji, gdzie wywołanie rekurencyjne jest ostatnią operacją (tail position). Jeśli funkcja nie jest naprawdę ogonowa, kompilator nie zastosuje optymalizacji.

Odpowiedź zaawansowana

Głębiej

Rozwinięcie krótkiej odpowiedzi — co zwykle ma znaczenie w praktyce:

  • Kontekst (tagi): kotlin, tailrec, recursion, performance
  • JVM: pamięć (heap/stack), GC i co wpływa na latency.
  • Kontrakty: equals/hashCode/toString, mutowalność i konsekwencje.
  • Wydajność: boxing, alokacje, kolekcje, inlining.
  • Wytłumacz "dlaczego", nie tylko "co" (intuicja + konsekwencje).
  • Trade-offy: co zyskujesz i co tracisz (czas, pamięć, złożoność, ryzyko).
  • Edge-case’y: puste dane, duże dane, błędne dane, współbieżność.

Przykłady

Krótki przykład (szablon do wyjaśniania):

// Example: discuss trade-offs for "`tailrec`:-co-robi-i-kiedy-kotlin-może-zoptymali"
function explain() {
  // Start from the core idea:
  // `tailrec` prosi kompilator o zamianę rekurencji ogonowej na pętlę (bez rosnącego stosu wyw
}

Typowe pułapki

  • Zbyt ogólna odpowiedź (brak konkretów, brak przykładów).
  • Brak rozróżnienia między "średnio" a "najgorzej" (np. złożoność).
  • Pomijanie ograniczeń: pamięć, współbieżność, koszty sieci/dysku.

Pytania uzupełniające na rozmowie

Powiązane pytania

Kotlin
coroutineScope vs supervisorScope: jak obsługują błędy?
#kotlin#coroutines#supervisor
Kotlin
StateFlow vs SharedFlow: jaka jest różnica?
#kotlin#stateflow#sharedflow
Kotlin
Co robi `typealias` i czego nie robi?
#kotlin#typealias
Kiedy zastosował(a)byś alternatywę i dlaczego?
  • Jakie są typowe problemy w produkcji i jak je diagnozować?
  • Jak byś przetestował(a) edge-case’y?
  • #types
    Kotlin
    Przeciążanie operatorów: co umożliwia `operator` i jaka jest pułapka?
    #kotlin#operator#overloading
    Kotlin
    Delegowane właściwości (`by`): jaki problem rozwiązują?
    #kotlin#delegation#properties
    Kotlin
    List vs MutableList w Kotlinie: jaka jest różnica?
    #kotlin#collections#immutability