Wednesday, April 20, 2016

Что нужно знать при собеседовании на разработчика .NET

COMMON BACKGROUND:
Basic knowledge of Discrete Mathematics: Boolean arithmetics, Set theory, Automata theory (DFA, NFA), Regular expressions
OOP: Basic principles (Inheritance, Encapsulation, Polymorphism), SOLID principles, Design Patterns
Computer Architecture: Difference between x86 and x64 architectures

C# /.NET
Basics: What is .NET, CLR, IL? Program control flow, managed heap, managed stack, object allocation .NET; Object lifecycle, IDisposable, GC
C#: Basic OOP principles and how they are implemented in C#;Interfaces, Abstract classes, Static classes; Text and XML Processing; Events; Exception handling; Comparison of objects (operator == and Equals, IEqualityComparer); Linq, Fluent Syntax, yield keyword, IEnumerable; Lambda expressions
.NET Base Library: Collections (List, LinkedList, Dictionary, HashSet, SortedDictionary); I/O Streams; Serialization
Parallel Programming: Threads, Thread Pools, TPL, PLINQ; Synchronization primitives: Lock, Mutex, Semaphore, Event, ReaderWriterLock; Concurrent Collections; Task-based Async Pattern (TAP).

ALGORITHMS AND DATA STRUCTURES
For the following data structures & algorithms listed below: a concept of Big O notation;
asymptotic complexity of these algorithms; estimate asymptotic complexity of the code you write.
Data Structures: Array,  List, Linked list, Queue, Stack; Hash table; Binary search tree, Heap
Sorting Algorithms: Bubble sort, Insertion sort; Heap sort, Merge sort; Quick sort; Counting sort
Tree traversal algorithms: Depth first, Breadth first

Common algorithms: Binary search, Bit manipulation

Exceptions:
https://habrahabr.ru/post/178805/

Object lifecycle:
http://kavayii.blogspot.ru/2010/08/blog-post.html