Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: LinkedList<T> is a doubly linked list collection in C#. It stores elements as nodes, where each node contains the data and references to the previous and next nodes. Allows efficient insertions and de…
Short answer: To implement a custom collection: Derive from existing base classes like Collection<T>, List<T>, or implement interfaces such as ICollection<T>, IEnumerable<T>, or IList<T>. Ex…
Short answer: Use the Stopwatch class from System.Diagnostics to time operations accurately. Profile your code using tools like Visual Studio Profiler, dotTrace, or PerfView for deeper insights. Measure specific operatio…
Short answer: ConcurrentDictionary<TKey, TValue> is a thread-safe dictionary designed for concurrent access by multiple threads without needing external synchronization (locks). Supports atomic operations like addi…
Short answer: Collection initializers allow you to create and populate a collection in a concise way at the time of declaration. Example: List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; Example code Dict…
Short answer: SortedSet<T> is a collection that stores unique elements in sorted order. Implements a self-balancing binary search tree (usually a Red-Black Tree). Automatically maintains elements in ascending sorte…
Short answer: SortedList<TKey, TValue> is a collection of key-value pairs that maintains the elements sorted by keys. Implements both IDictionary<TKey, TValue> and IList<KeyValuePair<TKey, TValue>>…
Short answer: LinkedList<T> is a doubly linked list collection in C#. Explain a bit more It stores elements as nodes, where each node contains the data and references to the previous and next nodes. Example code Li…
Short answer: HashSet<T> is a generic collection that stores unique elements with no particular order. It is optimized for fast lookups, additions, and deletions. Use case: When you want to store a collection of un…
Short answer: A Stack<T> is a generic collection in C# that stores elements in a Last-In, First-Out (LIFO) order. The last element added is the first one removed Belongs to System.Collections.Generic Real-world use…
Short answer: A Queue<T> is a generic collection in C# that stores elements in a First-In, First-Out (FIFO) order. The first item added is the first to be removed. It is part of the System.Collections.Generic names…
Short answer: A Dictionary<TKey, TValue> is a generic collection in C# that stores data as key-value pairs. It provides fast lookup, addition, and removal of values based on their keys. Keys must be unique Keys mus…
Short answer: List<T> is a generic collection in C# that represents a dynamically sized list of elements. It resides in the System.Collections.Generic namespace and grows or shrinks as needed. Use it when: You need…
Short answer: List<string> fruits = new List<string> { "Apple", "Banana" }; foreach (var fruit in fruits) { Console.WriteLine(fruit); } Example code List<string> fruits = new List<…
Short answer: Generic collections are type-safe and defined using generics (<T>), allowing you to specify the type of elements they hold. Explain a bit more This ensures compile-time type checking and eliminates th…
Short answer: Internally, Queue<T> uses a circular array to efficiently manage memory and operations. Head pointer marks the front (next item to be dequeued). Tail pointer marks where the next item will be enqueued…
Short answer: Collection<T> is a base class for creating custom collections. It wraps an IList<T> internally and provides virtual methods for insert, remove, and clear, allowing easy customization. Unlike Lis…
Short answer: List<T> uses a contiguous array internally, so memory is compact and cache-friendly. LinkedList<T> stores elements in nodes with extra pointers (Next and Previous), leading to more memory overhe…
Short answer: Feature ConcurrentQueue<T> Queue<T> Thread safety Designed for concurrent access Not thread-safe; requires locks Locking mechanism Internal lock-free or fine-grained locking No internal synchron…
Short answer: LINQ itself doesn’t modify collections directly but produces new collections based on queries. You typically combine LINQ with collection methods to add elements, for example: var evenNumbers = new List<…
Short answer: Feature SortedSet<T> HashSet<T> Ordering Maintains sorted order No guaranteed order Implementation Balanced binary search tree Hash table Lookup complexity O(log n) O(1) average Memory overhead…
Short answer: Feature SortedList<TKey, TValue> Dictionary<TKey, TValue> Order Maintains keys in sorted order No guaranteed order Internal storage Uses two arrays (keys & values) Uses a hash table Lookup c…
Short answer: Use AddFirst(value) to add at the start. Use AddLast(value) to add at the end. numbers.AddFirst(5); // Adds 5 at the beginning numbers.AddLast(30); // Adds 30 at the end Real-world example (ShopNest) In Sho…
Short answer: Feature HashSet<T> List<T> Dictionary<TKey, TValue> Allows duplicates? No Yes Keys: No; Values: Yes Order No guaranteed order Maintains insertion order No guaranteed order Lookup speed O(1…
Short answer: Internally, Stack<T> uses an array-based dynamic storage system: When capacity is exceeded, the internal array resizes automatically (typically doubles) The top of the stack is managed with a private…
C# Collections C# Programming Tutorial · Collections
Short answer: LinkedList<T> is a doubly linked list collection in C#. It stores elements as nodes, where each node contains the data and references to the previous and next nodes. Allows efficient insertions and deletions anywhere in the list. Does not support indexed access like List<T>.
LinkedList<int> numbers = new LinkedList<int>(); numbers.AddLast(10); numbers.AddLast(20);
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: To implement a custom collection: Derive from existing base classes like Collection<T>, List<T>, or implement interfaces such as ICollection<T>, IEnumerable<T>, or IList<T>.
Override or implement necessary methods like Add(), Remove(), GetEnumerator(), and indexers. Provide custom behavior, validation, or constraints as needed. Example: public class MyCustomCollection<T> : Collection<T> { protected override void InsertItem(int index, T item) { // Custom validation if (item == null) throw new ArgumentNullException(nameof(item)); base.InsertItem(index, item); }
In ShopNest checkout, choose the collection by need: List for ordered cart lines, Dictionary for fast SKU lookup, HashSet for unique tags.
C# Collections C# Programming Tutorial · Collections
Short answer: Use the Stopwatch class from System.Diagnostics to time operations accurately. Profile your code using tools like Visual Studio Profiler, dotTrace, or PerfView for deeper insights. Measure specific operations like add, remove, search, or iteration by running them multiple times and averaging results. Example: var stopwatch = Stopwatch.StartNew();
list.Add(1000); stopwatch.Stop(); Console.WriteLine($"Add operation took {stopwatch.ElapsedTicks} ticks");
In ShopNest checkout, choose the collection by need: List for ordered cart lines, Dictionary for fast SKU lookup, HashSet for unique tags.
C# Collections C# Programming Tutorial · Collections
Short answer: ConcurrentDictionary<TKey, TValue> is a thread-safe dictionary designed for concurrent access by multiple threads without needing external synchronization (locks). Supports atomic operations like adding, updating, and removing items. Useful in multi-threaded scenarios where data integrity and performance are critical.
ConcurrentDictionary<int, string> concurrentDict = new ConcurrentDictionary<int, string>(); concurrentDict.TryAdd(1, "One"); concurrentDict.TryUpdate(1, "Uno", "One");
C# Collections C# Programming Tutorial · Collections
Short answer: Collection initializers allow you to create and populate a collection in a concise way at the time of declaration. Example: List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
Dictionary<string, int> ages = new Dictionary<string, int>
{ { "Alice", 30 }, { "Bob", 25 } }; This syntax internally calls the collection’s Add() method for each element.
In ShopNest checkout, choose the collection by need: List for ordered cart lines, Dictionary for fast SKU lookup, HashSet for unique tags.
C# Collections C# Programming Tutorial · Collections
Short answer: SortedSet<T> is a collection that stores unique elements in sorted order. Implements a self-balancing binary search tree (usually a Red-Black Tree). Automatically maintains elements in ascending sorted order. Provides set operations like union, intersection, and difference.
SortedSet<int> sortedSet = new SortedSet<int> { 5, 1, 3 }; sortedSet.Add(2); // Sorted order maintained: {1, 2, 3, 5}
When applying a coupon, ShopNest keeps used coupon codes in a HashSet<string> so “already used?” checks stay fast and unique.
C# Collections C# Programming Tutorial · Collections
Short answer: SortedList<TKey, TValue> is a collection of key-value pairs that maintains the elements sorted by keys. Implements both IDictionary<TKey, TValue> and IList<KeyValuePair<TKey, TValue>>. Keys are automatically sorted in ascending order based on their natural comparer or a provided comparer.
SortedList<int, string> sortedList = new SortedList<int, string>(); sortedList.Add(3, "Three"); sortedList.Add(1, "One"); sortedList.Add(2, "Two"); The elements are stored sorted by key: 1, 2, 3.
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: LinkedList<T> is a doubly linked list collection in C#.
It stores elements as nodes, where each node contains the data and references to the previous and next nodes.
LinkedList<int> numbers = new LinkedList<int>(); numbers.AddLast(10); numbers.AddLast(20);
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: HashSet<T> is a generic collection that stores unique elements with no particular order. It is optimized for fast lookups, additions, and deletions. Use case: When you want to store a collection of unique items without duplicates, such as user IDs, tags, or keywords. HashSet<int> uniqueNumbers = new HashSet<int> { 1, 2, 3 }; uniqueNumbers.Add(4);
C# Collections C# Programming Tutorial · Collections
Short answer: A Stack<T> is a generic collection in C# that stores elements in a Last-In, First-Out (LIFO) order. The last element added is the first one removed Belongs to System.Collections.Generic Real-world use case: Undo operations, browser history, expression evaluation.
Stack<int> numbers = new Stack<int>(); numbers.Push(10); numbers.Push(20); // Top of the stack
C# Collections C# Programming Tutorial · Collections
Short answer: A Queue<T> is a generic collection in C# that stores elements in a First-In, First-Out (FIFO) order. The first item added is the first to be removed. It is part of the System.Collections.Generic namespace. Use case: Modeling real-world queues — e.g., print jobs, task scheduling, or customer service systems.
Queue<string> orders = new Queue<string>(); orders.Enqueue("Order1"); orders.Enqueue("Order2");
C# Collections C# Programming Tutorial · Collections
Short answer: A Dictionary<TKey, TValue> is a generic collection in C# that stores data as key-value pairs. It provides fast lookup, addition, and removal of values based on their keys. Keys must be unique Keys must be non-null (for reference types) Values can be null if the type allows it
Dictionary<string, int> ages = new Dictionary<string, int>(); ages.Add("Alice", 30); ages.Add("Bob", 25); Use case: Storing user profiles by ID, or mapping product names to prices.
ShopNest caches product prices in a Dictionary<string, decimal> keyed by SKU so checkout can look up a price in O(1) instead of scanning a list.
C# Collections C# Programming Tutorial · Collections
Short answer: List<T> is a generic collection in C# that represents a dynamically sized list of elements. It resides in the System.Collections.Generic namespace and grows or shrinks as needed. Use it when: You need a resizable array-like structure You want to perform frequent insertions, deletions, and searches
List<string> names = new List<string>(); names.Add("Alice");
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: List<string> fruits = new List<string> { "Apple", "Banana" }; foreach (var fruit in fruits) { Console.WriteLine(fruit); }
List<string> fruits = new List<string> { "Apple", "Banana" };
foreach (var fruit in fruits)
{ Console.WriteLine(fruit); }
In ShopNest checkout, choose the collection by need: List for ordered cart lines, Dictionary for fast SKU lookup, HashSet for unique tags.
C# Collections C# Programming Tutorial · Collections
Short answer: Generic collections are type-safe and defined using generics (<T>), allowing you to specify the type of elements they hold.
This ensures compile-time type checking and eliminates the need for casting. Non-generic collections, on the other hand, store elements as objects (object type), requiring boxing/unboxing for value types and casting for reference types. Example: // Generic collection List<int> numbers = new List<int>(); numbers.Add(10); // No boxing, type-safe // Non-generic collection ArrayList list = new ArrayList(); int value = (int)list[0]; // Needs casting Real-world use case: In applications dealing with specific data types (e.g., a list of customer IDs), generic collections are ideal. Non-generic collections may be used in legacy systems or when dealing with multiple data types.
list.Add(10); // Boxing occurs
C# Collections C# Programming Tutorial · Collections
Short answer: Internally, Queue<T> uses a circular array to efficiently manage memory and operations. Head pointer marks the front (next item to be dequeued). Tail pointer marks where the next item will be enqueued. Automatically resizes when capacity is exceeded. This implementation ensures constant time operations for enqueue and dequeue.
ShopNest uses a Queue<Order> for “orders waiting for payment confirmation,” and a Stack<Uri> for back-navigation in the admin UI.
C# Collections C# Programming Tutorial · Collections
Short answer: Collection<T> is a base class for creating custom collections. It wraps an IList<T> internally and provides virtual methods for insert, remove, and clear, allowing easy customization. Unlike List<T>, which is optimized for performance, Collection<T> focuses on extensibility. Useful when you want to create a collection with customized behaviors (e.g., validation, event firing).
C# Collections C# Programming Tutorial · Collections
Short answer: List<T> uses a contiguous array internally, so memory is compact and cache-friendly. LinkedList<T> stores elements in nodes with extra pointers (Next and Previous), leading to more memory overhead. Therefore, List<T> generally has lower memory usage and better cache performance than LinkedList<T>, especially for large collections.
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Feature ConcurrentQueue<T> Queue<T> Thread safety Designed for concurrent access Not thread-safe; requires locks Locking mechanism Internal lock-free or fine-grained locking No internal synchronization Suitable for Multi-threaded producer-consumer patterns Single-threaded scenarios or external synchronization ConcurrentQueue<T> allows safe enqueueing and dequeueing by multiple threads simultaneously without…
C# Collections C# Programming Tutorial · Collections
Short answer: LINQ itself doesn’t modify collections directly but produces new collections based on queries. You typically combine LINQ with collection methods to add elements, for example: var evenNumbers = new List<int> { 2, 4, 6 };
var allNumbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var combined = allNumbers.Where(n => n % 2 == 0).ToList(); // Filters even numbers If you want to add LINQ results to a collection:
List<int> filteredNumbers = allNumbers.Where(n => n % 2 == 0).ToList();
C# Collections C# Programming Tutorial · Collections
Short answer: Feature SortedSet<T> HashSet<T> Ordering Maintains sorted order No guaranteed order Implementation Balanced binary search tree Hash table Lookup complexity O(log n) O(1) average Memory overhead Higher (tree nodes) Lower (hash buckets) Use case When sorted data or range queries needed Fast insertion and lookup without ordering
C# Collections C# Programming Tutorial · Collections
Short answer: Feature SortedList<TKey, TValue> Dictionary<TKey, TValue> Order Maintains keys in sorted order No guaranteed order Internal storage Uses two arrays (keys & values) Uses a hash table Lookup complexity O(log n) (binary search) O(1) average Insertion complexity O(n) (due to shifting elements) O(1) average Memory overhead Lower (arrays) Higher (hash buckets, overhead)
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Use AddFirst(value) to add at the start. Use AddLast(value) to add at the end. numbers.AddFirst(5); // Adds 5 at the beginning numbers.AddLast(30); // Adds 30 at the end
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Feature HashSet<T> List<T> Dictionary<TKey, TValue> Allows duplicates? No Yes Keys: No; Values: Yes Order No guaranteed order Maintains insertion order No guaranteed order Lookup speed O(1) average O(n) O(1) average for keys Key-value pairs No (only values) No Yes (key-value pairs)
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Internally, Stack<T> uses an array-based dynamic storage system: When capacity is exceeded, the internal array resizes automatically (typically doubles) The top of the stack is managed with a private index pointer This structure provides fast push and pop operations (constant time on average).
ShopNest uses a Queue<Order> for “orders waiting for payment confirmation,” and a Stack<Uri> for back-navigation in the admin UI.
Install Toolliyo like an app Free
Home-screen access to tutorials, coding practice & career tools — no app store needed.
On iPhone/iPad: tap Share then Add to Home Screen.