In‐Depth for candidates Dap - suniladhya/Advantage GitHub Wiki

These are some C# / .NET questions that can lead to more in depth discussions and verify the candidates knowledge in this area.

What is an interface? How does it differ from an abstract class? What are the different scopes in C#? What's the difference? Public, Protected, Private, etc What is the difference between method overriding and overloading? Overloading: same method name with different parameters. e.g.: foo(int val) { ... } foo(int val, string msg) { ... } Overriding: using the override keyword in a child class to change the behavior of a virtual method in the parent class. What is the difference between virtual and abstract methods? Virtual methods may be overridden by child classes, but otherwise maintain their default implementation. Abstract methods must be implemented by child classes and do not have a default implementation What are some basic collection types the System.Collections namespace? When would you use a dictionary? How is a hashtable implemented? Big-0 notation? What is ASP.NET session state? How does it differ from ViewState? Are there special consideration for web farm? What are some common web application security vulnerabilities? (XSS, CSRF, SQL injection etc) What is the difference between synchronous and asynchronous calls (method or service), in what situations might I use each? What is the "this" keyword, can it be used in a static method? Ref vs value types Leading into a discussion of heap vs stack How to reference types get free'd? How does the GC work? How do you preserve state in web applications when they are based on HTTP, a stateless protocol? What are some major differences between REST and WCF/SOAP? What are some common HTTP verbs? What are some uncommon HTTP verbs? What is the OPTIONS verb usually used for? What sorts of activity should usually be avoided in a constructor? What does lazy loading mean? When is the yield keyword useful? What is deferred execution? What design patterns do you favor? What is the factory pattern? Why is single-responsibility important? What does the acronym SOLID stand for? What does the acronym GRASP stand for? What dependency injection frameworks do you prefer/use/have experience with? What unit testing frameworks do you have experience with? What's the difference between a "setup" and a "test setup" method? What is the thread pool, and how can you take advantage of it? Why would you NOT want to take advantage of it? What types of work should use async/await, and what types of work should use a background task? What is the HTTP items cache? What is thread local storage? How do you decide if a Hashtable, Dictionary, or List is the most appropriate storage type for: a small set of data? a large set of data? What's the Big-O of a sorted list?