I went to University with someone who aced every written CS exam in 'software patterns', 'user experience', 'computer architecture' and the like who landed a job at Google as a software engineer straight out of uni.
They couldn't complete a single practical lab exercise without help from peers or lecturers throughout the entire time I knew them.
I used to be like the person you're describing.
I had such a hard time with actual software development, until a few years in, when all the theoretical knowledge "clicked".
Then I was able to always make consistent gains in dev skills from the os level to higher level software architecture.
I think it was because I could understand the core abstractions from the higher level ones. Though I also might be an outlier, because even out of school I study a few hours a night.
Sounds exactly like the guy I knew. In writing, he knew it all, but had no reference to actually apply it. It sounds like many CS graduates, myself included; without applying yourself in a non-academic setting it's quite hard to be a good developer, because the projects simply aren't big enough or haven't had the man-hours applied.
It makes me wonder whether these hiring processes are built for people leaving university, and not necessarily for those that have spent a number of years as software developers. It's a good way to get those that "know" their theory, but it sounds like a terrible way to hire someone who is expected to be not just a competent developer, but talented.
They couldn't complete a single practical lab exercise without help from peers or lecturers throughout the entire time I knew them.
They didn't make it past their trial period.