Discussions about Caching Library.
First of all, thank you for your job! It's a great base for mobile system design interviews.
But, I have some suggestions/comments. I hope these things will help you. Let's go!
When I tried to design this library (before watching your solution sure) I've thought about the next picture:

Let me describe the main points:
- Cache - is a library with which a user interacts
- CacheDispatcher - is the same you've described in your article
- Job, Worker - the same. Honestly, I absolutely agree with your approach.
- CacheRepository - the first difference. Pattern "Repository" is one of the most recognizable patterns in mobile development when the interaction with the data layer is being designed. I suggest keeping this pattern because
CacheRepository hides the implementation of a cache.
- CacheHeapClient, CacheFSClient. Our requirements contain work with heap and FS. So, it's better to define separate entities for them that will hide the implementation. Also, I think about the following common advice: "When you design a system, pay an attention to keywords like different features(use-cases), policies, services, filesystem, cache and etc. It's better to show these entities on your scheme even to keep SOLID principle".
- CacheJournal is the same as your concept. Also, we can highlight, that DB is a good choice to be a Single Source of True and a synchronization manager. Here, we can continue with a statement that SQLite (and other DB) is optimized to work in a concurrent mode following ACID principles and so on.
- EvictionPolicyService is working with a Journal and Clients (Heap, FS).
- The last. I highlighted that we work with FS, DB, and others only through wrappers that give the possibility to change implementation further.
Discussions about Caching Library.
First of all, thank you for your job! It's a great base for mobile system design interviews.
But, I have some suggestions/comments. I hope these things will help you. Let's go!
When I tried to design this library (before watching your solution sure) I've thought about the next picture:

Let me describe the main points:
CacheRepositoryhides the implementation of a cache.