This is very good advice. The only problem with it is - he will be spending enormous amount of time practicing, preparing for interviews, and end up learning stuff that he might never use in real life. Unless he gets a dream job, I don't know if that is a great use of his time.
The other option is to look for companies that put emphasis on past projects, open source contributions, take home problems etc and apply to those positions. At least this way, he can spend time making things he is interested in.
One would think so, obviously. Most people don't need to work with BSTs on a regular basis.
However, once you start practicing, a funny thing happens: assuming you're doing it the right way, with the right mindset, you start to enjoy doing those problems. Your intuition hardens and a certain level of system-design clarity sets in by seeing similar problems across topics.
In some ways, that's what I'm looking for as a hiring manager, by definition: do you enjoy a problem that is new to you, but still up your alley? Do you have an urge for efficiency? Can you express your thought process and work with me to build a solution? The problems asked in the current interview process are good enough to tease these things out.
Take home assignments and OSS contributions are also another credible method of interviewing, and has its own pros and cons. To see a good treatise on different ways of interviewing, see this: http://www.gayle.com/blog/2015/6/10/developer-interviews-are...
The other option is to look for companies that put emphasis on past projects, open source contributions, take home problems etc and apply to those positions. At least this way, he can spend time making things he is interested in.