Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fi…
Short answer: What does DefaultIfEmpty() do? Returns a default value if the sequence is empty (e.g. in left join). Say this in the interview Define — one clear sentence (the short answer above). Example — relate it to a…
Short answer: var topEarners = employees .Where(e => e.Salary > employees.Average(x => x.Salary)); Example code var topEarners = employees .Where(e => e.Salary > employees.Average(x => x.Salary)); Real-…
Short answer: .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT&q…
Short answer: Check if a department has more than 2 employees? Explain a bit more bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool de…
Short answer: var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id)…
Short answer: var sum = employees .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Example code var sum = employees .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Real-world example (ShopNes…
Short answer: Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department) .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }…
Short answer: var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNam…
Short answer: Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(…
Short answer: var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merg…
Short answer: var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0)…
Short answer: var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e…
Short answer: var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.R…
Short answer: string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", empl…
Short answer: var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var fi…
Short answer: var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.Fir…
Short answer: How to handle exceptions in LINQ? Use try-catch around enumeration, not the query: try { var result = employees.First(e => e.Salary > 999999); } catch (Exception ex) { Console.WriteLine("No match…
Short answer: What's the difference between Select() and SelectMany()? Select() returns collection of collections. SelectMany() flattens them. Real-world example (ShopNest) ShopNest maps entities to DTOs with .Select(o =…
Short answer: var result = employees .Where(e => e.Department == "IT"); var result = employees .Where(e => e.Department == "IT"); var result = employees .Where(e => e.Department == "IT&q…
Short answer: Chaining multiple Where() calls var result = employees .Where(e => e.Salary > 70000) .Where(e => e.Department == "IT"); Chaining multiple Where() calls var result = employees .Where(e =&g…
Short answer: Find longest employee name var longest = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find longest employee name var longest = employees .OrderByDescending(e => e.Name.Length) .…
Short answer: Case-insensitive filtering var hr = employees .Where(e => e.Department.Equals("hr", StringComparison.OrdinalIgnoreCase)); Case-insensitive filtering var hr = employees .Where(e => e.Departme…
Short answer: Select employee with second-highest salary var secondHighest = employees .OrderByDescending(e => e.Salary) .Skip(1) .FirstOrDefault(); ✅ Skips the top salary and selects the next one. Explain a bit more…
Short answer: Find employee with longest name var longestName = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find employee with longest name var longestName = employees .OrderByDescending(e =>…
LINQ LINQ Tutorial · LINQ
Short answer: var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5);
var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: What does DefaultIfEmpty() do? Returns a default value if the sequence is empty (e.g. in left join).
LINQ LINQ Tutorial · LINQ
Short answer: var topEarners = employees .Where(e => e.Salary > employees.Average(x => x.Salary));
var topEarners = employees
.Where(e => e.Salary > employees.Average(x => x.Salary));
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2;
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: Check if a department has more than 2 employees?
bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool deptCheck = employees .Count(e => e.Department == "IT") > 2;
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id);
var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var sum = employees .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) });
var sum = employees
.Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) });
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department) .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department)… Select(g => new { g.Key, Sum =…… Sum salary by department, only if salary > 70k Follow : var…
sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department) .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department)… Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) });
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key);
var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key);
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find… duplicate names var dupNames = employees .GroupBy(e => e.Name)…
Where(g => g.Count() > 1) .Select(g => g.Key);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2);
var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0);
ShopNest maps entities to DTOs with .Select(o => new OrderSummaryDto { Id = o.Id, Total = o.Total }) so the API does not leak internal fields.
LINQ LINQ Tutorial · LINQ
Short answer: var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e =>…
var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]);
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse();
var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse(); var reversed = employees.Reverse();
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result =…
string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name));
string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name)); string result = string.Join(", ", employees.Select(e => e.Name));
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault();
var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault(); var first = employees.FirstOrDefault();
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e =>…
var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999); var result = employees.First(e => e.Salary > 999999);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: How to handle exceptions in LINQ? Use try-catch around enumeration, not the query: try { var result = employees.First(e => e.Salary > 999999); } catch (Exception ex) { Console.WriteLine("No match found."); How to handle exceptions in LINQ? How to handle exceptions in LINQ? Use try-catch around enumeration, not the query: try { var result =… employees.First(e… => e.Salary > 999999); } catch (Exception ex) {…
Console.WriteLine("No match found."); How to handle exceptions in LINQ?
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: What's the difference between Select() and SelectMany()? Select() returns collection of collections. SelectMany() flattens them.
ShopNest maps entities to DTOs with .Select(o => new OrderSummaryDto { Id = o.Id, Total = o.Total }) so the API does not leak internal fields.
LINQ LINQ Tutorial · LINQ
Short answer: var result = employees .Where(e => e.Department == "IT"); var result = employees .Where(e => e.Department == "IT"); var result = employees .Where(e => e.Department == "IT"); var result = employees .Where(e => e.Department == "IT");
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Chaining multiple Where() calls var result = employees .Where(e => e.Salary > 70000) .Where(e => e.Department == "IT"); Chaining multiple Where() calls var result = employees .Where(e => e.Salary > 70000) .Where(e => e.Department == "IT"); Chaining multiple Where() calls var result = employees .Where(e => e.Salary > 70000) .Where(e => e.Department == "IT");… Chaining multiple Where() calls var result = employees…
Where(e => e.Salary > 70000) .Where(e => e.Department == "IT");
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Find longest employee name var longest = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find longest employee name var longest = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find longest employee name var longest = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find longest employee name var… longest = employees .OrderByDescending(e => e.Name.Length)…
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: Case-insensitive filtering var hr = employees .Where(e => e.Department.Equals("hr", StringComparison.OrdinalIgnoreCase)); Case-insensitive filtering var hr = employees .Where(e => e.Department.Equals("hr", StringComparison.OrdinalIgnoreCase)); Case-insensitive filtering var hr = employees .Where(e => e.Department.Equals("hr",… StringComparison.OrdinalIgnoreCase)); Case-insensitive filtering var hr = employees…
Where(e => e.Department.Equals("hr", StringComparison.OrdinalIgnoreCase));
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Select employee with second-highest salary var secondHighest = employees .OrderByDescending(e => e.Salary) .Skip(1) .FirstOrDefault(); ✅ Skips the top salary and selects the next one.
Select employee with second-highest salary var secondHighest = employees .OrderByDescending(e => e.Salary) .Skip(1) .FirstOrDefault(); ✅ Skips the top salary and selects the next one. Select employee with second-highest salary var secondHighest = employees .OrderByDescending(e => e.Salary) .Skip(1) .FirstOrDefault(); ✅ Skips the top salary and selects the next one.
ShopNest maps entities to DTOs with .Select(o => new OrderSummaryDto { Id = o.Id, Total = o.Total }) so the API does not leak internal fields.
LINQ LINQ Tutorial · LINQ
Short answer: Find employee with longest name var longestName = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find employee with longest name var longestName = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find employee with longest name var longestName = employees .OrderByDescending(e => e.Name.Length) .FirstOrDefault(); Find… employee with longest name var longestName = employees…
OrderByDescending(e => e.Name.Length) .FirstOrDefault();
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.