Start here. This is the direct spoken answer to practice first.
Why this question matters
Frontend caching makes apps feel fast, but stale data bugs can make users distrust the product. The interview signal is knowing when cache is helpful and when it must yield to server truth.
I would cache data that is reused across components or routes, expensive to fetch, or safe to keep briefly stale. I build cache keys from the inputs that change the result, such as user, tenant, filters, sort, and page cursor. After mutations, I update or invalidate the affected cache entries. The server remains the source of truth, so the UI reconciles with the response or refetches when correctness matters.