Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
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; } } publi…
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> numb…
Answer: Use a foreach loop which iterates over the elements in sorted ascending order: foreach (var item in sortedSet) { Console.WriteLine(item); } What interviewers expect A clear definition tied to Collections in C# Co…
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 it…
Answer: No, HashSet&lt;T&gt; 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 lready exists Wh…
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. What interviewers expect A clear definition tied to Collections in…
Use the Peek() method to view the front element without removing it. Example: Queue<string> tasks = new Queue<string>(); tasks.Enqueue("Task1"); string nextTask = tasks.Peek(); // Returns "Task1", does not re…
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.…
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…
Operation LinkedList<T> List<T> Indexed access O(n) (no indexing) O(1) (direct access) dd/Remove at start/end O(1) O(n) (start), O(1) (end) dd/Remove in middle O(1) (with node ref) O(n) (shifts elements) Memo…
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,…
Answer: Use the Clear() method to remove all elements. Example: tasks.Clear(); fter calling Clear(), the queue is empty (Count == 0). What interviewers expect A clear definition tied to Collections in C# Collections proj…
Answer: 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 What interviewers expect A clear de…
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. What interviewers expect A clear definition tied to Coll…
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(); What intervi…
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) Con…
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 What interviewers expect A clear definiti…
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 rrayList arr = new ArrayList()…
Answer: Use a foreach loop; the iteration order is not guaranteed. foreach (var item in uniqueNumbers) { Console.WriteLine(item); } 📘 C# LinkedList&lt;T&gt; – Interview Questions &amp; Answers What interview…
Answer: Use the Clear() method to remove all elements. stack.Clear(); fter this, Count becomes 0, and the internal array is reset. What interviewers expect A clear definition tied to Collections in C# Collections project…
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&lt;T&g…
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["Jo…
Answer: Use the Sort() method or provide a custom comparer. Example: list.Sort(); // Default sort (ascending) list.Sort((a, b) =&gt; b.CompareTo(a)); // Descending What interviewers expect A clear definition tied to…
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> – In…
Use a foreach loop with KeyValuePair<TKey, TValue>: foreach (KeyValuePair<string, int> pair in dictionary) { Console.WriteLine($"Key: {pair.Key}, Value: {pair.Value}"); } Or use deconstruction (C# 7+): foreac…
C# Collections C# Programming Tutorial · Collections
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.
C# Collections C# Programming Tutorial · Collections
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 & AnswersC# Collections C# Programming Tutorial · Collections
Answer: Use a foreach loop which iterates over the elements in sorted ascending order: foreach (var item in sortedSet) { Console.WriteLine(item); }
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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
C# Collections C# Programming Tutorial · Collections
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 lready exists
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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.
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
Use the Peek() method to view the front element without removing it.
Example:
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.
C# Collections C# Programming Tutorial · Collections
Example:
bool hasItem = numbers.Contains(10);
int index = numbers.IndexOf(10);
var result = numbers.Find(x => x > 50);C# Collections C# Programming Tutorial · Collections
IComparer.
Example:
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.
C# Collections C# Programming Tutorial · Collections
Operation LinkedList<T> List<T>
Indexed access O(n) (no indexing) O(1) (direct access)
dd/Remove at
start/end
O(1) O(n) (start), O(1) (end)
dd/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 & AnswersC# Collections C# Programming Tutorial · Collections
Union: Combines all unique elements from both sets
set1.UnionWith(set2);
set1.IntersectWith(set2);
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}C# Collections C# Programming Tutorial · Collections
Answer: Use the Clear() method to remove all elements. Example: tasks.Clear(); fter calling Clear(), the queue is empty (Count == 0).
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
Answer: 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 a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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.
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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();
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
Example:
foreach (var key in dictionary.Keys)
Console.WriteLine(key);
foreach (var value in dictionary.Values)
Console.WriteLine(value);
C# Collections C# Programming Tutorial · Collections
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
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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
rrayList arr = new ArrayList();
rr.Add(1);
rr.Add("text"); // Allowed, but risky
// Generic
List<int> list = new List<int>();
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>();
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.
C# Collections C# Programming Tutorial · Collections
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
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
Answer: Use the Clear() method to remove all elements. stack.Clear(); fter this, Count becomes 0, and the internal array is reset.
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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 &
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
Example:
dictionary.Add("John", 25);
dictionary.Add("John", 30); // Exception
dictionary["John"] = 30; // Overwrites the value safelyC# Collections C# Programming Tutorial · Collections
Answer: Use the Sort() method or provide a custom comparer. Example: list.Sort(); // Default sort (ascending) list.Sort((a, b) => b.CompareTo(a)); // Descending
In a production C# Collections application, teams apply this when handling user-facing features or integration boundaries. For example, you might use it during a sprint where reliability and observability matter—logging metrics, validating edge cases, and documenting the decision in an ADR so future developers understand why the approach was chosen.
Tip: Practice aloud on Toolliyo mock interview or the Interview Q&A section before your real interview.
C# Collections C# Programming Tutorial · Collections
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
C# Collections C# Programming Tutorial · Collections
Use a foreach loop with KeyValuePair<TKey, TValue>:
foreach (KeyValuePair<string, int> pair in dictionary)
{
Console.WriteLine($"Key: {pair.Key}, Value: {pair.Value}");
}
Or use deconstruction (C# 7+):
foreach (var (key, value) in dictionary)
{
Console.WriteLine($"{key} = {value}");
}