Skip to content

Commit

Permalink
Merge pull request #10 from galovdev/patch-2
Browse files Browse the repository at this point in the history
Update coding-interview-guide.mdx
  • Loading branch information
akotadi committed Nov 4, 2023
2 parents f922791 + e566ec0 commit b55bbbd
Showing 1 changed file with 168 additions and 4 deletions.
172 changes: 168 additions & 4 deletions docs/interview/interviewer/coding-interview-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,171 @@ id: coding-interview
title: Coding Interview
---

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
#### Symbols

- ✅ = Do
- ❌ = Don't
- ⚠️ = Situational

# General Tips for a Coding Interview
## What to do before the interview?

### About the problems

1. ✅ Create a list with various exercises.

In the worst case, your interviewee will have already solved the problem you had prepared, so having a repertoire of problems is ideal to face this situation. You can start with 3 problems and increase them over time. This will also save you time looking for another problem, allowing you to start the interview as quickly as possible. You can create your list using different platforms. We highly recommend using leetcode as a platform for solving and searching for problems. Additionally, if you want to quickly filter the problems you can use, you can access the discord server [cscareers.dev](https://cscareers.dev/discord) and enter the #leetcode-bot channel, where you can get a list of problems filtered by the company by typing !problems <company>.

2. ✅ Look for different solutions to the problems you have gathered.

Remember, there's an infinity of possible solutions for a problem. If you are using leetcode, it is advisable to check the discussion section where you can review solutions from different people. It's highly likely you'll find an algorithm, data structure, etc., completely different from what you had thought or how you solved the problem. Knowing a variety of solutions will allow you to guide your interviewee to the correct solution.

3. ✅ Choose problems from different topics.

If you are using leetcode, you can review the topics related to the problems by simply clicking on the "Related Topics" tab. This way, you can avoid unintentionally repeating topics.

### About you

4. ✅ Prepare a brief introduction.

You don't need to prepare something very complex; you could mention:

- ✅ Your name.
- ⚠️ If you want to simulate a real interview even more, where you work.
- ⚠️ The area you work in.
- ❌ Mention something classified as confidential.

### About the interviewee

5. ✅ Review the CV/resume.

Request the interviewee's CV/resume in advance; this will allow you to know a little about what they have done, what they know, and what they don't. It will also help you choose the most appropriate problem for them to solve.

6. ⚠️ Check if there is feedback from previous interviews.

If the interviewee has had previous interviews, feedback will let you know which points to pay more attention to, aiming to see if the interviewee has improved compared to previous interviews.

### Preparing for the interview

7. ✅ Prepare everything you need.

If you will use a collaborative code editor, an online text document, or some other tool, have all the links and tools you will use handy. If you need an online code editor, we recommend using:

- [codeshare](https://codeshare.io/)
- [collabedit](http://collabedit.com/)

8. ⚠️ Wait a reasonable amount of time for the interviewee to arrive.

Consider that something unexpected might happen to your interviewee, and they might be late or even miss their trial interview. We recommend waiting 10 minutes in case something spontaneous has occurred.

9. ⚠️ Notify if something happens to you.

Just as something unexpected might happen to the interviewee, the same could happen to you. If this happens, notify your interviewee that it won't be possible to conduct the trial interview. If necessary, rescheduling the interview is a good idea.

10. ⚠️ Specific tools

If you want the mock interview experience to be as similar as possible to a real interview, you can use the tools and/or platforms that companies typically use when conducting technical interviews.

## Durang the interview

### All the time

11. ✅ Feedback

You should write notes about the interviewee's performance. For this, you can use feedback-helper or another tool of your choice. [feedback-helper](https://proyecto-nutria.github.io/feedback-helper/ )
o or another tool of your choice.

12. ⚠️ Communication

If necessary, you should encourage communication between you and the interviewee since you need to know what they are thinking. If necessary, you could give them a hint about solving part of the problem or help them think about different aspects they overlooked during the analysis.

### Introduction

13. ✅ Introduce yourself

Remember that you previously prepared a brief presentation about yourself; this is the ideal time to use it.

14. ✅ Ask the interviewee to introduce themselves

Evaluate what your interviewee mentions, paying special attention if they mention projects, what they did in their projects, what they resolved if they optimized something, which technologies they used, etc.

### Technical interview

15. ✅ Setting the stage

Now it's time for your interviewee to solve a technical problem. First, send the link to the tool/platform they will use to write the code.

16. ✅ Problem introduction

Briefly introduce the problem to the interviewee by mentioning generally what needs to be done.

17. ❌ Constraints

Don't give the problem constraints in the introduction. The purpose of the interview is to understand the interviewee's thought process. The interviewee should ask you about the problem to get a general idea of how to solve it.

18. ⚠️ Examples

If the problem is quite complex, you can provide the interviewee with a simple example of what the problem should do, i.e., if you receive certain input information, what should be the expected output?


19. ⚠️ Solutions

If the interviewee gives you one or several solutions, you can ask if there's something better or which solution they think is the most suitable for the problem and why.

20. ⚠️ Hints

If your interviewee gets stuck or has no idea how to solve the problem, you can give them a hint about what to analyze or if they overlooked something essential in the problem.

### Time to code

21. ⚠️ Programming language

If the tool you will use to evaluate the written code for the technical problem allows you to choose the syntax, ask your interviewee which programming language they are comfortable with to represent their algorithm.

22. ✅ Code

Your interviewee should program the idea with which they intend to solve the problem. Consider whether the interviewee uses good programming practices. Consider things like indentation, variable/function names, if the code is well-modulated (if necessary), etc. If you want to learn more about good programming practices, you can check the content of the following links:

- [coding-best-practices](https://www.sleeek.io/blog/15-coding-best-practices-to-follow)

23. ✅ Complexity

Ask your interviewee about the spatial (in memory) and temporal complexity of their algorithm. Optionally, you can ask if it's possible to improve the solution.

24. ⚠️ Review

Ask your interviewee to review their code, especially if you spot a mistake, this can give them an understanding that something is wrong. Additionally, there is a concept called guide me through your code, which involves reviewing the code but looking closely at each line, explaining what it does, and inspecting that what is written actually achieves what it is intended to do.

25. ✅ Tests

Ask your interviewee to test the code, with the purpose of verifying that what is captured in the code matches the algorithm they previously thought of. Remember, testing does not imply running the code, it can simply exemplify how it works in the shared editor.

26. ⚠️ Bugs

If you find that there is a bug in their code, you should let your interviewee know, you should evaluate if they solve the problem and how they do it.

### Questions and answers

In this section, the interviewee can ask things about you, about the company, or anything else, with the first two being the most important to evaluate as they demonstrate the interviewee's interest in working somewhere specific.

27. ⚠️ Answers

Depending on you, you can choose to answer their questions simulating a real interview, or you can just give them feedback on how good or bad their questions are.

### Summary

Below is a brief summary of what you should broadly assess during the technical interview. This summary is based on [coding-signals](https://techinterviewhandbook.org/coding-signals)

- Understanding of the problem
- Clarifications
- Solution or solutions
- Improvement of the solution (if necessary)
- Analysis of the different solutions provided (if necessary)
- Speed of implementing their solution
- Accuracy in implementing the solution (Having few bugs and the programmed solution works properly)
- Complexity analysis
- Mastery of the programming language used
- Good programming practices (Indentation, variable/function names, etc)
- Code testing
- Testing edge cases
- Self-correction (If they detected some mistake, they should be capable of solving it by themselves)

0 comments on commit b55bbbd

Please sign in to comment.