1. What is ASP.NET Core? How does it differ from ASP.NET Framework?
ASP.NET Core is a cross-platform, high-performance framework for building modern, cloud-based, and internet-connected applications. It's a complete rewrite of ASP.NET and is designed to be lightweight, modular, and capable of running on Windows, Linux, and macOS.
2. Explain the Middleware concept in ASP.NET Core.
Middleware in ASP.NET Core is software that processes requests and responses. It's placed in the request pipeline and can perform various tasks like authentication, logging, and routing. Each middleware either handles the request or passes it to the next middleware in the pipeline.
3. What is Dependency Injection (DI) in ASP.NET Core? Why is it important?
Dependency Injection is a design pattern used to achieve loose coupling between components by injecting dependencies rather than creating them within the component. In ASP.NET Core, DI is built into the framework and helps improve testability, maintainability, and modularity of the application.
4. Explain Razor Pages and MVC in ASP.NET Core.
Razor Pages and Model-View-Controller (MVC) are two different approaches for building web applications in ASP.NET Core. Razor Pages focus on simplifying the page-centric development model, while MVC follows the traditional separation of concerns for better code organization.
5. How does ASP.NET Core handle authentication and authorization?
ASP.NET Core provides a flexible authentication and authorization system that supports various authentication schemes like cookies, tokens, and external providers. It uses policies and attributes to control access to resources based on user roles and claims.
6. What is ASP.NET Core Dependency Injection? How is it configured?
ASP.NET Core Dependency Injection is a built-in framework that provides a way to manage and inject dependencies into your application's components. It's configured in the Startup.cs file using the ConfigureServices method.
7. Explain the difference between Entity Framework Core and Entity Framework.
Entity Framework (EF) Core is the lightweight and cross-platform version of Entity Framework. While both serve as Object-Relational Mapping (ORM) frameworks, EF Core is designed to work well with ASP.NET Core and has a simplified API.
8. How can you enable CORS (Cross-Origin Resource Sharing) in ASP.NET Core?
You can enable CORS by configuring the Startup.cs file using the ConfigureServices and Configure methods. CORS policy settings control which origins are allowed to access your application's resources.
9. What is the purpose of ASP.NET Core Razor Layouts?
Razor Layouts provide a consistent way to define the structure of your web pages, including common sections like headers, footers, and navigation menus. They promote code reusability and maintainability.
10. How do you handle state management in ASP.NET Core applications?
ASP.NET Core supports various state management techniques, such as using session state, TempData, and ViewModels, to manage data across requests. The choice of technique depends on the specific requirements of your application.
11. What are Tag Helpers in ASP.NET Core?
Tag Helpers are a feature in ASP.NET Core that enable server-side code to participate in creating and rendering HTML elements. They provide a more natural way to work with HTML in Razor views.
12. Explain the concept of Middleware Pipeline in ASP.NET Core.
The Middleware Pipeline is a sequence of request processing components in ASP.NET Core. Each middleware performs a specific task, such as authentication, logging, or routing. The pipeline can be customized to meet the application's needs.
13. How can you configure authentication and authorization in ASP.NET Core?
Authentication and authorization can be configured in the Startup.cs file using authentication services and authorization policies. Authentication verifies user identity, while authorization controls access to resources based on policies.
14. What is Razor Pages Routing in ASP.NET Core?
Razor Pages Routing is a feature that maps incoming URLs to Razor Pages. It's designed to make building simple web pages more intuitive and straightforward.
15. How does Dependency Injection improve testability and maintainability of ASP.NET Core applications?
Dependency Injection improves testability by allowing easy substitution of dependencies with mock objects during testing. It enhances maintainability by reducing tight coupling between components, making it easier to modify and extend the application.
16. What is Razor View Engine in ASP.NET Core?
The Razor View Engine is a syntax for creating dynamic HTML in ASP.NET Core. It allows you to seamlessly mix C# code with HTML markup, making it easier to generate dynamic content in views.
17. How can you manage configuration settings in ASP.NET Core applications?
ASP.NET Core provides the appsettings.json file to store configuration settings. These settings can be accessed through the Configuration object and can be environment-specific.
18. Explain the concept of ASP.NET Core Identity.
ASP.NET Core Identity is a membership system that provides user authentication, authorization, and user management functionalities. It simplifies tasks like user registration, password management, and role-based access control.
19. What is the purpose of ASP.NET Core Middleware?
Middleware in ASP.NET Core intercepts and handles HTTP requests and responses. It's a modular way to add cross-cutting concerns like authentication, logging, and caching to your application.
20. Describe the concept of Razor Pages Handlers in ASP.NET Core.
Razor Pages Handlers are methods within a Razor Page that respond to HTTP requests. They provide a way to organize the logic behind different HTTP verbs (GET, POST, etc.) within a single page.
21. What is the purpose of ASP.NET Core Razor Pages Filters?
Razor Pages Filters allow you to execute code before or after the execution of a Razor Page handler method. They are used to implement cross-cutting concerns such as logging, validation, and exception handling.
22. Explain the concept of Dependency Injection in ASP.NET Core.
Dependency Injection is a design pattern that promotes loose coupling by injecting dependencies into classes rather than creating them internally. In ASP.NET Core, the built-in DI container manages the lifetime and resolution of dependencies.
23. How can you implement caching in ASP.NET Core applications?
ASP.NET Core provides caching support through the IMemoryCache and IDistributedCache interfaces. These interfaces allow you to cache frequently used data to improve application performance.
24. What is the purpose of the app.UseMvc and app.UseEndpoints methods in ASP.NET Core Startup.cs?
app.UseMvc is used to configure the MVC framework's routing, while app.UseEndpoints is a more general approach that can be used to configure routing for various endpoints, including MVC, Razor Pages, and APIs.
25. What is the purpose of Razor Class Libraries in ASP.NET Core?
Razor Class Libraries allow you to package and distribute Razor components, pages, and views as reusable components that can be easily shared across multiple projects.
26. What is the purpose of ASP.NET Core Middleware Ordering?
Middleware ordering defines the sequence in which middleware components are executed in the pipeline. It's crucial to maintain the correct order to ensure that middleware functions as expected and handles requests and responses in the desired way.
27. Explain the concept of Health Checks in ASP.NET Core.
Health Checks are a way to monitor the health of your application's components, such as databases, services, and APIs. They provide a simple and consistent way to ensure that your application's dependencies are functioning properly.
28. How can you manage application configuration for different environments in ASP.NET Core?
ASP.NET Core allows you to use environment-specific configuration files (e.g., appsettings.Development.json, appsettings.Production.json) to manage configuration settings for different deployment environments.
29. What is the purpose of ASP.NET Core Razor Components?
Razor Components (previously known as Blazor) allow you to build interactive web applications using C# and Razor syntax. They enable server-side rendering of components and also support client-side rendering.
30. Explain the concept of URL Routing in ASP.NET Core MVC.
URL Routing maps URLs to controller actions or Razor Pages in ASP.NET Core MVC. It allows you to define clean and user-friendly URLs that correspond to specific actions and views.
31. Explain the purpose of ASP.NET Core SignalR.
SignalR is a real-time communication library in ASP.NET Core that enables bi-directional communication between the server and clients over websockets, allowing applications to push updates to connected clients in real-time.
32. What is the role of the appsettings.json file in ASP.NET Core?
The appsettings.json file stores configuration settings for an ASP.NET Core application. It's used to configure various aspects of the application, such as database connections, API keys, and other settings.
33. How can you manage logging in ASP.NET Core applications?
ASP.NET Core provides built-in logging through the ILogger interface. You can configure different log levels, log providers, and log messages to gain insights into the application's behavior and troubleshoot issues.
34. Explain the purpose of ASP.NET Core Razor View Components.
Razor View Components are reusable, self-contained UI components in ASP.NET Core. They encapsulate complex rendering logic and can be used in Razor views to promote code reusability and maintainability.
35. How can you secure ASP.NET Core APIs using JWT (JSON Web Tokens)?
You can secure ASP.NET Core APIs by implementing JWT-based authentication and authorization. JWT tokens are issued to authenticated users and contain claims that determine their access to resources.
36. How can you handle security vulnerabilities like Cross-Site Scripting (XSS) in ASP.NET Core?
To handle XSS, you can use Razor's built-in encoding (@Html.Raw() vs @Html.Encode()), AntiXSS libraries, and Content Security Policy (CSP) headers to mitigate risks associated with untrusted user input.
37. Explain the concept of Razor Pages Razor Components.
Razor Components allow you to build interactive UI components using Razor syntax. They run entirely on the client side (WebAssembly) and provide a rich client-side experience similar to Single Page Applications (SPAs).
38. What are Tag Helper Components in ASP.NET Core?
Tag Helper Components are reusable components that can be used within Razor views to encapsulate UI and logic. They are similar to Razor Pages, but they can be embedded in any HTML tag.
39. How does Dependency Injection work in ASP.NET Core Razor Pages?
Dependency Injection in Razor Pages works similarly to other parts of ASP.NET Core. You can inject services into your Razor Page by using the @inject directive or by using constructor injection.
40. Explain the concept of Data Annotations in ASP.NET Core.
Data Annotations are attributes that can be applied to model properties to provide validation rules, display names, formatting, and more. They allow you to declaratively define validation and metadata information.
41. What is the purpose of Razor Class Libraries (RCL) in ASP.NET Core?
Razor Class Libraries allow you to create and package reusable Razor components, pages, and views that can be shared across multiple projects. They promote code reusability and modular design.
42. Explain the concept of Output Caching in ASP.NET Core.
Output Caching is a technique that stores the output of a page or action method in memory, allowing subsequent requests for the same content to be served faster. It improves performance by avoiding unnecessary processing.
43. How can you implement Cross-Origin Resource Sharing (CORS) in ASP.NET Core?
You can configure CORS in ASP.NET Core using the ConfigureServices and Configure methods in the Startup.cs file. CORS policies define which origins are allowed to access resources from your application.
44. Describe the differences between TempData, ViewData, and ViewBag in ASP.NET Core.
TempData, ViewData, and ViewBag are mechanisms to pass data between controller actions and views. TempData stores data for a single redirect, ViewData stores data for the current request, and ViewBag uses dynamic properties to pass data.
45. What is ASP.NET Core Identity Role-Based Authorization?
ASP.NET Core Identity Role-Based Authorization is a feature that allows you to control access to resources based on user roles. It enables you to assign roles to users and enforce authorization rules based on those roles.
46. Explain the concept of ASP.NET Core Middleware Conventions.
Middleware Conventions are a way to group related middleware and apply them to specific sets of routes or endpoints. They help streamline the configuration of middleware pipelines based on common patterns.
47. What is Entity Framework Core Migrations in ASP.NET Core?
Entity Framework Core Migrations enable you to manage changes to your database schema over time. Migrations provide a way to keep your database schema in sync with your application's data model.
48. How can you implement Health Checks for Database Connectivity in ASP.NET Core?
You can implement health checks for database connectivity by adding a health check for your database provider in the Startup.cs file. This helps monitor the availability of your database and take action if it's unreachable.
49. Explain Razor Pages Razor Components in ASP.NET Core.
50. What is the purpose of ASP.NET Core Middleware Short-circuiting?
Middleware Short-circuiting refers to stopping the request pipeline in a middleware and returning a response before reaching subsequent middleware. It's often used for handling special cases or optimizations.
1. What is C#? What are its key features?
C# is a modern, object-oriented programming language developed by Microsoft. Its key features include strong typing, garbage collection, LINQ (Language Integrated Query), and support for asynchronous programming.
2. Differentiate between Value Types and Reference Types in C#.
Value types store the actual data, and their instances are stored directly in memory. Reference types store a reference to the memory location of the data, and their instances are stored on the heap.
3. What is the difference between abstract class and interface in C#?
An abstract class can have both abstract and non-abstract methods, while an interface can only have method signatures. A class can implement multiple interfaces but inherit from only one abstract class.
4. What is the purpose of the async and await keywords in C#?
The async keyword is used to define asynchronous methods, and the await keyword is used within asynchronous methods to asynchronously wait for the completion of tasks without blocking the thread.
5. Explain the concept of delegates and events in C#.
Delegates are type-safe function pointers that allow you to encapsulate a method, and events are a way to provide notifications when an action occurs in your application. Delegates are often used to define event handlers.
6. Explain the concept of Boxing and Unboxing in C#.
Boxing is the process of converting a value type to the object type, and unboxing is the process of converting the object type back to the value type. These operations come with performance implications and should be used cautiously.
7. What are the different access modifiers available in C#?
C# provides several access modifiers: public, private, protected, internal, and protected internal. They control the visibility and accessibility of class members.
8. Describe the use of the using statement in C#.
The using statement is used to ensure that objects that implement the IDisposable interface are properly disposed of after their usage. It helps manage resources like file handles and database connections.
9. How does C# support exception handling?
C# provides a structured exception handling mechanism using try, catch, finally, and throw keywords. Exceptions are objects that represent errors or unexpected situations in code execution.
10. Explain the differences between List and Dictionary in C#.
List is a dynamic array that stores a collection of elements of the same type, while Dictionary stores key-value pairs. Dictionary allows fast retrieval of values using keys, whereas List provides ordered storage of elements.
11. What is the difference between var and explicit type declaration in C#?
The var keyword allows the compiler to infer the type of a variable based on the assigned value, while explicit type declaration specifies the type explicitly. Both options have their use cases, but var is often preferred for cleaner code.
12. How does C# support multithreading and asynchronous programming?
C# supports multithreading using threads and the Thread class, and it also supports asynchronous programming using the async and await keywords, which simplify writing code that performs tasks concurrently.
13. Explain the concept of Generics in C#.
Generics allow you to design classes, interfaces, and methods that work with any data type. They provide type safety and reusability by allowing you to write code without specifying the exact data type until runtime.
14. What is the purpose of the out keyword in C# method parameters?
The out keyword is used in method parameters to indicate that a parameter is an output parameter. It's commonly used when a method needs to return multiple values.
15. Describe the concept of LINQ (Language Integrated Query) in C#.
LINQ is a set of language extensions that enable querying data from various data sources, such as collections, databases, and XML, using a consistent syntax. It provides powerful querying capabilities while maintaining code readability.
16. What is the difference between readonly and const in C#?
The const keyword is used to declare constants that have a fixed value at compile time, while the readonly keyword is used to declare instance-level fields that can only be assigned a value at runtime or in the constructor.
17. How does the try-catch-finally block handle exceptions in C#?
The try block contains the code that may cause an exception. If an exception occurs, it's caught by the corresponding catch block. The finally block is used for cleanup code that should run regardless of whether an exception occurred.
18. Explain the purpose of the yield keyword in C#.
The yield keyword is used in an iterator method to indicate that the method is an iterator and should generate a sequence of values lazily. It simplifies the implementation of custom iterators.
19. What is the difference between sealed and abstract classes in C#?
A sealed class cannot be inherited, and an abstract class cannot be instantiated directly. Abstract classes provide a base for derived classes to extend, while sealed classes prevent further extension.
20. How does garbage collection work in C#?
Garbage collection is an automatic process in C# that reclaims memory occupied by objects that are no longer accessible. The .NET runtime detects and cleans up objects that are no longer reachable, helping to manage memory efficiently.
21. Explain the difference between is and as operators in C#.
The is operator checks if an object is an instance of a specified type and returns a boolean value. The as operator attempts to cast an object to a specific type, returning null if the cast fails.
22. What is a delegate in C#? How is it different from an interface?
A delegate is a type-safe function pointer that refers to a method. It allows you to pass methods as parameters and invoke them dynamically. An interface is a contract that defines a set of methods that a class must implement.
23. How do you handle null values in C#?
You can handle null values using null coalescing operators (??), null conditional operators (?.), and by checking for null using conditional statements.
24. Explain the concept of LINQ to SQL in C#.
LINQ to SQL is a technology that allows you to query and manipulate data from a SQL Server database using LINQ queries. It translates LINQ queries into SQL queries and provides an object-relational mapping (ORM) layer.
25. What are extension methods in C#?
Extension methods are static methods that allow you to add new functionality to existing types without modifying their source code. They can be called as if they were instance methods of the extended type.
26. What is the difference between string and StringBuilder in C# for string manipulation?
string is an immutable type, meaning each operation creates a new string instance. StringBuilder is mutable and designed for efficient string concatenation and manipulation, making it more suitable for heavy string operations.
27. How can you handle multiple exceptions in a single catch block in C#?
You can use the when keyword in a catch block to specify additional conditions for catching exceptions. This allows you to handle multiple exceptions within the same block.
28. Explain the concept of Indexers in C#.
Indexers are properties that allow instances of a class to be indexed like arrays. They provide a way to access elements in an object using index notation, similar to arrays.
29. What is the yield return statement used for in C#?
The yield return statement is used within an iterator method to produce a sequence of values lazily. It allows you to iterate over a collection without loading all items into memory at once.
30. Describe the differences between HashSet and List in C#.
HashSet stores unique elements with no duplicate values, making it suitable for membership checks. List allows duplicates and provides ordered storage, making it suitable for scenarios that require maintaining item order.
31. Explain the concept of Nullable Value Types in C#.
Nullable Value Types allow value types, like int or float, to have a value or be null. They are represented using the ? notation (e.g., int?). This is particularly useful when dealing with database or API responses that may return null values.
32. How does the using statement work with IDisposable objects in C#?
The using statement ensures that an IDisposable object is disposed of properly after it's no longer needed. It automatically calls the Dispose method on the object when the code block exits, helping manage resources efficiently.
33. What is the purpose of C# Attributes?
Attributes provide metadata about types, methods, properties, and other program entities. They enable you to add additional information to your code that can be used by tools, frameworks, and libraries at runtime or design time.
34. Describe the concept of Events and Delegates in C#.
Events are mechanisms in C# that allow objects to communicate with each other by broadcasting changes or occurrences. Delegates are used to declare and encapsulate methods that can be invoked through events.
35. Explain the differences between StringBuilder and StringBuffer in C#.
There is no StringBuffer in C#; StringBuilder is the class used for efficient string manipulation. In Java, StringBuffer is used to achieve similar functionality as StringBuilder.
36. What are Lambda Expressions in C#?
Lambda expressions are concise anonymous methods that allow you to write inline code blocks. They're often used with LINQ to create inline functions or delegates for more readable and concise code.
37. Explain the concept of Null Propagation (?.) in C#.
Null Propagation (?.) is used to access members of an object or invoke methods on it only if the object is not null. It helps avoid null reference exceptions when chaining calls on potentially null objects.
38. Describe the differences between ValueType and ReferenceType in C#.
Value types store their actual value directly in memory, while reference types store a reference to the memory location where the value is stored. Value types include built-in types like int, bool, etc., while reference types include objects and classes.
39. What are C# Extension Methods?
Extension methods allow you to add new methods to existing types without modifying their source code. They provide a way to extend the behavior of classes or interfaces that you don't control.
40. How does C# handle polymorphism through inheritance and interfaces?
Inheritance allows a class to inherit properties and methods from a base class. Interfaces provide a way to define contracts that classes must implement. Both mechanisms enable polymorphism, where different classes can be treated as instances of a common base class or interface.
41. Explain the difference between ref and out parameters in C#.
Both ref and out parameters allow methods to modify values of variables passed to them. However, ref requires the variable to be initialized before passing, while out doesn't require initialization and expects the method to assign a value.
42. What is a Tuple in C#?
A Tuple is a lightweight data structure in C# that allows you to group multiple elements of different types together. It's useful when you want to return multiple values from a method or pass around a collection of values.
43. How does C# support operator overloading?
Operator overloading allows you to redefine the behavior of operators for custom types. You can provide your own implementation of operators like +, -, *, /, etc., to work with your custom objects.
44. Explain the concept of Reflection in C#.
Reflection in C# enables you to inspect and manipulate metadata, types, and objects at runtime. It's commonly used for tasks like dynamically loading assemblies, creating instances, and invoking methods.
45. What are Anonymous Types in C#?
Anonymous types allow you to create objects without explicitly defining a class. They're typically used for short-lived objects that hold temporary data, and their properties are inferred based on the initialization.
46. Explain the concept of Polymorphism in C#.
Polymorphism is the ability of different classes to be treated as instances of the same base class or interface. It allows you to create more flexible and extensible code by enabling code that works with the base type to work with derived types as well.
47. What are Nullable Reference Types in C#?
Nullable Reference Types are a feature introduced in C# 8.0 that helps prevent null reference exceptions by distinguishing between nullable and non-nullable reference types. They improve code safety and readability.
48. What is a Finalizer (Destructor) in C#?
A Finalizer, also known as a Destructor, is a special method that's automatically called when an object is garbage-collected. It allows you to release resources or perform cleanup before an object is removed from memory.
49. Explain the purpose of the async and await keywords in asynchronous programming in C#.
The async keyword is used to define asynchronous methods, and the await keyword is used to pause the execution of an asynchronous method until an awaited task is completed. This allows non-blocking execution of tasks.
50. Describe the concept of Boxing and Unboxing in C#.
Boxing is the process of converting a value type to an object type (reference type), and unboxing is the process of converting an object type back to its original value type. These operations involve memory overhead and performance considerations.