Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: IList<T> extends ICollection<T> and allows: Indexed access (like arrays) Inserting and removing at specific positions Example code IList<string> fruits = new List<string>(); fruits.A…
Short answer: Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists W…
Short answer: Actually, SortedList<TKey, TValue> stores key-value pairs sorted by keys. To store items in a specific order, use the key to represent the sorting criteria. Keys must be unique and implement IComparab…
Short answer: Due to the underlying balanced tree structure, these operations have O(log n) time complexity. 📘 C# Collection Initializers & LINQ – Interview Questions & Answers Real-world example (ShopNest) When…
Short answer: Operation LinkedList<T> List<T> Indexed access O(n) (no indexing) O(1) (direct access) Add/Remove at start/end O(1) O(n) (start), O(1) (end) Add/Remove in middle O(1) (with node ref) O(n) (shift…
Short answer: Union: Combines all unique elements from both sets set1.UnionWith(set2); Intersection: Keeps only elements present in both sets set1.IntersectWith(set2); Example: HashSet<int> set1 = new HashSet<in…
Short answer: Peek() returns the top element without removing it. It’s helpful for: Conditional checks Previewing what's next Preventing accidental removal Example: if (stack.Count > 0) Example code { var current = st…
Short answer: Use the Clear() method to remove all elements. Example: tasks.Clear(); After calling Clear(), the queue is empty (Count == 0). Example code Use the Clear() method to remove all elements. Example: tasks.Clea…
Short answer: Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is g…
Short answer: Method Purpose Add() Adds one item AddRange () Adds multiple items (collection) Example: list.Add(1); // One item list.AddRange(new[] { 2, 3, 4 }); // Multiple Example code Method Purpose Add() Adds one ite…
Short answer: These interfaces provide read-only access to collections: IReadOnlyCollection<T> provides Count and enumeration. IReadOnlyList<T> provides index-based access without modification. Example code I…
Short answer: dd()? Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. list.Insert(0, 99); // Add at beginning list.Add(100); // Add at end dd()? Insert(index, item) adds an item…
Short answer: Method Purpose Return Value Add(item) Adds item if not already present true if added, false if duplicate Contains(it em) Checks if item exists in the set true if found, false otherwise Real-world example (S…
Short answer: Use the Count property. if (stack.Count == 0) Example code { Console.WriteLine("Stack is empty"); } Unlike some languages, C# stacks do not provide an IsEmpty property. Real-world example (ShopNes…
Short answer: Use a foreach loop. Iteration does not modify the queue. Example: foreach (var order in orders) Example code { Console.WriteLine(order); } You can also use .ToArray() if needed: string[] items = orders.ToAr…
Short answer: dictionary.Keys – returns a collection of all keys dictionary.Values – returns a collection of all values Example: foreach (var key in dictionary.Keys) Console.WriteLine(key); foreach (var value in dictiona…
Short answer: Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. Example: list.Insert(0, 99); // Add at beginning list.Add(100); // Add at end Example code Insert(index, item) ad…
Short answer: Feature Non-Generic Generic Type Safety No Yes Performanc Slower (boxing/unboxing) Faster Casting Required Not required Syntax Less readable Clean and type-specific Examples: // Non-generic ArrayList arr =…
Short answer: Use a foreach loop; the iteration order is not guaranteed. foreach (var item in uniqueNumbers) { Console.WriteLine(item); } 📘 C# LinkedList<T> – Interview Questions & Answers Example code Use a f…
Short answer: Use the Clear() method to remove all elements. stack.Clear(); After this, Count becomes 0, and the internal array is reset. Example code Use the Clear() method to remove all elements. stack.Clear(); After t…
Short answer: Again, use the Peek() method: var front = queue.Peek(); Difference from Dequeue(): Peek() returns the front element without removing it. Dequeue() returns and removes the front element. 📘 C# Stack<T>…
Short answer: Using Add() will throw a System.ArgumentException Using the indexer (dictionary[key] = value) will overwrite the existing value Example: dictionary.Add("John", 25); Example code dictionary.Add(&qu…
Short answer: Use the Sort() method or provide a custom comparer. Example: list.Sort(); // Default sort (ascending) list.Sort((a, b) => b.CompareTo(a)); // Descending Example code Use the Sort() method or provide a cu…
Short answer: Feature IEnumerable <T> ICollection<T> Read-only Yes No Modification Not supported Supports Add, Remove, Clear Count property No Yes (Count) Example code IEnumerable<string> names = new Li…
Short answer: Use a foreach loop, which iterates from top to bottom (LIFO order). Example: foreach (var item in stack) Example code { Console.WriteLine(item); } This does not modify the stack — it's read-only iteration.…
C# Collections C# Programming Tutorial · Collections
Short answer: IList<T> extends ICollection<T> and allows: Indexed access (like arrays) Inserting and removing at specific positions
IList<string> fruits = new List<string>(); fruits.Add("Apple"); fruits.Insert(0, "Banana"); // Insert at index 0 Console.WriteLine(fruits[1]); // Access by index Real-world use case: Use IList<T> when order matters and you need to access, insert, or remove elements at specific positions, like reordering tasks in a to-do list.
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: Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } //… dictionary["Unknown"]; // throws…… Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe?…
Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist
if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } // dictionary["Unknown"]; // throws KeyNotFoundException if missing Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist Example: if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } //… dictionary["Unknown"]; // throws… Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist Example: if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } // dictionary["Unknown"]; // throws KeyNotFoundException if missing
C# Collections C# Programming Tutorial · Collections
Short answer: Actually, SortedList<TKey, TValue> stores key-value pairs sorted by keys. To store items in a specific order, use the key to represent the sorting criteria. Keys must be unique and implement IComparable or provide a custom IComparer.
SortedList<int, string> sortedList = new SortedList<int, string>(); sortedList.Add(10, "Ten"); sortedList.Add(5, "Five"); sortedList.Add(20, "Twenty"); // Items automatically sorted by keys: 5, 10, 20 If you want to sort by custom criteria, implement an IComparer and pass it to the SortedList constructor.
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: Due to the underlying balanced tree structure, these operations have O(log n) time complexity. 📘 C# Collection Initializers & LINQ – Interview Questions & Answers
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: Operation LinkedList<T> List<T> Indexed access O(n) (no indexing) O(1) (direct access) Add/Remove at start/end O(1) O(n) (start), O(1) (end) Add/Remove in middle O(1) (with node ref) O(n) (shifts elements) Memory overhead Higher (extra pointers) Lower (array storage) Summary: Use LinkedList<T> when you need fast insertions/deletions anywhere and don’t require indexed access.
Use List<T> for fast random access and better memory efficiency. 📘 C# SortedList<TKey, TValue> – Interview Questions & Answers
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: Union: Combines all unique elements from both sets set1.UnionWith(set2); Intersection: Keeps only elements present in both sets set1.IntersectWith(set2); Example: HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.UnionWith(set2); // set1 = {1, 2, 3, 4, 5}
set1.IntersectWith(set2); // set1 = {3, 4, 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: Peek() returns the top element without removing it. It’s helpful for: Conditional checks Previewing what's next Preventing accidental removal Example: if (stack.Count > 0)
{
var current = stack.Peek();
} Throws InvalidOperationException if the stack is empty.
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: Use the Clear() method to remove all elements. Example: tasks.Clear(); After calling Clear(), the queue is empty (Count == 0).
Use the Clear() method to remove all elements. Example: tasks.Clear(); After calling Clear(), the queue is empty (Count == 0).
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: Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist
if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } // dictionary["Unknown"]; // throws KeyNotFoundException if missing
C# Collections C# Programming Tutorial · Collections
Short answer: Method Purpose Add() Adds one item AddRange () Adds multiple items (collection) Example: list.Add(1); // One item list.AddRange(new[] { 2, 3, 4 }); // Multiple
Method Purpose Add() Adds one item AddRange () Adds multiple items (collection) Example: list.Add(1); // One item
list.AddRange(new[] { 2, 3, 4 }); // Multiple
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: These interfaces provide read-only access to collections: IReadOnlyCollection<T> provides Count and enumeration. IReadOnlyList<T> provides index-based access without modification.
IReadOnlyList<int> ids = new List<int> { 1, 2, 3 }; Console.WriteLine(ids[0]); // Access element // ids[0] = 10; // Compile-time error – read-only Real-world use case: Useful in APIs where you want to expose collection data but prevent consumers from modifying it—e.g., returning a list of supported currencies from a service.
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: dd()? Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. list.Insert(0, 99); // Add at beginning list.Add(100); // Add at end dd()? Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list.
list.Insert(0, 99); // Add at beginning… list.Add(100); // Add at end dd()? Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. Example: list.Insert(0, 99); // Add at beginning list.Add(100); // Add at end dd()? Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. Example: list.Insert(0, 99); // Add at beginning… list.Add(100); // Add at 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: Method Purpose Return Value Add(item) Adds item if not already present true if added, false if duplicate Contains(it em) Checks if item exists in the set true if found, false otherwise
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: Use the Count property. if (stack.Count == 0)
{ Console.WriteLine("Stack is empty"); } Unlike some languages, C# stacks do not provide an IsEmpty property.
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: Use a foreach loop. Iteration does not modify the queue. Example: foreach (var order in orders)
{ Console.WriteLine(order); } You can also use .ToArray() if needed: string[] items = orders.ToArray();
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: dictionary.Keys – returns a collection of all keys dictionary.Values – returns a collection of all values Example: foreach (var key in dictionary.Keys) Console.WriteLine(key); foreach (var value in dictionary.Values) Console.WriteLine(value);
dictionary.Keys – returns a collection of all keys dictionary.Values – returns a collection of all values Example: foreach (var key in dictionary.Keys) Console.WriteLine(key); foreach (var value in dictionary.Values) Console.WriteLine(value);
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: Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. Example: list.Insert(0, 99); // Add at beginning list.Add(100); // Add at end
Insert(index, item) adds an item at a specific index. Add(item) adds to the end of the list. Example: list.Insert(0, 99); // Add at beginning
list.Add(100); // Add at 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 Non-Generic Generic Type Safety No Yes Performanc Slower (boxing/unboxing) Faster Casting Required Not required Syntax Less readable Clean and type-specific Examples: // Non-generic ArrayList arr = new ArrayList(); arr.Add(1); arr.Add("text"); // Allowed, but risky // Generic List<int> list = new List<int>(); dict["id"] = 101; Real-world use case: Generic collections are recommended for new development due…
to safety and performance. Non-generic collections are often found in older legacy systems.
list.Add(1); // list.Add("text"); // Compile-time error // Hashtable vs Dictionary Hashtable ht = new Hashtable();
ht["id"] = 101;
Dictionary<string, int> dict = new Dictionary<string, int>();
C# Collections C# Programming Tutorial · Collections
Short answer: Use a foreach loop; the iteration order is not guaranteed. foreach (var item in uniqueNumbers) { Console.WriteLine(item); } 📘 C# LinkedList<T> – Interview Questions & Answers
Use a foreach loop; the iteration order is not guaranteed. foreach (var item in uniqueNumbers)
{ Console.WriteLine(item); } 📘 C# LinkedList<T> – Interview Questions & Answers
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: Use the Clear() method to remove all elements. stack.Clear(); After this, Count becomes 0, and the internal array is reset.
Use the Clear() method to remove all elements. stack.Clear(); After this, Count becomes 0, and the internal array is reset.
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: Again, use the Peek() method: var front = queue.Peek(); Difference from Dequeue(): Peek() returns the front element without removing it. Dequeue() returns and removes the front element. 📘 C# Stack<T> – Interview Questions & Answers
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: Using Add() will throw a System.ArgumentException Using the indexer (dictionary[key] = value) will overwrite the existing value Example: dictionary.Add("John", 25);
dictionary.Add("John", 30); // Exception
dictionary["John"] = 30; // Overwrites the value safely
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: Use the Sort() method or provide a custom comparer. Example: list.Sort(); // Default sort (ascending) list.Sort((a, b) => b.CompareTo(a)); // Descending
Use the Sort() method or provide a custom comparer. Example: list.Sort(); // Default sort (ascending)
list.Sort((a, b) => b.CompareTo(a)); // Descending
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 IEnumerable <T> ICollection<T> Read-only Yes No Modification Not supported Supports Add, Remove, Clear Count property No Yes (Count)
IEnumerable<string> names = new List<string> { "A", "B" }; // names.Add("C"); // Error ICollection<string> nameCollection = new List<string> { "A", "B" }; nameCollection.Add("C"); // Allowed Real-world scenario: Use IEnumerable<T> for read-only, query-focused tasks like LINQ. Use ICollection<T> when managing and modifying the collection.
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 a foreach loop, which iterates from top to bottom (LIFO order). Example: foreach (var item in stack)
{ Console.WriteLine(item); } This does not modify the stack — it's read-only iteration. 📘 C# HashSet<T> – Interview Questions & Answers
ShopNest uses a Queue<Order> for “orders waiting for payment confirmation,” and a Stack<Uri> for back-navigation in the admin UI.