This. I’m not helped by being largely self-taught and math illiterate so I never really picked up a knack for algorithms. I understand how things like BSTs and sort algorithms work but fuck me I would be screwed if I ever needed to implement one. I mean I’d figure it out sooner or later but it wouldn’t be pretty. Luckily these are problems that have long since been solved by people far smarter than me so I don’t need to do it myself unless I have a damn good reason to do so (which I wouldn’t unless I just didn’t know any better). I’d certainly fail that question.
“What is an abstract class and why do you need it” I could answer no problem but I also spend most of my time programming in object oriented languages and have written several SDKs where abstract classes are an important concept. If I spent my time doing low level systems programming I would never give two shits about abstract classes.
Software engineering is a hugely diverse field with many different areas of expertise. You have people that are great at things like kernels, file systems, encryption, network services, user interfaces, security, tools, compilers, or numerous other areas. These all require very different skill sets and mindsets and I don’t see a lot of overlap.