They ask: "What is R?"
R is a class the build system generates automatically — it's not something you write. Every resource under res/ (a layout, a string, a drawable, an ID) gets a matching integer constant in R, organized into nested classes by type: R.layout.activity_main, R.string.app_name, R.id.submit_button. That's what lets code reference resources by a compile-time-checked name instead of a hand-typed string or magic number — a typo in R.string.wlecome fails the build, where a typo in a raw string key would just silently fail to find the resource at runtime.
setContentView(R.layout.activity_main)
val name = getString(R.string.app_name)
Because R is regenerated from the actual res/ contents on every build, renaming or deleting a resource shows up immediately as a compile error everywhere it's referenced — that traceability is the entire reason resources go through R instead of raw strings.
Say it: "R is generated from res/ at build time, so every resource reference is compile-time checked — rename or delete a resource and every reference to it fails the build instead of silently breaking at runtime."
Red flag: Hardcoding a resource's raw string path or numeric ID instead of referencing R. That throws away the entire compile-time safety net R exists to provide.