I was in a similar situation 3 years ago. Like other people said, I'd focus on growth-stage startups (Stripe, Checkr, Airbnb, Opendoor, etc). I found their interviews more practical and approachable than Facebook, Google, etc. Most of the places I interviewed had me writing and running real code on my own computer.
I spent about a month prepping with:
* Cracking the Coding Interview
* https://www.interviewcake.com: curated set of ~50 questions with excellent step-by-step hints that don't immediately spoil the whole problem. Well worth the $250 — I didn't do any Leetcode-style problems aside from these.
* https://interviewing.io: Real, anonymous phone screens. This was amazing for me because I hadn't done a technical interview in 4 years and going through a real interview with a real person is totally different than practice problems.
Companies in SF will cover your costs to interview and usually will give you a relocation bonus as well, so don't discount moving down here :)
"You are given two eggs, and access to a 100-storey building. Both eggs are identical. The aim is to find out the highest floor from which an egg will not break when dropped out of a window from that floor. If an egg is dropped and does not break, it is undamaged and can be dropped again. However, once an egg is broken, that’s it for that egg.
If an egg breaks when dropped from floor n, then it would also have broken from any floor above that. If an egg survives a fall, then it will survive any fall shorter than that.
The question is: What strategy should you adopt to minimize the number egg drops it takes to find the solution?. (And what is the worst case for the number of drops it will take?)"