Home > Topics

Software Engineering

Topics

  • Programming
  • Logic
    • Boolean Logic
  • Algorithms
  • Data Structures
  • Problems
    • Approaches

Interviewing

The focus of software engineering interviews is the coding problem.
Solve a programming problem in front of the interviewer within some time limit.
This is a skill that needs to be developed independently of every day job skills in order to perform well.
So what’s involved in solving a programming problem and how do we get better at it?

1. Reading and understanding the problem

If you’re a slow reader, you’ll pay a tax here.
But it’s critical to understand the problem before starting to solve it.
How can we get better at reading and understanding problems?

2. Planning a solution

  1. Brain storm
  2. Consider the trade-offs
  3. Choose an approach

3. Implementing a solution

  1. Assume the existence of well-defined helper functions
  2. Write the solution in terms of the helpers
  3. Implement the helper functions
  4. If we run out of time here, at least the interviewer knows where we were going
  5. And assuming the helper functions are less complex than the main function, we’ve at least demonstrated ability on the more challenging part of the problem

Optimizations

The more familiar we are with our chosen programming language, the less time we’ll spend translating ideas into working code.

4. Troubleshooting

If bugs are identified, either by executing the code or as pointed out by the interviewer, we’ll need to troubleshoot.
How can we efficiently & effectively troubleshoot our code?
In the worst case, we have no ability to execute our code, much less instrument it with logging statements.
We might revert to building a table of variables and manually executing the code with example inputs in order to find the problems.

References