DEV Community

Cover image for The Interview
Rohith
Rohith

Posted on

The Interview

This post is about what to prepare for technical interviews for any software engineer entry to mid level

Technical interview processes vary widely across companies, but most typically involve several types of rounds, each focusing on a different skill set. Here’s a breakdown of what to expect and how to prepare.

Types of Rounds:

  1. DSA Coding interview
  2. Machine coding (low level design)
  3. Take home project and machine coding
  4. High level design
  5. Behavioural Round (HM Round)
  6. HR discussion

For DSA round:
Practice is your friend and nothing else, Practice is the KEY🔑, Nothing beats consistent practice for DSA preparation. Avoid relying too much on theory or watching endless tutorial videos these can help with the basics, but real progress comes through problem-solving.

Choose a Dedicated Question List: Pick one well-curated list of questions and stick with it until completion. Recommended lists:

Start with Leetcode 75 or Blind 75 or Grind 75

Leetcode 75: https://leetcode.com/studyplan/leetcode-75/

Blind 75: https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions

Grind 75: https://www.techinterviewhandbook.org/grind75/

Use flashcards for patterns if needed (reco:Leetcard app): Flashcards are especially useful for identifying problem types and common solutions at a glance.

For people struggling with DP and graphs: highly recommend watching below playlist to get intuition. However, try tackling problems independently before resorting to videos, as struggling with problems can lead to deeper insights.
https://www.youtube.com/watch?v=nqowUJzG-iM&ab_channel=AdityaVerma

For graphs
Machine coding (low level design): This has become part of interview process for most companies and I think, it is better way of evaluation compared to DSA, since problem solving is mixed with implementation as well.

Learn and Apply Design Patterns: Understanding design patterns is crucial, as they provide reusable solutions to common problems. Apply them in your current projects if possible, real-life application is the best way to grasp their utility.

Head first design patterns book

https://refactoring.guru/design-patterns

https://github.com/ashishps1/awesome-low-level-design

Note: Don’t aim to memorize all patterns; instead, understand key ones and incorporate them into real-world applications. The GitHub repository above is especially valuable as it covers both design patterns and preparation for low-level design interviews.

Many developers overlook design patterns, but these universal solutions are a valuable skill that can enhance your career. Whether or not they are always implemented, knowledge of patterns helps you write more structured, scalable, and efficient code.

For guidance on approaching low-level design, explore a few well-curated playlists. However, don’t watch tutorials for every problem, only use them when you’re stuck or need insights into problem-solving approaches.

  1. https://www.youtube.com/watch?v=rliSgjoOFTs&ab_channel=Concept%26%26Coding-byShrayansh
  2. https://www.youtube.com/watch?v=GCTEVZjxznc&ab_channel=TheCodeMate

Take home project and machine coding:

With the rise of large language models (LLMs), it can be tempting to rely on AI for coding solutions. However, especially in machine coding interviews, it’s essential to start with your own approach. These interviews often require you to extend and adapt your code on the spot, making it crucial to understand every part of your solution.

Start with Your Own Solution

Refine with AI if Needed

Gain Confidence in Extending Code

Write first, Refine later

High level design

There is no finite answer when it comes to system design, different interviewers expect different solution, at that moment you should try to drive the conversation as per the interviewers focus.

ByteByteGo (Volumes 1 and 2): If you prefer a single, comprehensive resource, ByteByteGo offers a structured, in-depth approach to system design. Available both online and offline, these volumes cover fundamental and advanced topics in system design, making them ideal for a focused study.

Grokking System Design: This resource provides a variety of system design patterns and is well-suited for interview preparation. Stick to one book at a time to avoid overwhelming yourself with differing explanations or approaches.Grokking system design is also helpful, focus on finishing single book instead of going back and forth.

Although books are generally preferable for a thorough understanding, certain YouTube playlists can provide additional insights. These can help clarify specific concepts or introduce different perspectives, but avoid switching frequently between resources. Use them sparingly, focusing on areas where you need further clarification or alternative viewpoints.

Youtube:

  1. https://www.youtube.com/watch?v=3loACSxowRU&ab_channel=codeKarle
  2. https://www.youtube.com/watch?v=mhUQe4BKZXs&ab_channel=TechDummiesNarendraL

That is all about technical interview, when it comes to behavioural I will share a future post, below resource will come handy if you want to rush through it https://www.techinterviewhandbook.org/behavioral-interview/

Thanks for reading System savvy! Subscribe for free to receive new posts and support my work.

Top comments (0)