It's a bit of a slog but it's not that hard if you're motivated to get a new job. My girlfriend has gone back to school for nursing and she works a shit load harder than me all the time, while I just do a month or so of ~ten hours a week of prep for every round of interviews I do.
I've done hundreds of tech interviews over my career, and especially in recent years (now that companies are trying new things), it's completely random.
Some will do "Cracking the coding interview" type shit, some will do code reviews, some will give you a take home thing you have to present, some will do pair coding. Some do algorithms only, some do design discussions only, and so on and so forth.
So any prep I do will be a shot in the dark and 99% of the time I'll have to do something I did not prep for. So I don't bother trying.
Notable exception is my current job, which is a big tech co with a semi well known interview process (not as infamous as google or facebook, but still), and they gave me a fair amount of info up front. I also -really really really- wanted to work there because the team I wanted to work for did things no one else does. So i bit the bullet and studied/practice.
That was literally the first time (and probably last) time I did.
I totally agree that it's a shot in the dark, though.
To be sure, some people take it too far. The "four months" figure does not come from me.
Curious if you have any examples. I have really hard time motivating myself to study same old ds and algorithms too .
Solving those problems gave me a reason to touch lots of parts of the language and was also intellectually interesting. See, for example: https://github.com/brianquinlan/learn-rust/tree/master/i18n
> Some will do "Cracking the coding interview" type shit, some will do code reviews, some will give you a take home thing you have to present, some will do pair coding. Some do algorithms only, some do design discussions only, and so on and so forth.
"Cracking the Coding Interview" and algorithms are the only things you mention that you don't spend all day doing at your day job. Spending time studying algorithm questions will be hugely beneficial for some interviews. For others, they'll quiz you on stuff you (should) already know.
The way I see it, no experienced candidate should have to do "interview prep" because the work that he/she does on the job should be more relevant to his/her ability to do the job than any form of interview prep.
To make an extreme example, John Carmack's work time is probably better allocated actually doing work than brushing up on "Cracking the Coding Interview" problems. In an ideal world a software engineer's candidacy for a job would be based strictly on his ability to do the job, not academic trivia questions.
I think that if you are working on some moderately challenging and varied personal projects, that's probably also a great way to prepare.
I myself have been working through cracking the coding interview in an attempt to migrate from upstate new york to the bay area. Maybe I wouldn't bother with positions that demanded white boarding if I already had a position over there and could be selective but maybe not. It kind of feels like it's all part of the game at this point.