What Great .NET Developers Ought To Know
Everyone who writes code * Describe the difference between a Thread and a Process? * What is a Windows Service and how does its lifecycle differ from a "standard" EXE? * What is the maximum amount of memory any single process on Windows can address? Is this different than the maximum virtual memory for the system? How would this affect a system design? * What is the difference between an EXE and a DLL? * What is strong-typing versus weak-typing? Which is preferred? Why? * Corillian's product is a "Component Container." Name at least 3 component containers that ship now with the Windows Server Family. * What is a PID? How is it useful when troubleshooting a system? * How many processes can listen on a single TCP/IP port? * What is the GAC? What problem does it solve?
Mid-Level .NET Developer * Describe the difference between Interface-oriented, Object-oriented and Aspect-oriented programming. * Describe what an Interface is and how it’s different from a Class. * What is Reflection? * What is the difference between XML Web Services using ASMX and .NET Remoting using SOAP? * Are the type system represented by XmlSchema and the CLS isomorphic? * Conceptually, what is the difference between early-binding and late-binding? * Is using Assembly.Load a static reference or dynamic reference? * When would using Assembly.LoadFrom or Assembly.LoadFile be appropriate? * What is an Asssembly Qualified Name? Is it a filename? How is it different? * Is this valid? Assembly.Load("foo.dll"); * How is a strongly-named assembly different from one that isn’t strongly-named? * Can DateTimes be null? * What is the JIT? What is NGEN? What are limitations and benefits of each? * How does the generational garbage collector in the .NET CLR manage object lifetime? What is non-deterministic finalization? * What is the difference between Finalize() and Dispose()? * How is the using() pattern useful? What is IDisposable? How does it support deterministic finalization? * What does this useful command line do? tasklist /m "mscor*" * What is the difference between in-proc and out-of-proc? * What technology enables out-of-proc communication in .NET? * When you’re running a component within ASP.NET, what process is it running within on Windows XP? Windows 2000? Windows 2003?
Senior Developers/Architects * What’s wrong with a line like this? DateTime.Parse(myString); * What are PDBs? Where must they be located for debugging to work? * What is cyclomatic complexity and why is it important? * Write a standard lock() plus “double check” to create a critical section around a variable access. * What is FullTrust? Do GAC’ed assemblies have FullTrust? * What benefit does your code receive if you decorate it with attributes demanding specific Security permissions? * What does this do? gacutil /l | find /i "Corillian" * What does this do? sn -t foo.dll * What ports must be open for DCOM over a firewall? What is the purpose of Port 135? * Contrast OOP and SOA. What are tenets of each? * How does the XmlSerializer work? What ACL permissions does a process using it require? * Why is catch(Exception) almost always a bad idea? * What is the difference between Debug.Write and Trace.Write? When should each be used? * What is the difference between a Debug and Release build? Is there a significant speed difference? Why or why not? * Does JITting occur per-assembly or per-method? How does this affect the working set? * Contrast the use of an abstract base class against an interface? * What is the difference between a.Equals(b) and a == b? * In the context of a comparison, what is object identity versus object equivalence? * How would one do a deep copy in .NET? * Explain current thinking around IClonable. * What is boxing? * Is string a value type or a reference type? * What is the significance of the "PropertySpecified" pattern used by the XmlSerializer? What problem does it attempt to solve? * Why are out parameters a bad idea in .NET? Are they? * Can attributes be placed on specific parameters to a method? Why is this useful?
C# Component Developers * Juxtapose the use of override with new. What is shadowing? * Explain the use of virtual, sealed, override, and abstract. * Explain the importance and use of each component of this string: Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d * Explain the differences between public, protected, private and internal. * What benefit do you get from using a Primary Interop Assembly (PIA)? * By what mechanism does NUnit know what methods to test? * What is the difference between: catch(Exception e){throw e;} and catch(Exception e){throw;} * What is the difference between typeof(foo) and myFoo.GetType()? * Explain what’s happening in the first constructor: public class c{ public c(string a) : this() {;}; public c() {;} } How is this construct useful? * What is this? Can this be used within a static method?
ASP.NET (UI) Developers * Describe how a browser-based Form POST becomes a Server-Side event like Button1_OnClick. * What is a PostBack? * What is ViewState? How is it encoded? Is it encrypted? Who uses ViewState? * What is the element and what two ASP.NET technologies is it used for? * What three Session State providers are available in ASP.NET 1.1? What are the pros and cons of each? * What is Web Gardening? How would using it affect a design? * Given one ASP.NET application, how many application objects does it have on a single proc box? A dual? A dual with Web Gardening enabled? How would this affect a design? * Are threads reused in ASP.NET between reqeusts? Does every HttpRequest get its own thread? Should you use Thread Local storage with ASP.NET? * Is the [ThreadStatic] attribute useful in ASP.NET? Are there side effects? Good or bad? * Give an example of how using an HttpHandler could simplify an existing design that serves Check Images from an .aspx page. * What kinds of events can an HttpModule subscribe to? What influence can they have on an implementation? What can be done without recompiling the ASP.NET Application? * Describe ways to present an arbitrary endpoint (URL) and route requests to that endpoint to ASP.NET. * Explain how cookies work. Give an example of Cookie abuse. * Explain the importance of HttpRequest.ValidateInput()? * What kind of data is passed via HTTP Headers? * Juxtapose the HTTP verbs GET and POST. What is HEAD? * Name and describe at least a half dozen HTTP Status Codes and what they express to the requesting client. * How does if-not-modified-since work? How can it be programmatically implemented with ASP.NET?
Explain and the usage of VaryByParam, VaryByHeader. * How does VaryByCustom work? * How would one implement ASP.NET HTML output caching, caching outgoing versions of pages generated via all values of q= except where q=5 (as in http://localhost/page.aspx?q=5)?
Developers using XML * What is the purpose of XML Namespaces? * When is the DOM appropriate for use? When is it not? Are there size limitations? * What is the WS-I Basic Profile and why is it important? * Write a small XML document that uses a default namespace and a qualified (prefixed) namespace. Include elements from both namespace. * What is the one fundamental difference between Elements and Attributes? * What is the difference between Well-Formed XML and Valid XML? * How would you validate XML using .NET? * Why is this almost always a bad idea? When is it a good idea? myXmlDocument.SelectNodes("//mynode"); * Describe the difference between pull-style parsers (XmlReader) and eventing-readers (Sax) * What is the difference between XPathDocument and XmlDocument? Describe situations where one should be used over the other. * What is the difference between an XML "Fragment" and an XML "Document." * What does it meant to say “the canonical” form of XML? * Why is the XML InfoSet specification different from the Xml DOM? What does the InfoSet attempt to solve? * Contrast DTDs versus XSDs. What are their similarities and differences? Which is preferred and why? * Does System.Xml support DTDs? How? * Can any XML Schema be represented as an object graph? Vice versa?
http://forums.asp.net/t/1951861.aspx?How+to+become+ASP+NET+developer+who+can+be+hired+by+IT+Companies
Do they suck? Did I miss any? How do you think people did? * From constructor to destructor (taking into consideration Dispose() and the concept of non-deterministic finalization), what the are events fired as part of the ASP.NET System.Web.UI.Page lifecycle. Why are they important? What interesting things can you do at each? * What are ASHX files? What are HttpHandlers? Where can they be configured? * What is needed to configure a new extension for use in ASP.NET? For example, what if I wanted my system to serve ASPX files with a *.jsp extension? * What events fire when binding data to a data grid? What are they good for? * Explain how PostBacks work, on both the client-side and server-side. How do I chain my own JavaScript into the client side without losing PostBack functionality? * How does ViewState work and why is it either useful or evil? * What is the OO relationship between an ASPX page and its CS/VB code behind file in ASP.NET 1.1? in 2.0? * What happens from the point an HTTP request is received on a TCP/IP port up until the Page fires the On_Load event? * How does IIS communicate at runtime with ASP.NET? Where is ASP.NET at runtime in IIS5? IIS6? * What is an assembly binding redirect? Where are the places an administrator or developer can affect how assembly binding policy is applied? * Compare and contrast LoadLibrary(), CoCreateInstance(), CreateObject() and Assembly.Load().