Covered Skills
Testing of these skills is covered in this pre-built test because they’re closely related. On our paid plan, you can easily create your own custom multi-skill tests.
C#
C#
The C# programming language is a simple, modern, general-purpose, object-oriented programming language. Having a basic familiarity with the programming language used on the job is a prerequisite for quickly getting up to speed.
Stream
Stream
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.
Strings
Strings
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.
Exceptions
Exceptions
Exceptions exist in most modern programming languages, making it important for a programmer to understand them and know how to handle them.
Bug fixing
Bug fixing
Everyone makes mistakes. A good programmer should be able to find and fix a bug in their or someone else's code.
Language
Language
A programmer should use a language as a tool, always taking advantage of language-specific data types and built-in functions.
Algorithmic thinking
Algorithmic thinking
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.
Extension methods
Extension methods
Extension methods enable are method of extending existing types without extending the type, recompiling or modifying the original type. They are a useful feature of developers who want to write and maintain clean and concise code.
Arithmetic
Arithmetic
Arithmetic is a fundamental branch of mathematics. An understanding of arithmetic concepts, and their application, is important for every candidate.
Data structures
Data structures
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.
Random
Random
Random number generators are used to generate random numbers and/or symbols. There are a wide variety of random number generators each with very specific use cases, as such it's important for all developers to know and understand when to use each type.
Memory management
Memory management
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.
Linked list
Linked list
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.
Accessibility levels
Accessibility levels
Access modifiers like public, protected, or private should be used to specify accessibility levels - who can access the object or some of its parts. They are one of the key points for writing maintainable object-oriented code.
Properties
Properties
A property is a member of a class that provides a flexible mechanism for classes to expose private fields. It is a topic that should be well known to any developer who works with an OOP language that supports it.
Regex
Regex
A regular expression (regex) is a special text string for describing a search pattern. It is a common way for extracting data from text.
Destructors
Destructors
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.
OOP
OOP
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.
Refactoring
Refactoring
The process of restructuring existing computer code without changing its external behavior. It is essential for keeping code readable and maintainable.
Queue
Queue
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.
Dictionary
Dictionary
A dictionary (or associative array) 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.
Iteration
Iteration
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.
Lists
Lists
Lists are collections that act as dynamic arrays. Lists offer the flexibility of dynamically sized arrays, the simplicity of access of arrays, and are more performant than more ubiquitous collections in most scenarios.
Arrays
Arrays
An array is a container of a fixed number of objects of a similar type. It is a fundamental component of most programming languages.
Tree
Tree
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.
Serialization
Serialization
Familiarity with data serialization to and from formats such as XML and JSON is important as it is commonly used for interprocess communication
XML
XML
Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. The design goals of XML emphasize simplicity, generality, and usability across the Internet. This is one of the most used formats for exchanging data over the web.
Recursion
Recursion
A good programmer should be familiar with when to use recursive functions, since they can provide elegant solutions for complex problems.
Multithreading
Multithreading
Multi-threading allows a process to make more efficient use of modern hardware by allowing code to execute asynchronously. It can drastically improve the performance of any app; however, it can be tricky to get right, making this an important topic for any programmer.
Synchronization
Synchronization
When using multithreading, developers need to know how to make one thread wait for another to finish its task before continuing with its work.
StringBuilder
StringBuilder
Since a string is an immutable data structure, concatenating multiple strings can introduce significant performance penalties. Every experienced developer should know when to use StringBuilder instead of simply concatenating two strings to improve performances in such scenarios.
Pass by reference
Pass by reference
The call by reference method of passing arguments to a function copies the reference of an argument into the formal parameter. Inside the function, the reference is used to access the actual argument used in the call. This means that changes made to the parameter affect the passed argument. This is one of two possible ways for passing an argument to a function so it should be known to any developer.
Complexity
Complexity
A good programmer should be able to analyze and plan for the performance of an algorithm.
Stack
Stack
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.
Inheritance
Inheritance
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.
Sorting
Sorting
Every programmer should be familiar with data-sorting methods, as sorting is very common in data-analysis processes.
Graphs
Graphs
Many real-life situations are best modeled by graphs. Therefore, an in-depth knowledge of graph data structures is important for a good programmer.
Test case design
Test case design
Being able to create a set of test cases that ensure adequate test coverage is a key skill for creating a successful test. It is desirable for the test suite also to be optimal, i.e. to minimize test execution effort and time without affecting the test coverage.
Unit testing
Unit testing
Unit testing is a type of software testing where individual units or components of a software are tested. Unit testing of software applications is done during the development (coding) of an application and should be well known practice to any developer.
Dynamic programming
Dynamic programming
Dynamic programming methods for code optimization can be very useful to a programmer who understands them.
LINQ
LINQ
LINQ provides a compile functional interface for querying datasets. A good .NET developer should be able to take full advantage of this.
Dynamic Objects
Dynamic Objects
Dynamic objects expose members such as properties and methods at run time, instead of at compile time. This enables you to create objects to work with structures that do not match a static type or format.
HashSet
HashSet
HashSet is container that stores unique elements in no particular order. This allows for fast checks to see if a value was already added.
TDD
TDD
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, based on which the software is improved only in order to pass the new tests. TDD is an essential skill for modern programmers.
Method overriding
Method overriding
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.
Abstract class
Abstract class
An abstract class can include abstract methods and can be subclassed, but it cannot be instantiated. They are often used as building blocks of application.
Null coalescing operator
Null coalescing operator
The null coalescing operator takes two values and returns a non-null value. It is often used to simplify conditionals that check if a variable is null.
Null conditional operator
Null conditional operator
The null conditional operator is a binary operator that returns null if its first argument is null; otherwise it performs a dereferencing operation as specified by the second argument. It's often used to simplify executing code if a variable is null.
Tuples
Tuples
A tuple is an immutable collection which is ordered and unchangeable. It is a common collection in many programming languages.
Higher order function
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.
Interfaces
Interfaces
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.
Integer division
Integer division
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.
Field modifiers
Field modifiers
Field modifiers should be used to specify additional properties of fields like their mutability, are they defined on an instance or are they static, etc.
Recommended Job Roles
These are the job roles that we recommend for the C# online test.
.NET Developer