Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: OOP is a programming paradigm that organizes software around objects, which contain data (fields/properties) and behavior (methods/functions). Helps model real-world entities and their interactions. Say thi…
Short answer: All these operations generally have O(1) average time complexity due to the underlying hash table structure. Real-world example (ShopNest) When applying a coupon, ShopNest keeps used coupon codes in a HashS…
Short answer: IEnumerable<T> is the base interface for all generic collections that can be enumerated (looped over). It allows the use of foreach loops and LINQ queries. It defines a single method: IEnumerator<T…
Short answer: Feature BlockingCollection<T> Collection<T> Thread safety Thread-safe for adding and taking items Not thread-safe Blocking behavior Supports blocking and bounding (waits when empty/full) No bloc…
Short answer: Concise and readable code: LINQ makes querying collections clear and expressive. Declarative style: You focus on what to retrieve, not how. Powerful operations: Filtering, sorting, grouping, joining, projec…
Short answer: Searching by key uses binary search, so the time complexity is O(log n). Real-world example (ShopNest) In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and…
Short answer: Push() → O(1) average, O(n) worst-case (if resizing needed) Pop() → O(1) These operations are fast and efficient due to the internal array structure. Real-world example (ShopNest) ShopNest uses a Queue<O…
Short answer: Enqueue() → O(1) average case Dequeue() → O(1) average case Due to the internal circular array and pointer arithmetic, both operations are highly efficient unless resizing is needed (which is O(n), but infr…
Short answer: Accessing an element by index is O(1) (constant time) — same as arrays. Example: int first = numbers[0]; // O(1) Example code Accessing an element by index is O(1) (constant time) — same as arrays. Example:…
Short answer: Adding or removing at the start or end: O(1) Adding or removing at an arbitrary position (if you already have the node reference): O(1) Searching for a node by value: O(n), because traversal is required Rea…
Short answer: The average time complexity is O(1) (constant time), thanks to hash-based indexing. However, in worst-case scenarios (rare), it can degrade to O(n). Say this in the interview Define — one clear sentence (th…
Short answer: IList<T> extends ICollection<T> and allows: Indexed access (like arrays) Inserting and removing at specific positions Example code IList<string> fruits = new List<string>(); fruits.A…
Short answer: Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists W…
Short answer: Due to the underlying balanced tree structure, these operations have O(log n) time complexity. 📘 C# Collection Initializers & LINQ – Interview Questions & Answers Real-world example (ShopNest) When…
Short answer: Peek() returns the top element without removing it. It’s helpful for: Conditional checks Previewing what's next Preventing accidental removal Example: if (stack.Count > 0) Example code { var current = st…
Short answer: Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is g…
Short answer: Method Purpose Add() Adds one item AddRange () Adds multiple items (collection) Example: list.Add(1); // One item list.AddRange(new[] { 2, 3, 4 }); // Multiple Example code Method Purpose Add() Adds one ite…
Short answer: These interfaces provide read-only access to collections: IReadOnlyCollection<T> provides Count and enumeration. IReadOnlyList<T> provides index-based access without modification. Example code I…
Short answer: Method Purpose Return Value Add(item) Adds item if not already present true if added, false if duplicate Contains(it em) Checks if item exists in the set true if found, false otherwise Real-world example (S…
Short answer: Feature IEnumerable <T> ICollection<T> Read-only Yes No Modification Not supported Supports Add, Remove, Clear Count property No Yes (Count) Example code IEnumerable<string> names = new Li…
Short answer: Feature List<T> ArrayList Generic Yes No Type Safety Compile-time Runtime (casting required) Performanc Better (no boxing) Slower for value types (boxing) Example: List<int> list = new List<i…
Short answer: KeyValuePair<TKey, TValue> represents a single item in a dictionary — a key-value pair. Used in: Iteration LINQ queries Return values from dictionary enumerators Example: foreach (KeyValuePair<stri…
Short answer: Method Returns Find() First match FindAll () All matches in a new list Example: var firstEven = list.Find(x => x % 2 == 0); var allEvens = list.FindAll(x => x % 2 == 0); Example code Method Returns Fi…
Short answer: Capacity is the number of elements the list can hold before resizing. It is greater than or equal to Count. Example code list.Capacity = 100; // Optional performance tuning Real-world example (ShopNest) In…
Short answer: Property Meaning Count Number of elements currently in the list Capacit Total allocated slots (memory reserved) Example code Console.WriteLine($"Count: {list.Count}, Capacity: {list.Capacity}"); R…
C# OOP C# Programming Tutorial · OOP
Short answer: OOP is a programming paradigm that organizes software around objects, which contain data (fields/properties) and behavior (methods/functions). Helps model real-world entities and their interactions.
C# Collections C# Programming Tutorial · Collections
Short answer: All these operations generally have O(1) average time complexity due to the underlying hash table structure.
When applying a coupon, ShopNest keeps used coupon codes in a HashSet<string> so “already used?” checks stay fast and unique.
C# Collections C# Programming Tutorial · Collections
Short answer: IEnumerable<T> is the base interface for all generic collections that can be enumerated (looped over). It allows the use of foreach loops and LINQ queries. It defines a single method: IEnumerator<T> GetEnumerator(); Example: List<string> items = new List<string> { "A", "B", "C" };
foreach (string item in items) // IEnumerable<string> in action
{ Console.WriteLine(item); } Real-world use case: When reading product data from a list or querying a database, IEnumerable<T> allows deferred execution and efficient data processing using LINQ.
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Feature BlockingCollection<T> Collection<T> Thread safety Thread-safe for adding and taking items Not thread-safe Blocking behavior Supports blocking and bounding (waits when empty/full) No blocking behavior Use case Producer-consumer scenarios General-purpose collection Additional features Supports bounded capacity and cancellation Basic collection BlockingCollection<T> wraps around other thread-safe collections…
and provides blocking and bounding capabilities, ideal for producer-consumer queues. 📘 C# Collections: Performance & Memory Considerations – Interview Q&A
C# Collections C# Programming Tutorial · Collections
Short answer: Concise and readable code: LINQ makes querying collections clear and expressive. Declarative style: You focus on what to retrieve, not how. Powerful operations: Filtering, sorting, grouping, joining, projecting, and more. Deferred execution: Queries execute only when results are needed, improving performance. Strongly typed: Compile-time checking and IntelliSense support.
In ShopNest checkout, choose the collection by need: List for ordered cart lines, Dictionary for fast SKU lookup, HashSet for unique tags.
C# Collections C# Programming Tutorial · Collections
Short answer: Searching by key uses binary search, so the time complexity is O(log n).
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Push() → O(1) average, O(n) worst-case (if resizing needed) Pop() → O(1) These operations are fast and efficient due to the internal array structure.
ShopNest uses a Queue<Order> for “orders waiting for payment confirmation,” and a Stack<Uri> for back-navigation in the admin UI.
C# Collections C# Programming Tutorial · Collections
Short answer: Enqueue() → O(1) average case Dequeue() → O(1) average case Due to the internal circular array and pointer arithmetic, both operations are highly efficient unless resizing is needed (which is O(n), but infrequent).
ShopNest uses a Queue<Order> for “orders waiting for payment confirmation,” and a Stack<Uri> for back-navigation in the admin UI.
C# Collections C# Programming Tutorial · Collections
Short answer: Accessing an element by index is O(1) (constant time) — same as arrays. Example: int first = numbers[0]; // O(1)
Accessing an element by index is O(1) (constant time) — same as arrays. Example: int first = numbers[0]; // O(1)
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Adding or removing at the start or end: O(1) Adding or removing at an arbitrary position (if you already have the node reference): O(1) Searching for a node by value: O(n), because traversal is required
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: The average time complexity is O(1) (constant time), thanks to hash-based indexing. However, in worst-case scenarios (rare), it can degrade to O(n).
C# Collections C# Programming Tutorial · Collections
Short answer: IList<T> extends ICollection<T> and allows: Indexed access (like arrays) Inserting and removing at specific positions
IList<string> fruits = new List<string>(); fruits.Add("Apple"); fruits.Insert(0, "Banana"); // Insert at index 0 Console.WriteLine(fruits[1]); // Access by index Real-world use case: Use IList<T> when order matters and you need to access, insert, or remove elements at specific positions, like reordering tasks in a to-do list.
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } //… dictionary["Unknown"]; // throws…… Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe?…
Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist
if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } // dictionary["Unknown"]; // throws KeyNotFoundException if missing Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist Example: if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } //… dictionary["Unknown"]; // throws… Dictionary? Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist Example: if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } // dictionary["Unknown"]; // throws KeyNotFoundException if missing
C# Collections C# Programming Tutorial · Collections
Short answer: Due to the underlying balanced tree structure, these operations have O(log n) time complexity. 📘 C# Collection Initializers & LINQ – Interview Questions & Answers
When applying a coupon, ShopNest keeps used coupon codes in a HashSet<string> so “already used?” checks stay fast and unique.
C# Collections C# Programming Tutorial · Collections
Short answer: Peek() returns the top element without removing it. It’s helpful for: Conditional checks Previewing what's next Preventing accidental removal Example: if (stack.Count > 0)
{
var current = stack.Peek();
} Throws InvalidOperationException if the stack is empty.
ShopNest uses a Queue<Order> for “orders waiting for payment confirmation,” and a Stack<Uri> for back-navigation in the admin UI.
C# Collections C# Programming Tutorial · Collections
Short answer: Feature TryGetValue() Indexer (dictionary[key]) Safe? Yes – avoids exception No – throws if key doesn't exist Returns Boolean (and output value) Direct value Use case When unsure if key exists When key is guaranteed to exist
if (dictionary.TryGetValue("Bob", out int age)) { Console.WriteLine(age); } // dictionary["Unknown"]; // throws KeyNotFoundException if missing
C# Collections C# Programming Tutorial · Collections
Short answer: Method Purpose Add() Adds one item AddRange () Adds multiple items (collection) Example: list.Add(1); // One item list.AddRange(new[] { 2, 3, 4 }); // Multiple
Method Purpose Add() Adds one item AddRange () Adds multiple items (collection) Example: list.Add(1); // One item
list.AddRange(new[] { 2, 3, 4 }); // Multiple
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: These interfaces provide read-only access to collections: IReadOnlyCollection<T> provides Count and enumeration. IReadOnlyList<T> provides index-based access without modification.
IReadOnlyList<int> ids = new List<int> { 1, 2, 3 }; Console.WriteLine(ids[0]); // Access element // ids[0] = 10; // Compile-time error – read-only Real-world use case: Useful in APIs where you want to expose collection data but prevent consumers from modifying it—e.g., returning a list of supported currencies from a service.
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Method Purpose Return Value Add(item) Adds item if not already present true if added, false if duplicate Contains(it em) Checks if item exists in the set true if found, false otherwise
When applying a coupon, ShopNest keeps used coupon codes in a HashSet<string> so “already used?” checks stay fast and unique.
C# Collections C# Programming Tutorial · Collections
Short answer: Feature IEnumerable <T> ICollection<T> Read-only Yes No Modification Not supported Supports Add, Remove, Clear Count property No Yes (Count)
IEnumerable<string> names = new List<string> { "A", "B" }; // names.Add("C"); // Error ICollection<string> nameCollection = new List<string> { "A", "B" }; nameCollection.Add("C"); // Allowed Real-world scenario: Use IEnumerable<T> for read-only, query-focused tasks like LINQ. Use ICollection<T> when managing and modifying the collection.
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Feature List<T> ArrayList Generic Yes No Type Safety Compile-time Runtime (casting required) Performanc Better (no boxing) Slower for value types (boxing) Example: List<int> list = new List<int>(); ArrayList arrayList = new ArrayList(); arrayList.Add(10); int num = (int)arrayList[0]; // Casting required Best Practice: Always prefer List<T> in new code. Use ArrayList only when working with legacy systems.
list.Add(10); // Type-safe
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: KeyValuePair<TKey, TValue> represents a single item in a dictionary — a key-value pair. Used in: Iteration LINQ queries Return values from dictionary enumerators Example: foreach (KeyValuePair<string, int> entry in dictionary)
{ Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}"); }
ShopNest caches product prices in a Dictionary<string, decimal> keyed by SKU so checkout can look up a price in O(1) instead of scanning a list.
C# Collections C# Programming Tutorial · Collections
Short answer: Method Returns Find() First match FindAll () All matches in a new list Example: var firstEven = list.Find(x => x % 2 == 0); var allEvens = list.FindAll(x => x % 2 == 0);
Method Returns Find() First match FindAll () All matches in a new list Example: var firstEven = list.Find(x => x % 2 == 0);
var allEvens = list.FindAll(x => x % 2 == 0);
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Capacity is the number of elements the list can hold before resizing. It is greater than or equal to Count.
list.Capacity = 100; // Optional performance tuning
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).
C# Collections C# Programming Tutorial · Collections
Short answer: Property Meaning Count Number of elements currently in the list Capacit Total allocated slots (memory reserved)
Console.WriteLine($"Count: {list.Count}, Capacity: {list.Capacity}");
In ShopNest, an order page loads products with List<Product> so you can Add items to the cart and access them by index. Use IEnumerable<T> when you only need to loop (for example, printing invoice lines).