, Document Store
, Babushka Doll
, Out of Range
, Max Sum
, Paper Strip
, Read Write Execute
, Chain Link
, Crop Ratio
, Date Transform
, Internal Nodes
, Stack to Vector
, Unique Product
, Unique Numbers
, Weighted Average
, Window Manager
, Book Sale
, Function Cache
, Moving Total
, Kilometer Converter
The C++ language provides imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. Having a basic familiarity with the programming language used on the job is a prerequisite for quickly getting up to speed.
Everyone makes mistakes. A good programmer should be able to find and fix a bug in their or someone else's code.
A programmer should use a language as a tool, always taking advantage of language-specific data types and built-in functions.
Memory management allows programs to request memory dynamically from the operating system, and free it for reuse when no longer needed. Many modern programming languages automate this process; however, it should still be an important consideration when implementing an application.
Exceptions exist in most modern programming languages, making it important for a programmer to understand them and know how to handle them.
Vectors are one-dimensional collections that act as dynamic arrays. In many languages, Vectors offer the flexibility of dynamically sized arrays, the simplicity of access of arrays, and are more performant than more ubiquitous collections in most scenarios.
A stream is a sequence of data elements made available over time. It is particularly useful for tasks that may benefit from being asynchronous, including tasks such as I/O processing or reading from a file, and as such is important for developers to understand.
The string data structure is used to represent text. It is one of the most commonly used data structures. Therefore, every programmer should be skilled at string manipulation.
When designing and/or analyzing an algorithm or data structure, it is important to consider the performance and structure of an implementation. Algorithmic thinking is one of the key traits of a good programmer, especially one working on complex or performance-critical code.
Arithmetic is a fundamental branch of mathematics. An understanding of arithmetic concepts, and their application, is important for every candidate.
Conditional statements are a feature of most programming and query languages. They allow the programmer to control what computations are carried out based on a Boolean condition.
A destructor is a special member function that is called when the lifetime of an object ends. Developers should use them to free (unmanaged) resources that the object may have acquired during its lifetime.
A linked list is a linear collection of data elements where each element points to the next. It is a data structure consisting of a collection of nodes which together represent a sequence. It is usually used for advanced scenarios where we need fast access to the next element, or when we need to remove an element from anywhere in the collection.
Integer division is division in which the fractional part (remainder) is discarded. Knowing this is important for optimal implementation of some algorithms and for avoiding common bugs.
A regular expression (regex) is a special text string for describing a search pattern. It is a common way for extracting data from text.
A queue is a collection of items that are maintained in a sequence and can be modified by the addition of entities at one end of the sequence and removal from the other end of the sequence. It is the collection to be used when first-in-first-out (FIFO) collection is needed.
Iteration is the act of repeating a process, or cycling through a collection. Iteration is one of the fundamental flow control tools available to developers.
Map is a data type composed of a collection of key-value pairs, where each possible key appears at most once in the collection. It is used when we need to access items by their keys and we need to know their order.
A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. Using pointers is something that all C and C++ developers should know.
An array is a container of a fixed number of objects of a similar type. It is a fundamental component of most programming languages.
A tree is a hierarchical structure defined recursively starting with the root node, where each node is a data structure consisting of a value, together with a list of references to other nodes (the "children"). A lot of problems can be solved efficiently with trees, which makes them important for developers.
A good programmer should be familiar with when to use recursive functions, since they can provide elegant solutions for complex problems.
Choosing the right data structure to solve a problem can have huge implications on the performance of an application. Knowing when to use a specific data structure is one of the most important skills for a programmer.
A good programmer should be able to analyze and plan for the performance of an algorithm.
A stack is dynamic data container that follows the Last In First Out (LIFO) principle. Developers should use stack when the last item to be inserted into a container is the first one to be deleted from it.
Unordered map (or dictionary) is a data type composed of a collection of key-value pairs, where each possible key appears at most once in the collection. It is used when we need to access items by their keys.
Every programmer should be familiar with data-sorting methods, as sorting is very common in data-analysis processes.
Hash and equals
Many real-life situations are best modeled by graphs. Therefore, an in-depth knowledge of graph data structures is important for a good programmer.
Hash and equals
A hash function is any function that can be used to map data of arbitrary size to fixed-size values. Developers should know how to properly implement hash and equals functions to optimally use key-value collections like dictionaries.
Unordered set is a container that stores unique elements in no particular order, and which allow for fast retrieval of individual elements based on their value.
In object-oriented programming, inheritance is the mechanism of basing a class upon another class, retaining similar implementation. Inheritance allows programmers to reuse code and is a must know topic for every programmer who works with OOP languages.
Method overriding, in object-oriented programming, is a language feature that allows a subclass to provide a specific implementation of a method that is already provided by one of its parent classes.
Object-oriented programming is a paradigm based on encapsulating logic and data into objects, which may then contain fields and procedures. Many of the most widely used programming languages are based on OOP, making it a very important concept in modern programming.
Higher order function
Dynamic programming methods for code optimization can be very useful to a programmer who understands them.
Higher order function
A higher order function is a function that takes another function as an argument, or returns another function. Developers often use them for writing reusable code.
An interface is used to define an abstract type that defines behaviors as method signatures. Instances of different types can implement the same interface and provide a way for a developer to reuse the code.