Skip to content
GrindLoop: Android & iOS Interview Prep
  • Newsletter
  • Cookie Policy

kotlin

String.format Locale Bug: Why “1234,50” Throws NumberFormatException on Android

October 9, 2026 by Arsam
Calculator on euro banknotes, illustrating a String.format locale bug in an Android checkout amount

A String.format locale bug turns 1234.50 into 1234,50 or Arabic digits, so toDouble() throws NumberFormatException. Runnable repro, fix and interview answer.

Categories Bug-Squash Interview, Java Interview Tags android, debugging-interview, interview-prep, kotlin, localization, technical-interview Leave a comment

Does Taking a Hint in a Coding Interview Count Against You?

October 9, 2026 by Hass
Two light bulbs on a table, one lit, for a post on taking a hint in a coding interview

A hint in a coding interview costs points by its size. How the hint ladder works, when to ask for help and a full script for asking and recovering.

Categories Interview Strategy Tags android, coding-interview, evaluation-signals, hiring-process, interview-prep, kotlin, live-coding, technical-interview Leave a comment

Kotlin Mutex withLock Deadlock: Why a Nested withLock Hangs Forever

October 8, 2026 by Arsam
Rusty padlock hanging from a chain, illustrating a Mutex withLock deadlock in Kotlin coroutines

A Mutex withLock deadlock comes from a non-reentrant Mutex locked twice, and it hangs with no ANR or exception. A runnable repro, the fix and wrong answers.

Categories Bug-Squash Interview, Coroutines Interview Tags android, concurrency, coroutines, interview-prep, kotlin, technical-interview Leave a comment

LaunchedEffect Stale Value: Why LaunchedEffect(Unit) Calls an Old Callback

October 7, 2026 by Arsam
Hourglass running out, like a question timer hit by a LaunchedEffect stale value bug

A LaunchedEffect stale value comes from LaunchedEffect(Unit) keeping its first lambda and a captured String. Why keying on the callback fails, and the fix.

Categories Bug-Squash Interview, Kotlin Interview Tags android, interview-prep, jetpack-compose, kotlin, side-effects, technical-interview Leave a comment

StateFlow Not Emitting When You Add to a MutableList Inside update {}

October 6, 2026 by Arsam
Miniature shopping cart and paper bag, illustrating a StateFlow not emitting when a cart item is added

StateFlow not emitting after you add to a MutableList? copy() shares the list so states compare equal, and update {} retries repeat the add. Repro and fix.

Categories Bug-Squash Interview, Coroutines Interview Tags android, concurrency, coroutines, interview-prep, kotlin, stateflow, technical-interview Leave a comment

Why a Non-Null Kotlin Property Is Null When the Base Class Init Calls an Open Function

October 5, 2026 by Arsam
Syntax-highlighted code on a dark screen, illustrating why a non-null Kotlin property is null during base class init

A non-null Kotlin property is null when a base class init calls an open function. Why the subclass fields are unset, why it compiles, and the fix.

Categories Bug-Squash Interview, OOP/SOLID Interview Tags android, interview-prep, kotlin, null-safety, oop-solid, technical-interview Leave a comment

Why Reading the Response Body in an OkHttp Interceptor Throws IllegalStateException: closed

October 4, 2026 by Arsam
Close-up of exception-handling code on a screen, illustrating IllegalStateException: closed in an OkHttp interceptor

Reading the response body in an OkHttp interceptor causes IllegalStateException: closed. The two stacked causes, the peekBody fix and the interview answer.

Categories Bug-Squash Interview, Networking Interview Tags android, interview-prep, kotlin, networking, okhttp, technical-interview Leave a comment

Why a Private Constructor Doesn’t Stop Kotlin Data Class copy()

October 3, 2026 by Arsam
Padlock on a blue metal door, illustrating how data class copy gets around a private constructor

A private constructor doesn’t stop the Kotlin data class copy() from creating invalid objects. The two causes, what Kotlin 2.5 changes and the fix.

Categories Bug-Squash Interview, Kotlin Interview Tags android, code-review, data-class, interview-prep, kotlin, technical-interview Leave a comment

Why a Listener That Removes Itself Throws ConcurrentModificationException

October 2, 2026 by Arsam
For loop in syntax-highlighted code on a dark screen, illustrating a listener loop that throws ConcurrentModificationException

Unregistering a listener inside its own callback throws ConcurrentModificationException or skips listeners. Why, JVM vs Android, and the snapshot fix.

Categories Bug-Squash Interview, Java Interview Tags android, interview-prep, java-collections, kotlin, live-coding, technical-interview Leave a comment

Why Offline Sync Duplicates Records After a Retry

October 1, 2026 by Arsam
A smartphone lying face up on a white table, illustrating offline sync duplicates after a retry

Offline sync duplicates records when a retried POST can’t prove it’s a retry. The two stacked bugs, a runnable Kotlin repro, the fix and the interview answer.

Categories Networking Interview, System Design Interview Tags android, interview-prep, kotlin, networking, offline-first, senior-interview, system-design, technical-interview, workmanager Leave a comment
Older posts
Page1 Page2 Page3 Next →

Follow GrindLoop

Recent Posts

  • String.format Locale Bug: Why “1234,50” Throws NumberFormatException on Android
  • Does Taking a Hint in a Coding Interview Count Against You?
  • Why Your “Why Do You Want to Work Here” Answer Could Be About Any Company
  • Kotlin Mutex withLock Deadlock: Why a Nested withLock Hangs Forever
  • How to Reapply After a Failed Interview When the Recruiter Gives No Feedback

Recent Comments

  1. Does Taking a Hint in a Coding Interview Count Against You? on What the Algorithm Round Actually Tests in Android Interviews
  2. Why Your "Why Do You Want to Work Here" Answer Could Be About Any Company on Why Sounding Too Rehearsed Can Now Hurt You in the Behavioral Round
  3. Kotlin Mutex withLock Deadlock: Why a Nested withLock Hangs Forever on Why Fast Scrolling Duplicates Items in Your Paginated List
  4. How to Reapply After a Failed Interview When the Recruiter Gives No Feedback on What the Senior Android System-Design Round Actually Tests
  5. Tell Me About a Time You Mentored Someone: Answering Without a Formal Mentee on Your Behavioral Story Is Being Scored Against a Level You Didn’t Pick
© 2026 GrindLoop: Android & iOS Interview Prep • Built with GeneratePress
Manage Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
View preferences
  • {title}
  • {title}
  • {title}