There are 4 dimensions of software engineering to master
1) The elementary particles: pass by ref, pass by val, garbage collection, stack space vs heap space, thread management, locks, reentrant locks, deadlocks. This is where we question how is it possible that the world of software engineering can exist and where it came from. Was there a big bang ?
2) The algorithms: BFS, DFS, Union Find, Recursion Trees, Graphs, Sliding windows, etc. These most easily demonstrate STEM-intelligence and the reason they are favored by FANGs. These are pure brain exercises.
3) The brick laying: writing your code so it's not a house of cards by making use of OOP design patterns such as factory, abstract factory, adapter, facade, observer, reactor, and incorporating SOLID principles into every line of your code. So it is defensive, extendible, readable, and robust. There's little intelligence needed here but instead lots of practice and mimicking how others do it.
4) The architecture. In an internet world, it means designing code so it can run and store data across millions of commodity machines and resistant to failure of any of those machines and scale it up. This is the hardest part and requires decades of experience. If you cannot master this you'll never make E5 at FB.
Mastering those 4 dimensions, and you shall be victorious in every interview. A weakness in any one dimension and you will perish before leaving the gate.