Most people spend their time doing topical practice. They pick a topic (say "string algorithms" or "graph problems"), and start going through problems related to that topic.
Up to a point, this is quite useful. It can also be particularly good if you know there is some topic where you're markedly weaker.
But at interviews, you simply don't know if a problem is a graph problem, a data structures problem, or a dynamic programming problem. You will need to train your intuition to quickly discern between the large pool of potential ideas and deduce the topic yourself. How?
We do this by what we call "Blitz" rounds at HiredInTech. A "Blitz" round is a focused block of practice (say, 2.5 hours), where you work on a pool of problems you know nothing about. You set up a fixed amount of time per problem (say, 30 minutes), and try to go through all areas of the Canvas in that time. Then, you move on to the next one. After finishing 3 or 5 such problems, you can take a break, crack open a beer or pour yourself some wine, and give yourself a pat on the back.
If you're using TopCoder, taking 250 or 500 problems from Division 2 and pooling them together is a great way to construct a Blitz session. If you are working through a book, it's a bit more difficult to be "surprised" by what topic each problem is from, because books tend to organize problems by topic. This is another reason we strongly recommend switching your practice to HiredInTech's practice tasks or online judges at some point.
To get you started, we've assembled for you two blitz rounds with five TopCoder problems each. You can use the Arena for submitting your solutions as you did for previous sections.
In addition to that there are two more optional blitz rounds with problems from the book “Cracking the Coding Interview: Fifth Edition”. For them you can use a printed copy of the Canvas, a sheet of paper or a whiteboard. Again give yourself no more than 30 minutes per question.
Questions: 4.3, 5.2, 17.8, 17.12, 18.7
Questions: 4.7, 7.6, 1.6, 17.6, 18.12
In this section, we focused on the importance of a second kind of practice that we call "Blitz rounds". Blitz rounds involve picking a set of 3 to 5 problems, setting a time limit per problem (20 to 30 minutes), and sequentially filling all areas of the Canvas for each problem. Combined with what we call "Topical" practice, blitz rounds increase your confidence, teach you to manage your time better, and make you faster and more fluent when working through problems.
If you've reached this far, covered all the lessons carefully and did the recommended problems, you should be in a pretty good shape and deserve congratulations! Next, we will talk more about another type of questions - the system design ones. They are very important and have some specifics of their own. Whenever you feel ready, let's jump in!