Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
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 impl…
Use the Stopwatch class from System.Diagnostics to time operations ccurately. Profile your code using tools like Visual Studio Profiler, dotTrace, or PerfView for deeper insights. Measure specific operations like add, re…
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> a…
Answer: List&lt;string&gt; fruits = new List&lt;string&gt; { "Apple", "Banana" }; foreach (var fruit in fruits) { Console.WriteLine(fruit); } What interviewers expect A clear definition tied to Collection…
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. Automaticall…
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,…
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 Suitab…
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…
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 n…
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(lo…
Answer: rray.Reverse(matrix[i]); } } Explanation: Transpose matrix and then reverse each row to rotate 90° clockwise. What interviewers expect A clear definition tied to Coding in C# Coding Interview projects Trade-offs…
public void RotateMatrix(int[][] matrix) { int n = matrix.Length; // Transpose for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = te…
Follow on: List<string> GenerateParenthesis(int n) { List<string> result = new List<string>(); Generate("", 0, 0, n, result); return result; } void Generate(string current, int open, int close, int max,…
long LargestPrimeFactor(long n) { long maxPrime = -1; while (n % 2 == 0) { maxPrime = 2; n /= 2; } for (long i = 3; i * i <= n; i += 2) { while (n % i == 0) { maxPrime = i; n /= i; } } if (n > 2) maxPrime = n; retu…
Integers int FindMissingNumber(int[] nums) { int low = 0, high = nums.Length - 1; while (low <= high) { int mid = low + (high - low) / 2; if (nums[mid] == mid) low = mid + 1; else high = mid - 1; } return low; } Expla…
bool CanPartition(int[] nums) { int sum = nums.Sum(); Follow on: if (sum % 2 != 0) return false; int target = sum / 2; bool[] dp = new bool[target + 1]; dp[0] = true; foreach (int num in nums) { for (int j = target; j &g…
Answer: bool IsPalindrome(string str) { int left = 0, right = str.Length - 1; while (left &lt; right) { if (str[left] != str[right]) return false; left++; right--; } return true; } What interviewers expect A clear de…
Answer: int[] arr = { 3, 5, 1, 5, 2 }; HashSet&lt;int&gt; set = new HashSet&lt;int&gt;(); foreach (int num in arr) { if (!set.Add(num)) { Console.WriteLine(num); break; } } What interviewers expect A clea…
int[] a = { 1, 3, 5 }; int[] b = { 2, 4, 6 }; int i = 0, j = 0; List<int> result = new List<int>(); while (i < a.Length && j < b.Length) result.Add(a[i] < b[j] ? a[i++] : b[j++]); while (i &l…
Answer: string sentence = "CSharp makes backend development powerful"; string[] words = sentence.Split(' '); string longest = words[0]; foreach (string word in words) { if (word.Length &gt; longest.Length) longest =…
List<object> list = new List<object> { 1, new List<int> { 2, 3 }, 4 }; List<int> result = new List<int>(); void Flatten(List<object> input) { foreach (var item in input) { if (item is…
rr[j] = arr[j + 1]; rr[j + 1] = temp; } } } What interviewers expect A clear definition tied to Coding Scenarios in C# Coding Interview projects Trade-offs (performance, maintainability, security, cost) When you would an…
Answer: string input = "DotNet"; Dictionary&lt;char, int&gt; map = new Dictionary&lt;char, int&gt;(); foreach (char c in input.ToLower()) map[c] = map.ContainsKey(c) ? map[c] + 1 : 1; What interviewers ex…
Answer: bool IsSorted(int[] arr) { for (int i = 0; i &lt; arr.Length - 1; i++) { if (arr[i] &gt; arr[i + 1]) return false; } return true; } What interviewers expect A clear definition tied to Coding Scenarios in…
string input = "Dot@Net#2024!"; StringBuilder sb = new StringBuilder(); foreach (char c in input) { if (char.IsLetterOrDigit(c)) sb.Append(c); } string result = sb.ToString(); Final Notes These questions frequently appea…
C# Collections C# Programming Tutorial · Collections
To implement a custom collection:
interfaces such as ICollection<T>, IEnumerable<T>, or IList<T>.
GetEnumerator(), and indexers.
Example:
public class MyCustomCollection<T> : Collection<T>
{
protected override void InsertItem(int index, T item)
{
// Custom validation
if (item == null) throw new
rgumentNullException(nameof(item));
base.InsertItem(index, item);
}
}C# Collections C# Programming Tutorial · Collections
ccurately.
deeper insights.
multiple times and averaging results.
Example:
var stopwatch = Stopwatch.StartNew();
list.Add(1000);
stopwatch.Stop();
Console.WriteLine($"Add operation took {stopwatch.ElapsedTicks}
ticks");
C# Collections C# Programming Tutorial · Collections
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.
C# Collections C# Programming Tutorial · Collections
Answer: List<string> fruits = new List<string> { "Apple", "Banana" }; foreach (var fruit in fruits) { Console.WriteLine(fruit); }
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
Internally, Queue<T> uses a circular array to efficiently manage memory and operations.
This implementation ensures constant time operations for enqueue and dequeue.
C# Collections C# Programming Tutorial · Collections
cache-friendly.
Previous), leading to more memory overhead.
performance than LinkedList<T>, especially for large collections.
C# Collections C# Programming Tutorial · Collections
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 corrupting the data.
C# Collections C# Programming Tutorial · Collections
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
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
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)
C# Coding Interview C# Programming Tutorial · Coding
Answer: rray.Reverse(matrix[i]); } } Explanation: Transpose matrix and then reverse each row to rotate 90° clockwise.
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding
public void RotateMatrix(int[][] matrix) {
int n = matrix.Length;
// Transpose
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
// Reverse each row
for (int i = 0; i < n; i++) {
Array.Reverse(matrix[i]);
Explanation:
Transpose matrix and then reverse each row to rotate 90° clockwise.
C# Coding Interview C# Programming Tutorial · Coding
Follow on:
List<string> GenerateParenthesis(int n)
{
List<string> result = new List<string>();
Generate("", 0, 0, n, result);
return result;
}
void Generate(string current, int open, int close, int max,
List<string> result)
{
if (current.Length == max * 2)
{
result.Add(current);
return;
}
if (open < max)
Generate(current + "(", open + 1, close, max, result);
if (close < open)
Generate(current + ")", open, close + 1, max, result);
}
Explanation:
Use backtracking to add '(' and ')' only when valid.
C# Coding Interview C# Programming Tutorial · Coding
long LargestPrimeFactor(long n)
{
long maxPrime = -1;
while (n % 2 == 0)
{
maxPrime = 2;
n /= 2;
}
for (long i = 3; i * i <= n; i += 2)
{
while (n % i == 0)
{
maxPrime = i;
n /= i;
}
}
if (n > 2) maxPrime = n;
return maxPrime;
}
Follow on:
Explanation:
Divide out factors of 2, then test odd factors; leftover > 2 is prime.
Miscellaneous Problems
C# Coding Interview C# Programming Tutorial · Coding
Integers
int FindMissingNumber(int[] nums)
{
int low = 0, high = nums.Length - 1;
while (low <= high)
{
int mid = low + (high - low) / 2;
if (nums[mid] == mid)
low = mid + 1;
else
high = mid - 1;
}
return low;
}
Explanation:
In perfect array nums[i] == i; missing number breaks this property, use binary search to find
breakpoint.
Mathematical Problems
C# Coding Interview C# Programming Tutorial · Coding
bool CanPartition(int[] nums)
{
int sum = nums.Sum();
Follow on:
if (sum % 2 != 0) return false;
int target = sum / 2;
bool[] dp = new bool[target + 1];
dp[0] = true;
foreach (int num in nums)
{
for (int j = target; j >= num; j--)
{
dp[j] = dp[j] || dp[j - num];
}
}
return dp[target];
}
Explanation:
Subset sum to check if half the total sum is achievable.
Sorting and Searching
C# Coding Interview C# Programming Tutorial · Coding Scenarios
Answer: bool IsPalindrome(string str) { int left = 0, right = str.Length - 1; while (left < right) { if (str[left] != str[right]) return false; left++; right--; } return true; }
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding Scenarios
Answer: int[] arr = { 3, 5, 1, 5, 2 }; HashSet<int> set = new HashSet<int>(); foreach (int num in arr) { if (!set.Add(num)) { Console.WriteLine(num); break; } }
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding Scenarios
int[] a = { 1, 3, 5 };
int[] b = { 2, 4, 6 };
int i = 0, j = 0;
List<int> result = new List<int>();
while (i < a.Length && j < b.Length)
result.Add(a[i] < b[j] ? a[i++] : b[j++]);
while (i < a.Length) result.Add(a[i++]);
while (j < b.Length) result.Add(b[j++]);
C# Coding Interview C# Programming Tutorial · Coding Scenarios
Answer: string sentence = "CSharp makes backend development powerful"; string[] words = sentence.Split(' '); string longest = words[0]; foreach (string word in words) { if (word.Length > longest.Length) longest = word; }
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding Scenarios
List<object> list = new List<object> { 1, new List<int> { 2, 3 }, 4
};
List<int> result = new List<int>();
void Flatten(List<object> input)
{
foreach (var item in input)
{
if (item is int)
result.Add((int)item);
else
Flatten((List<object>)item);
}
}C# Coding Interview C# Programming Tutorial · Coding Scenarios
rr[j] = arr[j + 1]; rr[j + 1] = temp; } } }
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding Scenarios
Answer: string input = "DotNet"; Dictionary<char, int> map = new Dictionary<char, int>(); foreach (char c in input.ToLower()) map[c] = map.ContainsKey(c) ? map[c] + 1 : 1;
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding Scenarios
Answer: bool IsSorted(int[] arr) { for (int i = 0; i < arr.Length - 1; i++) { if (arr[i] > arr[i + 1]) return false; } return true; }
In a production C# Coding Interview 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# Coding Interview C# Programming Tutorial · Coding Scenarios
string input = "Dot@Net#2024!";
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (char.IsLetterOrDigit(c))
sb.Append(c);
}
string result = sb.ToString();
Final Notes