Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
LinkedList<T> is a doubly linked list collection in C#. It stores elements as nodes, where each node contains the data and references to the previous and next nodes. Allows efficient insertions and deletions anywhe…
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…
ConcurrentDictionary<TKey, TValue> is a thread-safe dictionary designed for concurrent access by multiple threads without needing external synchronization (locks). Supports atomic operations like adding, updating,…
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…
SortedSet<T> is a collection that stores unique elements in sorted order. Implements a self-balancing binary search tree (usually a Red-Black Tree). Automatically maintains elements in ascending sorted order. Provi…
SortedList<TKey, TValue> is a collection of key-value pairs that maintains the elements sorted by keys. Implements both IDictionary<TKey, TValue> and IList<KeyValuePair<TKey, TValue>>. Keys are au…
LinkedList<T> is a doubly linked list collection in C#. It stores elements as nodes, where each node contains the data and references to the previous and next nodes. Allows efficient insertions and deletions anywhe…
int MatrixChainOrder(int[] dims) { int n = dims.Length - 1; int[,] dp = new int[n, n]; for (int l = 2; l <= n; l++) { Follow on: for (int i = 0; i < n - l + 1; i++) { int j = i + l - 1; dp[i, j] = int.MaxValue; for…
rray.Reverse(words); string result = string.Join(" ", words); What interviewers expect A clear definition tied to Coding Scenarios in C# Coding Interview projects Trade-offs (performance, maintainability, security, cost)…
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
LinkedList<T> is a doubly linked list collection in C#. It stores elements as nodes,
where each node contains the data and references to the previous and next nodes.
Example:
LinkedList<int> numbers = new LinkedList<int>();
numbers.AddLast(10);
numbers.AddLast(20);
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
ConcurrentDictionary<TKey, TValue> is a thread-safe dictionary designed for
concurrent access by multiple threads without needing external synchronization (locks).
Example:
ConcurrentDictionary<int, string> concurrentDict = new
ConcurrentDictionary<int, string>();
concurrentDict.TryAdd(1, "One");
concurrentDict.TryUpdate(1, "Uno", "One");
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
SortedSet<T> is a collection that stores unique elements in sorted order.
Example:
SortedSet<int> sortedSet = new SortedSet<int> { 5, 1, 3 };
sortedSet.Add(2); // Sorted order maintained: {1, 2, 3, 5}
C# Collections C# Programming Tutorial · Collections
SortedList<TKey, TValue> is a collection of key-value pairs that maintains the
elements sorted by keys.
IList<KeyValuePair<TKey, TValue>>.
or a provided comparer.
Example:
SortedList<int, string> sortedList = new SortedList<int, string>();
sortedList.Add(3, "Three");
sortedList.Add(1, "One");
sortedList.Add(2, "Two");
The elements are stored sorted by key: 1, 2, 3.
C# Collections C# Programming Tutorial · Collections
LinkedList<T> is a doubly linked list collection in C#. It stores elements as nodes,
where each node contains the data and references to the previous and next nodes.
Example:
LinkedList<int> numbers = new LinkedList<int>();
numbers.AddLast(10);
numbers.AddLast(20);
C# Coding Interview C# Programming Tutorial · Coding
int MatrixChainOrder(int[] dims)
{
int n = dims.Length - 1;
int[,] dp = new int[n, n];
for (int l = 2; l <= n; l++)
{
Follow on:
for (int i = 0; i < n - l + 1; i++)
{
int j = i + l - 1;
dp[i, j] = int.MaxValue;
for (int k = i; k < j; k++)
{
int cost = dp[i, k] + dp[k + 1, j] + dims[i] *
dims[k + 1] * dims[j + 1];
dp[i, j] = Math.Min(dp[i, j], cost);
}
}
}
return dp[0, n - 1];
}
Explanation:
DP calculates minimal cost to multiply chain of matrices by trying all partitions.
C# Coding Interview C# Programming Tutorial · Coding Scenarios
rray.Reverse(words); string result = string.Join(" ", words);
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
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