How to practice?

At this point, you’ve mastered the theoretical underpinnings of the Algorithm Design Canvas. This is a great achievement and you’re already ahead of the majority of applicants.

The next fundamental question is how to most efficiently take what you just learned, and start applying it in practice. Where do you find practice problems, and how do you go about solving them as you’re getting ready for your interview?

Read on.

Practice with HiredInTech

In the next sections you will find a few suggested practice tasks ordered by topic with some learning materials for each topic. These tasks you can try solving on your own using, for example, the Canvas.

Use online judges

Online judges such as LeetCode are an indispensable tool in your preparation arsenal. You can read as many books as you want or skim through the solutions to dozens of problems, but there’s nothing like practicing getting a problem 100% correct.

Online judges automatically grade your solution (and support a large set of programming languages) with some pretty tough tests. They also act as problem banks, additional learning resources, a supportive community, etc.

Here are a few more sites where you can practice solving algorithmic tasks:

Always follow the Canvas

Many people feel tempted to skip certain areas of the Canvas during practice. Sometimes they do this because they think they’re saving time, sometimes because they are overconfident and think the problem is too easy.

This is not a good idea. The Canvas is designed to build up all aspects of your interviewing chops, as you never know what your interviewer will want to focus on. By systematically thinking about all areas during practice, when the rubber hits the road you’ll be a lot more confident and, ultimately, more successful.

Forget about your IDE

As we discussed in the Code section, writing code in your IDE is fundamentally different from coding outside of it. The only way to truly appreciate the difference and to overcome the related issues is to forget about your IDE.

That’s why the “Code” section of the Canvas exists - just write your code there. Alternatively, if you’re practicing using an online judge (highly recommended), write your code in the provided editor or if you wish first write it somewhere else and then copy/paste to submit it.

Read through your code

We all know people whose natural style is to write some code and then immediately try to run it and see if it works on some set of test cases. They spend about 20% writing the code, and then maybe 80% debugging it. While this may work well for them in real life, it simply does not work at interviews. You don’t have the luxury of a debugger, nor the luxury of something automatically executing your code.

Instead, what you should do is to carefully think about the code you write, and then once you’ve written it, to spend some time reviewing it. If you’re using an online judge, make sure you are 100% confident that your code is going to compile AND run correctly on the tests before actually hitting “Compile” and “Run Tests”. This practice of carefully inspecting your code is going to be priceless at interviews.

Summary

In this section, you learned several important tricks for increasing the efficiency and effectiveness of your practice. Remember to:

  • Sign up for an automated online judge like LeetCode.
  • Always follow the Canvas, even on simpler problems.
  • Don’t use your IDE so that you can train your interview coding skills.
  • Read and review your code before compiling and running the automated tests on TopCoder.

What’s next?

With these tips in mind let’s turn to some algorithmic theory and practice. In the next sections of this course we cover the most important topics and suggest practice tasks that you can solve. Let’s start practicing!

Also, in this section there is one last lesson suggesting one more way to practice, which we call the “blitz rounds”. You can take a look at these once you feel confident in your task solving skills.