Either I’m a bad student or you have an inherent ability that I don’t have. I’ve interviewed at all of those companies and you need a lot more than a weekend to succeed - even my friends with offers took more time to study than that!
Note that it doesn't just take passing grades and a single weekend.
Gaining deep understanding is the trick, and it comes from constantly being exposed to CS-like problems.
This doesn't need to become something intensive like studying before exams, in fact having a deadline might be really bad for it as you won't think about each thing enough time and the pressure makes you less prone to wonder about the problems.
It just needs to get you passively thinking about a problem, mostly abusing on your "background brain-threads" and taking the time to make yourself deeper questions around the problem and the data-structures used, like which problems are similar? which are the properties of the problem that enabled some approach? what's key for the DS to be useful on that problem? are there lower/upper bounds to the solution? why something doesn't work?.
Some quick research later on the problem might show you a better way, and then the right question to ask is what did you missed to come up with that, did you ignored some property of the problem that the "right" approach exploited? was it just something you didn't knew about?
Going for those kind of questions will make you better at analyzing problems and come up with some strategy to solve them, and when you have that clear getting it written shouldn't take much effort.