You'd likely be geared for L5 (Senior Engineer) with your described experience. At that level, there would be expectations that:
- You have built and can continue to build real software. You should know how to code fluidly in at least one language, as well as idioms and pitfalls. I don't think this is something you can cram for - you build up from experience.
- Able to describe performance or other tradeoffs. This can be in system architecture down to data structures and small optimizations. If you are rusty on algorithms, this can be studied for.
- Be able to do large-scale systems design from a fairly ambiguous problem statement. Sounds like you've had this experience.
- Potentially do a deep dive in a technical specialty of yours (ML, compilers, databases, etc.).
[Note: I haven't been at Google for over a year so this may be rusty, but did interview lots of candidates while there.]
- You have built and can continue to build real software. You should know how to code fluidly in at least one language, as well as idioms and pitfalls. I don't think this is something you can cram for - you build up from experience.
- Able to describe performance or other tradeoffs. This can be in system architecture down to data structures and small optimizations. If you are rusty on algorithms, this can be studied for.
- Be able to do large-scale systems design from a fairly ambiguous problem statement. Sounds like you've had this experience.
- Potentially do a deep dive in a technical specialty of yours (ML, compilers, databases, etc.).
[Note: I haven't been at Google for over a year so this may be rusty, but did interview lots of candidates while there.]