Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
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: Push() → O(1) average, O(n) worst-case (if resizing needed) Pop() → O(1) These operations are fast and efficient due to the internal array structure. Real-world example (ShopNest) ShopNest uses a Queue<O…
Short answer: Enqueue() → O(1) average case Dequeue() → O(1) average case Due to the internal circular array and pointer arithmetic, both operations are highly efficient unless resizing is needed (which is O(n), but infr…
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: Accessing an element by index is O(1) (constant time) — same as arrays. Example: int first = numbers[0]; // O(1) Example code Accessing an element by index is O(1) (constant time) — same as arrays. Example:…
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: Adding or removing at the start or end: O(1) Adding or removing at an arbitrary position (if you already have the node reference): O(1) Searching for a node by value: O(n), because traversal is required Rea…
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: The average time complexity is O(1) (constant time), thanks to hash-based indexing. However, in worst-case scenarios (rare), it can degrade to O(n). Say this in the interview Define — one clear sentence (th…
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: 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…
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: Push() → O(1) average, O(n) worst-case (if resizing needed) Pop() → O(1) These operations are fast and efficient due to the internal array structure.
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: Enqueue() → O(1) average case Dequeue() → O(1) average case Due to the internal circular array and pointer arithmetic, both operations are highly efficient unless resizing is needed (which is O(n), but infrequent).
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: 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: Accessing an element by index is O(1) (constant time) — same as arrays. Example: int first = numbers[0]; // O(1)
Accessing an element by index is O(1) (constant time) — same as arrays. Example: int first = numbers[0]; // O(1)
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: 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: Adding or removing at the start or end: O(1) Adding or removing at an arbitrary position (if you already have the node reference): O(1) Searching for a node by value: O(n), because traversal is required
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: The average time complexity is O(1) (constant time), thanks to hash-based indexing. However, in worst-case scenarios (rare), it can degrade to O(n).
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: 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
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.