I applied online.
The standard interview process is that you'll be given a problem to solve online within forty-five minutes, followed by a technical phone call. If you impress the interviewers, you'll be invited to onsite interviews. Onsite interviews will cover algorithms, problem-solving, design, database, and culture fit.
My advice:
- Algorithms: The questions will most likely be standard, but take note of the importance of writing clean code and testing your implementation. You are expected to know Big-O notation and common data structures, which include hash tables, dictionaries, trees, stacks, queues, arrays, and lists. The interviewer would be impressed if you can point out the reason why you picked such algorithms or data structures.
- Design: Focus on solving real-life problems using proper OOP. Define the classes, inheritance structure, interfaces, and implementation clearly upfront. You don't have to know every design pattern, but knowing the most common ones won't hurt, such as Singleton, Strategy, Template Method, and Bridge. Design for reusability and maintainability. Always ask questions to clarify the intent of the design exercise.
- Database question: Depending on your role, if you are a front-end engineer, you may not need to go through this step. For a back-end engineer, you're expected to write proper SQL, be able to design tables with proper ER diagrams, and understand cardinality, which is 1-to-1, 1-to-many, and many-to-many, along with aggregations. Some advanced questions may be about locks, indexes, and CTEs. Always draw your ERD first, identify the columns of each table, write your SQL with such an ERD, and then fine-tune them.
- Culture fit: In general, this session is to evaluate whether you are smart, fun, and friendly to work with. Be sincere and professional, explain how you would solve a conflict, and show that you are proactive and a valuable asset to the team.