Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: double avgSalary = employees .Average(e => e.Salary); double avgSalary = employees .Average(e => e.Salary); double avgSalary = employees .Average(e => e.Salary); double avgSalary = employees .Avera…
Short answer: What is the average salary in IT? double avgSalary = employees .Where(e => e.Department == "IT") .Average(e => e.Salary); What is the average salary in IT? double avgSalary = employees .Wher…
Short answer: double max = employees.Max(e => e.Salary); double max = employees.Max(e => e.Salary); double max = employees.Max(e => e.Salary); double max = employees.Max(e => e.Salary); Real-world example (Sh…
Short answer: var grouped = employees .GroupBy(e => e.Department); Each group is an IGrouping<string, Employee> Example code var grouped = employees .GroupBy(e => e.Department); Each group is an IGrouping<…
Short answer: Each group is an IGrouping<string, Employee> Real-world example (ShopNest) A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city. Say this in the interview D…
Short answer: For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department,…
Short answer: var joined = from e in employees join matches based on keys. Explain a bit more var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var…
Short answer: join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join match…
Short answer: .Location?? "Not Found" }; var leftJoin = from e in employees into deptGroup Uses DefaultIfEmpty() to simulate outer join. Example code .Location?? "Not Found" }; var leftJoin = from e i…
Short answer: Uses DefaultIfEmpty() to simulate outer join. Real-world example (ShopNest) A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city. Say this in the interview Define…
Short answer: var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 8000…
Short answer: >1 ✅ Tip: Use Single when you're sure there will be exactly one result. var onlyHR = employees.SingleOrDefault(e => e.Id == 1); // throws if var firstHR = employees.FirstOrDefault(e => e.Id == 1);…
Short answer: Use Single vs First — what's the difference? var onlyHR = employees.SingleOrDefault(e => e.Id == 1); // throws if var firstHR = employees.FirstOrDefault(e => e.Id == 1); // safe ✅ Tip: Use Single when…
Short answer: var listA = employees.Take(3); var listB = employees.Skip(2); var common = listA.Select(e => e.Id) .Intersect(listB.Select(e => e.Id)); Example code var listA = employees.Take(3); var listB = employee…
Short answer: var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(l…
Short answer: Skip top 2 highest salaries and take next 2 var result = employees .OrderByDescending(e => e.Salary) .Skip(2) .Take(2); Skip top 2 highest salaries and take next 2 var result = employees .OrderByDescendi…
Short answer: bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(…
Short answer: bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == &quo…
Short answer: var hrList = employees This forces query execution (immediate execution). var hrList = employees This forces query execution (immediate execution). Real-world example (ShopNest) ShopNest filters active prod…
Short answer: This forces query execution (immediate execution). Real-world example (ShopNest) ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL…
Short answer: var taxResult = from e in employees select new { e.Name, Tax = tax }; let stores computed value for reuse. Example code var taxResult = from e in employees select new { e.Name, Tax = tax }; let stores compu…
Short answer: let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed v…
Short answer: foreach (var emp in query) Console.WriteLine(emp.Name); ✅ Output includes “Frank” — because query is executed at enumeration time. var query = employees.Where(e => e.Salary > 70000); employees.Add(new…
Short answer: Why is LINQ deferred? var query = employees.Where(e => e.Salary > 70000); employees.Add(new Employee { Id = 6, Name = "Frank", Department = "IT", Salary = 90000 }); foreach (var em…
Short answer: Get top 3 highest-paid employees var top3 = employees .OrderByDescending(e => e.Salary) .Take(3); Get top 3 highest-paid employees var top3 = employees .OrderByDescending(e => e.Salary) .Take(3); Get…
LINQ LINQ Tutorial · LINQ
Short answer: double avgSalary = employees .Average(e => e.Salary); double avgSalary = employees .Average(e => e.Salary); double avgSalary = employees .Average(e => e.Salary); double avgSalary = employees .Average(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: What is the average salary in IT? double avgSalary = employees .Where(e => e.Department == "IT") .Average(e => e.Salary); What is the average salary in IT? double avgSalary = employees .Where(e => e.Department == "IT") .Average(e => e.Salary); What is the average salary in IT? double avgSalary = employees .Where(e => e.Department == "IT") .Average(e =>… e.Salary); What is the average salary in IT? double avgSalary =…
employees .Where(e => e.Department == "IT") .Average(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: double max = employees.Max(e => e.Salary); double max = employees.Max(e => e.Salary); double max = employees.Max(e => e.Salary); double max = employees.Max(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 grouped = employees .GroupBy(e => e.Department); Each group is an IGrouping<string, Employee>
var grouped = employees
.GroupBy(e => e.Department); Each group is an IGrouping<string, Employee>
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: Each group is an IGrouping<string, Employee>
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(e => e.Salary) }); For… each department, show average salary var avgByDept =…
employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees…
For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(e => e.Salary) }); For… each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary = g.Average(e => e.Salary) }); For each department, show average salary var avgByDept = employees .GroupBy(e => e.Department) .Select(g => new Department = g.Key, AverageSalary =… g.Average(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 joined = from e in employees join matches based on keys.
var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys.
var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys. var joined = from e in employees join matches based on keys.
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: join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys.
join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys. join matches based on keys.
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: .Location?? "Not Found" }; var leftJoin = from e in employees into deptGroup Uses DefaultIfEmpty() to simulate outer join.
.Location?? "Not Found" }; var leftJoin = from e in employees
into deptGroup Uses DefaultIfEmpty() to simulate outer join.
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: Uses DefaultIfEmpty() to simulate outer join.
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid =…
employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000);
var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000); var highPaid = employees.FirstOrDefault(e => e.Salary > 80000);
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: >1 ✅ Tip: Use Single when you're sure there will be exactly one result. var onlyHR = employees.SingleOrDefault(e => e.Id == 1); // throws if var firstHR = employees.FirstOrDefault(e => e.Id == 1); // safe
>1 ✅ Tip: Use Single when you're sure there will be exactly one result. var onlyHR = employees.SingleOrDefault(e => e.Id == 1); // throws if
var firstHR = employees.FirstOrDefault(e => e.Id == 1); // safe
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: Use Single vs First — what's the difference? var onlyHR = employees.SingleOrDefault(e => e.Id == 1); // throws if var firstHR = employees.FirstOrDefault(e => e.Id == 1); // safe ✅ Tip: Use Single when you're sure there will be exactly one result.
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 listA = employees.Take(3); var listB = employees.Skip(2); var common = listA.Select(e => e.Id) .Intersect(listB.Select(e => e.Id));
var listA = employees.Take(3);
var listB = employees.Skip(2);
var common = listA.Select(e => e.Id)
.Intersect(listB.Select(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 onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id)…
Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id));
var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(e => e.Id)); var onlyInA = listA.Select(e => e.Id) .Except(listB.Select(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: Skip top 2 highest salaries and take next 2 var result = employees .OrderByDescending(e => e.Salary) .Skip(2) .Take(2); Skip top 2 highest salaries and take next 2 var result = employees .OrderByDescending(e => e.Salary) .Skip(2) .Take(2); Skip top 2 highest salaries and take next 2 var result = employees .OrderByDescending(e => e.Salary) .Skip(2) .Take(2);… Skip top 2 highest salaries and take next 2 var result =…
employees .OrderByDescending(e => e.Salary) .Skip(2) .Take(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: bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary >…
bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000); bool allHigh = employees.All(e => e.Salary > 50000);
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: bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department ==…
"Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal");
bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal"); bool anyLegal = employees.Any(e => e.Department == "Legal");
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 hrList = employees This forces query execution (immediate execution). var hrList = employees This forces query execution (immediate execution).
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: This forces query execution (immediate execution).
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 taxResult = from e in employees select new { e.Name, Tax = tax }; let stores computed value for reuse.
var taxResult = from e in employees
select new { e.Name, Tax = tax }; let stores computed value for reuse.
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: let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse.
let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse. let stores computed value for reuse.
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: foreach (var emp in query) Console.WriteLine(emp.Name); ✅ Output includes “Frank” — because query is executed at enumeration time. var query = employees.Where(e => e.Salary > 70000); employees.Add(new Employee { Id = 6, Name = "Frank", Department =
"IT", Salary = 90000 });
ShopNest builds a LINQ query for search filters, then calls ToListAsync() once in the repository—so the SQL runs one time, not inside a loop.
LINQ LINQ Tutorial · LINQ
Short answer: Why is LINQ deferred? var query = employees.Where(e => e.Salary > 70000); employees.Add(new Employee { Id = 6, Name = "Frank", Department = "IT", Salary = 90000 }); foreach (var emp in query) Console.WriteLine(emp.Name); ✅ Output includes “Frank” — because query is executed at enumeration time. Why is LINQ deferred? var query =… employees.Where(e =>…… e.Salary > 70000); employees.Add(new Employee { Id = 6, Name =…
"Frank", Department = "IT", Salary = 90000 }); foreach (var emp in query) Console.WriteLine(emp.Name); ✅ Output includes “Frank” — because query is executed at enumeration time.
ShopNest builds a LINQ query for search filters, then calls ToListAsync() once in the repository—so the SQL runs one time, not inside a loop.
LINQ LINQ Tutorial · LINQ
Short answer: Get top 3 highest-paid employees var top3 = employees .OrderByDescending(e => e.Salary) .Take(3); Get top 3 highest-paid employees var top3 = employees .OrderByDescending(e => e.Salary) .Take(3); Get top 3 highest-paid employees var top3 = employees .OrderByDescending(e => e.Salary) .Take(3); Get top 3 highest-paid employees var top3 = employees… OrderByDescending(e => e.Salary) .Take(3);
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.