📝 1. Clarify the Problem
Restate the problem in your own words
Ask clarifying questions
Define input/output expectations and edge cases
Clarity at the beginning avoids wasted effort later.
🧠 2. Design Your Algorithm
Start with a brute-force solution
Discuss multiple approaches out loud
Use pseudocode for complex logic
Justify your chosen strategy
A basic, working idea is better than silence.
🧮 3. Estimate Time & Space Complexity
Share your initial time and space complexity
Keep it approximate if needed
Revisit complexity after implementation for accuracy
This shows you're mindful of efficiency, not just correctness.
🧼 4. Write Clean Code
Use descriptive variable and function names
Break logic into helper functions
Consider small classes for clarity
Readable code reflects your professionalism.
🧾 5. Re-state Final Complexity
Confirm final time and space complexities
Explain any differences from your initial estimate
Interviewers value your ability to reflect and improve.
🧪 6. Test Your Code
Use simple cases to verify core logic
Add edge cases to test limits
Include boundary values (e.g., 0 or
int.MaxValue
)Use this stage to debug
Testing is not optional—it proves quality and ownership.