Interview Questions Part 2

Q 1)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?

Ans)
From constructor to destructor :

The .NET Framework's garbage collector manages the allocation and release of memory for our application. Each time we use the new operator to create an object(calls the "constructor"), the runtime allocates memory for the object from the managed heap. As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. However, memory is not infinite. Eventually the garbage collector must perform a collection in order to free some memory(calls finalizer/destructor). The garbage collector's optimizing engine determines the best time to perform a collection, based upon the allocations being made. When the garbage collector performs a collection, it checks for objects in the managed heap that are no longer being used by the application and performs the necessary operations to reclaim their memory.

what the are events fired as part of the ASP.NET System.Web.UI.Page lifecycle. Why are they important?

  • PreInit Event
    • Called at the very beginning of page initialization, this event has several practical uses in your code behind pages. A few of these uses are: Checking the IsPostBack property, dynamically setting a master page or theme property, dynamically creating controls, and reading or setting property values. If you were so inclined, you could set a master page dynamically in the PreInit event as such:
  • Init Event
    • Called after the PreInit event and after all controls have been initialized and any skin settings have been applied, this event is very useful for initializing control properties before the page loads.
  • InitComplete Event
    • Like the name implies, this event is called after the Init event is completed. I’m at a bit of a loss for thinking up useful and/or interesting things to do with this event, but if there were any tasks that needed to be completed once the controls were initialized, this would be the place to do it.
  • PreLoad Event
    • This event is called immediately before the Page.Load event and after all postback data has been processed.
  • Load Event
    • Probably the most familiar since it comes for free whenever you switch to the code-behind (or hit F7) on an aspx page in Visual Studio. This event is useful for setting control properties and establishing database connections (both of which could be used to populate a drop-down from the database, for example).
  • LoadComplete Event
    • What else could possibly follow up the Load event? This event is useful for doing any processing that requires that all controls on the page first be loaded.
  • PreRender Event
    • This event is useful for making any final changes to the page or the controls before the output is rendered to the browser.
  • PreRenderComplete Event
    • Called after PreRender is completed. This is the last event to be called before the viewstate is saved.
  • SaveStateComplete Event
    • Called once the viewstate has been saved. Use this for any processing that requires the viewstate to be saved but that doesn’t affect the rendering of the controls.
  • Render
    • While not technically an event, this method gets called for every control on the page. When creating a custom control (that requires custom markup), you could override this method to provide your own markup.
  • Unload Event
    • Use this event to do any final cleanup work on the page. Any controls on the page will also have an unload event that can be used to do cleanup on the controls themselves.
  • Disposed Event
    • This is the last event called for a control when it is released from memory on the server. The is the last stage of the ASP.NET lifecycle when a page is requested.
**************************************************************************

Q 2)Does machine.config overrides the configurations mentioned in web.config?

Ans) NO, because machine.config is use for Server configuration, where as web.config is used to setup the Website configuration.

**************************************************************************

Q 3) Does web.config overrides the configurations mentioned in machine.config?

Ans) Yes, we can override the machine.config with web.config.
In some cases we have to override the machine.config with the web.config according to the Application(website) requirement's.
**************************************************************************
Q 4) How can you compress a viewstate?

Ans).NET also provides the GZipStream or DeflateStream to compress viewstate.
**************************************************************************