Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: Returns true if the key was found and removed, false otherwise. Example code Use the Remove(key) method: dictionary.Remove("key1"); Real-world example (ShopNest) ShopNest caches product prices in…
Short answer: Use methods like: Remove(item) – removes first occurrence RemoveAt(index) – removes by index RemoveAll(predicate) – removes all matching a condition Clear() – removes all items Example code numbers.Remove(1…
Short answer: Deep cloning copies the collection and all objects inside it recursively. Ways to deep clone: Implement ICloneable in your objects with deep clone logic. Use serialization (binary, XML, JSON) to serialize a…
Short answer: Pre-allocate capacity when you know the expected size (e.g., new List<T>(capacity)) to avoid frequent resizing. Explain a bit more Use value types or structs when appropriate to reduce reference overh…
Short answer: Operation Method Description Union UnionWith() Adds all elements from another set Intersection IntersectWit h() Keeps only elements present in both sets Difference ExceptWith() Removes elements found in ano…
Short answer: Use a foreach loop to traverse the linked list from start to end. foreach (var num in numbers) Example code { Console.WriteLine(num); } Real-world example (ShopNest) In ShopNest, an order page loads product…
Short answer: Add all elements from the collection to a HashSet<T>, which automatically removes duplicates. List<int> numbers = new List<int> { 1, 2, 2, 3, 3, 4 }; HashSet<int> uniqueNumbers = new…
Short answer: ContainsKey(key) – checks for key existence ContainsValue(value) – checks for value Example: dictionary.ContainsKey("Alice"); // true/false dictionary.ContainsValue(30); // true/false Example code…
Short answer: ICollection<T> extends IEnumerable<T> and adds features like: Counting (Count property) Adding and removing items (Add, Remove) Checking for existence (Contains) Difference: IEnumerable<T>…
Short answer: Define your custom object class. Create a collection class that holds objects of that type using generics or directly. Example: public class Employee Example code { public int Id { get; set; } public string…
Short answer: Use methods like ToList(), ToArray(), or ToDictionary() to convert LINQ query results to different collection types. Explain a bit more Examples: var numbers = new int[] { 1, 2, 3, 4, 5 }; // Convert to Lis…
Short answer: Use a foreach loop which iterates over the elements in sorted ascending order: foreach (var item in sortedSet) Example code { Console.WriteLine(item); } Real-world example (ShopNest) When applying a coupon,…
Short answer: You can use a foreach loop over KeyValuePair<TKey, TValue> elements, which iterates in sorted key order: foreach (var kvp in sortedList) { Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}&q…
Short answer: No, HashSet<T> does not allow duplicates. Attempting to add a duplicate value will return false and not change the set. Example code bool added = uniqueNumbers.Add(2); // returns false because 2 alrea…
Short answer: Use the Peek() method. Example: int top = stack.Peek(); This is useful when you just want to inspect the top element without altering the stack. Example code Use the Peek() method. Example: int top = stack.…
Short answer: Use the Peek() method to view the front element without removing it. Example code Queue<string> tasks = new Queue<string>(); tasks.Enqueue("Task1"); string nextTask = tasks.Peek(); //…
Short answer: Contains(item) IndexOf(item) Find(predicate) FindAll(predicate) Exists(predicate) BinarySearch(item) (for sorted lists) Example: bool hasItem = numbers.Contains(10); Example code int index = numbers.IndexOf…
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: 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: 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: 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: 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…
C# Collections C# Programming Tutorial · Collections
Short answer: Returns true if the key was found and removed, false otherwise.
Use the Remove(key) method: dictionary.Remove("key1");
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 methods like: Remove(item) – removes first occurrence RemoveAt(index) – removes by index RemoveAll(predicate) – removes all matching a condition Clear() – removes all items
numbers.Remove(10); numbers.RemoveAt(0); numbers.RemoveAll(x => x > 100); numbers.Clear();
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: Deep cloning copies the collection and all objects inside it recursively. Ways to deep clone: Implement ICloneable in your objects with deep clone logic. Use serialization (binary, XML, JSON) to serialize and deserialize objects. Manually create new instances of each item. Example (manual): List<MyClass> DeepClone(List<MyClass> original)
{
return original.Select(item => item.Clone()).ToList();
} Note: MyClass must implement a Clone() method that performs deep copy.
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: Pre-allocate capacity when you know the expected size (e.g., new List<T>(capacity)) to avoid frequent resizing.
Use value types or structs when appropriate to reduce reference overhead. Choose collections with lower overhead for your use case (e.g., List<T> instead of LinkedList<T> if indexing is needed). Use immutable collections or pooling to minimize allocations. Avoid unnecessary boxing/unboxing by using generic collections instead of non-generic. Regularly trim collections if supported (e.g., List<T>.TrimExcess()). 📘 C# Advanced Collection Topics – Interview Questions & Answers
C# Collections C# Programming Tutorial · Collections
Short answer: Operation Method Description Union UnionWith() Adds all elements from another set Intersection IntersectWit h() Keeps only elements present in both sets Difference ExceptWith() Removes elements found in another set
SortedSet<int> set1 = new SortedSet<int> { 1, 2, 3 }; SortedSet<int> set2 = new SortedSet<int> { 3, 4, 5 }; set1.UnionWith(set2); // {1, 2, 3, 4, 5} set1.IntersectWith(set2); // {3, 4, 5} (if applied on the original set1) set1.ExceptWith(set2); // {1, 2} (if applied on the original set1)
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 a foreach loop to traverse the linked list from start to end. foreach (var num in numbers)
{ Console.WriteLine(num); }
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: Add all elements from the collection to a HashSet<T>, which automatically removes duplicates. List<int> numbers = new List<int> { 1, 2, 2, 3, 3, 4 }; HashSet<int> uniqueNumbers = new HashSet<int>(numbers); Now, uniqueNumbers contains only unique values: {1, 2, 3, 4}.
Add all elements from the collection to a HashSet<T>, which automatically removes duplicates. List<int> numbers = new List<int> { 1, 2, 2, 3, 3, 4 };
HashSet<int> uniqueNumbers = new HashSet<int>(numbers); Now, uniqueNumbers contains only unique values: {1, 2, 3, 4}.
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: ContainsKey(key) – checks for key existence ContainsValue(value) – checks for value Example: dictionary.ContainsKey("Alice"); // true/false dictionary.ContainsValue(30); // true/false
ContainsKey(key) – checks for key existence ContainsValue(value) – checks for value Example: dictionary.ContainsKey("Alice"); // true/false
dictionary.ContainsValue(30); // true/false
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: ICollection<T> extends IEnumerable<T> and adds features like: Counting (Count property) Adding and removing items (Add, Remove) Checking for existence (Contains) Difference: IEnumerable<T> is read-only and forward-only iteration. ICollection<T> adds modification capabilities.
ICollection<int> numbers = new List<int>(); numbers.Add(5); numbers.Remove(5); Console.WriteLine(numbers.Count); Real-world use case: Use ICollection<T> when you need to manipulate the collection (add/remove items), such as managing an in-memory cart of products in a shopping application.
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: Define your custom object class. Create a collection class that holds objects of that type using generics or directly. Example: public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
public class EmployeeCollection : Collection<Employee>
{ // You can add custom methods specific to Employee collection here } Or simply use List<Employee> directly for flexibility.
Prefer List<Order> over ArrayList in ShopNest. Generics catch type mistakes at compile time and avoid boxing when you store ints or decimals.
C# Collections C# Programming Tutorial · Collections
Short answer: Use methods like ToList(), ToArray(), or ToDictionary() to convert LINQ query results to different collection types.
Examples: var numbers = new int[] { 1, 2, 3, 4, 5 }; // Convert to List<int> List<int> numberList = numbers.ToList(); // Convert to array int[] numberArray = numberList.ToArray(); // Convert to dictionary (key = number, value = square) Dictionary<int, int> numberDict = numbers.ToDictionary(n => n, n => n * n); 📘 C# Thread-Safe Collections – Interview Questions & Answers
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 a foreach loop which iterates over the elements in sorted ascending order: foreach (var item in sortedSet)
{ Console.WriteLine(item); }
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: You can use a foreach loop over KeyValuePair<TKey, TValue> elements, which iterates in sorted key order: foreach (var kvp in sortedList) { Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}"); } You can also iterate over keys or values separately: foreach (var key in sortedList.Keys) { /* ... */ }
foreach (var value in sortedList.Values) { /* ... */ } 📘 C# SortedSet<T> – 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: No, HashSet<T> does not allow duplicates. Attempting to add a duplicate value will return false and not change the set.
bool added = uniqueNumbers.Add(2); // returns false because 2 already exists
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 Peek() method. Example: int top = stack.Peek(); This is useful when you just want to inspect the top element without altering the stack.
Use the Peek() method. Example: int top = stack.Peek(); This is useful when you just want to inspect the top element without altering the stack.
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 Peek() method to view the front element without removing it.
Queue<string> tasks = new Queue<string>(); tasks.Enqueue("Task1"); string nextTask = tasks.Peek(); // Returns "Task1", does not remove it Useful when you want to see what’s next without modifying the queue.
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: Contains(item) IndexOf(item) Find(predicate) FindAll(predicate) Exists(predicate) BinarySearch(item) (for sorted lists) Example: bool hasItem = numbers.Contains(10);
int index = numbers.IndexOf(10);
var result = numbers.Find(x => x > 50);
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: 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: 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: 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: 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: 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.