← Interviews

Online assessment (OA)

Absolutely hate them

Probably what most of you are familiar with and for those deep into the season, you probably got a couple lined up. There are actually 3 types of OA I like to categorize them into:

  • Coding OA — the "leetcode" style questions
  • Project OA — program a series of functionality in phases. (Simple compiler or system)
  • Programming questions — typically OOP questions or data structure questions.
  • Honorable mention are "brain teasers" — usually given by finance or gaming companies. They are a pain in the ass so I have no advice for them.

Regardless of which type, you should aim to complete them with 100% accuracy / score and in the least amount of time possible (captain obvious — reason being scores any lower are auto rejected including imaginary 99%). There are cases where a suboptimal score is acceptable, but that's factoring in your resume and background checks.

"What programming language should I use for the OA?"

  • For all beginners — Python. Just do it. Better readability and faster to write.
  • For those that have experience — Python + Java (Java for the OOP questions)
  • For those that are targeting Quant — Python + C++
  • For those that are targeting Frontend — JavaScript

Coding OA

This is the simplest type of OA and also simplest to study for. Not the "easiest" but definitely straight forward. — Spam leetcode. If you decide to not use any external resources, you must study and practice a lot. For beginners,

  • Blind 75 Playlist
  • Neetcode 150 (goated)

Once you're here, you should be able identify 90% of the patterns required to solve a problem. Unfortunately with today's market, even these are not enough. From here, you should start doing specific company's playlists. — Leetcode premium is a big boost.

  • "But what if I don't have an OA for that company?" — Pick a random FAANG company and do their playlists. (Personal Recommendation: Google)

Doing more questions will build "muscle memory" and help you identify patterns faster. Hopefully you will be able to get a question you remember and use less mental effort to solve it.

Small tip: don't go for optimized solutions immediately. Focus on readability and correctness. Neetcode's videos focus very well on this. Once you are comfortable or aiming for Quant, then you can start optimizing.

Project OA

This is the most time consuming type of OA and also the most difficult to study for. The best way to prepare for this is to actually build the project yourself. Sometimes, the functionality also mix in algorithms such as sliding window or sorting. The best you can do for this type of OA is continue to practice leetcode but also think about structuring your code and learn common patterns. Usually, just passing the test cases are enough to pass the OA. If you are aiming for a specific company, you should look at their past OAs and see if they have any common questions / patterns.

Programming Questions

In practice, this should be the easiest OA to pass. Especially for students, this is essentially the same as your typical CS course exams. If you are not using external resources, I would study up on data structures (queue, stacks, tree, etc), time complexity, and major OOP concepts (encapsulation, inheritance, polymorphism, etc). It's rare for them to ask theoretical CS questions like "recursive formulas" or "red-black tree". At that point, you're just unlucky. Again, do your research on the specific companies.

Conclusion

The gateway to the live interviews. You really want to be acing these with 100% accuracy. They are generally predictable and becomes easier the more you do them. But sometimes, you will still get rejected even with 100%. These are due to:

  1. headcount
  2. resume and background checks
  3. random luck — recruiter simply decided not to pick up your application

Keep grinding and aim to get as many OA as possible.