
General Description
A book about test tasks and interview questions aimed at preparing for job interviews by covering many popular topics and filling knowledge gaps in general programming concepts (such as data types, algorithms, patterns, and others, though there is almost nothing on security). The book consists of 17 chapters and is just over 350 pages long. There are almost no images, even though visual representations would make sense for topics like graphs.
Overview
The first nearly 50 pages (two chapters) are purely theoretical, containing a lot of text along the lines of: decide on a direction, analyze the job market, assess your skills, work on your online visibility and portfolio. The second chapter is entirely dedicated to job applications and vacancy searches.
Starting from the third chapter, programming tasks appear, though mostly toward the end. If there's anything worth highlighting from this chapter, it's algorithms and algorithmic complexity (Big-O notation) — exactly what I covered in detail in one of my previous reviews.
Next, three chapters focus on data types, or rather, data structures. Linked lists (Chapter 4), trees and graphs (Chapter 5), arrays and strings (Chapter 6) are covered. These are perhaps some of the most useful chapters in the book. There are many examples (mostly in C++, though Java, JavaScript, and C# also appear in the arrays and strings chapter). The data structures themselves are covered decently, and key terms are explained. For example, lists cover types (singly linked, doubly linked, circular), operations (traversal, insertion, deletion), and practical tasks. The same goes for trees, graphs, arrays, and strings. Overall, these topics are explained well enough, and for those who don't regularly work with, say, graphs, the material is sufficient to refresh their knowledge.
Next comes recursion and recursion-based problems. Not much to add here.
After recursion, there's a section on sorting. This section is also very useful for at least two reasons: sorting is ubiquitous in programming (though many native language functions handle it automatically, often without us knowing the underlying method), and secondly, because it’s a topic that was (and sometimes still is) frequently used to challenge candidates in interviews. Selection sort, insertion sort, quicksort, merge sort — all of these are covered here, along with practical tasks.
Then comes a section on parallel programming. Of course, this chapter doesn’t cover all possible approaches to parallel programming, let alone specific implementations in popular modern languages like Go or Kotlin. However, the general concepts are there and explained fairly well. Threads, monitors, semaphores, deadlocks — it’s all covered.
Next is OOP. The section is just 10 pages long, so you can imagine how superficial the coverage is, even conceptually, without tying it to any specific language. Constructors, destructors, inheritance, polymorphism, virtual methods, classes, and objects — that’s what the authors managed to include.
Then come design patterns. There aren’t many here either. I’d say they’re almost nonexistent, given the very limited page count. On the plus side, a couple of simple patterns are explained, and the groups of patterns (creational, behavioral, structural) are listed.
Moving on. The chapter on databases is also short. In my opinion, this is one of the weakest and least developed sections.
Next is a section on graphics and bit manipulation. I didn’t learn anything new here, but I found it interesting since I don’t deal with such tasks in my daily work, so it was a curious read.
After that, there are two sections on puzzles. The first one is just logic puzzles like "which light bulb corresponds to which switch" (a very popular online logic puzzle) or the problem of crossing a river (or chasm) with different animals that can’t be left alone together (another well-known puzzle). The second part focuses on graphical puzzles (not to be confused with the earlier "graphics tasks" section, as these are unrelated).
The penultimate chapter covers general problems. Here, the authors crammed all possible tasks and questions that didn’t fit into any previous chapter. These include technical questions, logical questions, architecture, encryption, security (though, for example, security gets just a couple of pages — way too little).
The book ends with general questions unrelated to coding but directly tied to salary expectations, soft skills, asking counter-questions, and similar topics.
My Opinion
First and foremost, the book is useful for those looking to break into IT or who have recently entered the field. It explains how and where to look for jobs. There are topics that will help you prepare for interviews (algorithm complexity, lists and pointers, tree and graph implementation, OOP, patterns, databases, bit manipulation, and much more).