The interesting premise of these types of problems is that if one can solve low-level problems with low-level languages while optimizing for performance that this is the key trait of "good engineering."
I wonder if this is based on research. One might speculate that the performance-centric talents that are essential to low-level coding (filesystems, OSs, database engines) may not be the same set of skills that apply to high-level open-ended problem solving (such as figuring out a realistic algorithm to power a dating site, acknowledging human nature's role, or architecting an AWS competitor, etc).
These don't seem like paths to follow because the steps don't build on one-another. E.g., the Foundations sequence:
1. Former Coding Interview Question: Find longest word in dictionary that is a subsequence of a given string
2. Using strings in Java (Java For Beginners: Strings, String Functions & Chars)
3. Using arrays in Java (Java For Beginners: Arrays)
13. Java Object References
14. Sort array problem (considerably easier than the first problem although hash tables come after it)
Feels like course for fresh graduates. No Software Design principles, OOD/OOA, CQRS, DDD or any other related things.