I've noticed many posts focus on interview questions. Instead, I'll focus on how to better prepare for interviews.
Review "Cracking the Coding Interview" thoroughly. You don't need to solve every problem, but you should be able to propose multiple approaches and implement basic solutions (recursion, queue iteration, BFS, DFS, binary search, etc.).
Practice with Glassdoor example interview questions. On at least two occasions, I encountered the exact same questions from Glassdoor in my actual interviews.
Request feedback from your recruiter after each interview. This is how I learned about dissatisfaction with my theoretical knowledge after a preliminary interview and complaints about my coding skills in subsequent main interviews.
Write flawless code for Google interviews. While code won't be overly long or complex, you must train beforehand and invest time during the interview to ensure your code is bug-free.
Master algorithm theory. Be familiar with searching, sorting, BFS, DFS, dynamic programming, and memoization. I recommend being able to implement each without hesitation. You also need to understand hashing, hash map implementation, and be able to code them yourself.
Understand interviewer impartiality. Interviewers are generally not biased. Their goal is to accurately represent you to the hiring committee. Difficult or numerous questions are meant to let you showcase your potential, not to pressure or fail you. Interviews that end precisely on time should be a concern. They may indicate either that you were flawless or that you weren't worth further time.
Pace yourself. Even if you start interviews fresh and focused, by the fifth hour, you'll likely be tired. The last interview could cost you the job offer. Conserve energy for it.
Aim for perfection. Despite what you might be told, you generally need to be perfect in all interviews to pass. The preliminary interview doesn't reflect the difficulty of the main interview day; it might indicate the question level, but the bar for passing is much lower.
Don't assume expertise negates high expectations. If you have significant experience in a field, Google's expectations for you in that area will be much higher.
Avoid memorizing answers. Even if you know an answer and convince the interviewer, they can ask follow-up questions you can't anticipate to gauge your true understanding.
A bit about my personal process: I had a preliminary on-site interview where I was asked a medium recursion question, which I solved and coded. This was followed by a hard follow-up question (also coded) and several optimization questions. After passing, I received feedback that my logic and intuition were impressive, but my knowledge of specific algorithms was lacking.
I was then invited to a day of five back-to-back interviews with a one-hour lunch break. The day included three logic interviews (medium questions with coding), a lunch break, a software design interview (which was difficult, likely due to my experience in the field), and a final logic interview with a hard question that I botched due to fatigue.
A few days later, I received a negative callback. Feedback indicated that several interviewers noted minor bugs in my code, which they had pointed out during the interviews.
Given any point on Earth, find the tallest building within 100 meters from it (a software design question).
Followed by a whole bunch of follow-up questions about software design.
The following metrics were computed from 1 interview experience for the Google Software Developer role in Tel Aviv-Yafo.
Google's interview process for their Software Developer roles in Tel Aviv-Yafo is extremely selective, failing the vast majority of engineers.
Candidates reported having very good feelings for Google's Software Developer interview process in Tel Aviv-Yafo.