khangsile
With regards to timeline, I think I started preparing for my first phone interview a week early. The first couple of days were definitely slow, but with 3 days left, I studied for a couple hours each day before. For my first onsite, I found out about oj.leetcode.com about two weeks before and just did those problems almost non-stop for the two weeks leading up. Five days before the onsite, I rounded up some friends and we started doing whiteboard problems for a couple hours each day.
I guess preparation time varies by person. I did a little bit of competitive programming before this, so I would say I had a little bit of a head start. However, before this, I probably couldn't program a binary search off the top of my head, or approach dynamic programming problems, but now, I can probably handle a decent amount of algorithmimc interview problems. I can't say I'm pro, but I'm apparently good enough.
Aside from that, I don't think it's a good idea to look at an interview as a power struggle. It's not a you vs. them situation, but rather you're both kind of gauging if you want to work together. The first part is kind of where they determine if they want to work with you (gauging your skill) while the second part (your questions and beyond) is kind of where you determine if you want to work with them.
As far as things go, unless you're well proven, people are probably going to need to gauge your skill in some way. Don't get too nervous about the algorithmic questions. Just think of them as a type of puzzle just with much higher stakes. For some practice, if you're not familiar with this website: oj.leetcode.com.
Disclosure: I don't have much experience interviewing. That's just my take on how to look at it.