, Disposable Wrapper
, Log Parser
, Driver Exam
, Crop Ratio
, Chain Link
, Sort Params
, Programmer Teacher
, Read First Line
, Integer to Object
, NET Versions
, Order Chars
, Delayed Print
, Product Refactoring
, Date Transform
, Document Store
, Document Counter
, Internal Nodes
, Window Manager
, Moving Total
, Unique Numbers
, Paper Strip
, Max Sum
, Remove Repetitions
, Unique Name
, Log Patch
, Chinese Box
, Weighted Average
, Sum of Numbers
, Shining Star
, Unloading Trucks
, Third Party Components
, Stack to List
, Read Write Execute
, Eye of the Storm
, Procedural Generator
, Memory Leak
, Shelf Test
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.
LINQ provides a compile functional interface for querying datasets. A good .NET developer should be able to take full advantage of this.
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.
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.
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.
Familiarity with data serialization to and from formats such as XML and JSON is important as it is commonly used for interprocess communication
Exceptions exist in most modern programming languages, making it important for a programmer to understand them and know how to handle them.
Arithmetic is a fundamental branch of mathematics. An understanding of arithmetic concepts, and their application, is important for every candidate.
Every programmer should be familiar with data-searching methods, as they are very common in data-analysis processes.
Everyone makes mistakes. A good programmer should be able to find and fix a bug in their or someone else's code.
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.
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.
An array is a container of a fixed number of objects of a similar type. It is a fundamental component of most programming languages.
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.
The .NET framework, developed by Microsoft, provides a large class library and language interoperability. This makes it an essential skill for a programmer working with a Microsoft stack.
An Enum or Enumerated type, is a data type that consists of a set of named values. As most programming languages implement the enum type as one of their primitives it's an important concept for all developers.
Reusing a properly engineered and thoroughly tested class library is the best way to keep your code concise, performant and reliable.
The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. Knowing how the runtime works is necessary for making a large application fast and stable, avoiding issues like memory leaks and occasional slowdowns.
The process of restructuring existing computer code without changing its external behavior. It is essential for keeping code readable and maintainable.
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.
Many real-life situations are best modeled by graphs. Therefore, an in-depth knowledge of graph data structures is important for a good programmer.
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.
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.
Every programmer should be familiar with data-sorting methods, as sorting is very common in data-analysis processes.
A package manager is a collection of software tools that automates the process of installing, upgrading and removing computer programs and libraries.
Test case design
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.
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.
Dynamic programming methods for code optimization can be very useful to a programmer who understands them.