Monday, July 8, 2013

.Net Interview

Interviewing candidate for a mid level requires lot of scrutiny to get right candidate.  I had always had list of areas I would like to cover the depth in the area is depends on the candidates interest and experience, but I would like always make sure to know his breadth.  Here is my notes (Crude copy paste from One Note)

  1. OOPs
    1. Delegates / Extended Methods
    2. Threading (Pool / TPL / Native) 
    3. Could not differentiate Static and Dynamic poly
    4. Abstract and Interface
    5. Abstract Factory
    6. Virtual, Override
    7. Partial class
  2. .Net basics
    1. Reference type, value type
    2. Call by value and call by reference
    3. Why Reflections / Why Garbage Collection & How
  3. Collections
    1. Stack, Queue
    2. Array, Array List
    3. Hash table, Dictionary
  4. Build & Deployment

Debugging

  1. When ASP.Net page is slow how do you respond?

Technology Area

  1. ASP.Net (Single sign-on)
      • Cache, Paging
      • Session
      • Application - Global.asax
      • Tracing
      • Error handling
      • Profiling
      • AJAX
      • Configuration
      • HTTPModule & HTTPHandler
      • ASP.Net Pipeline
      • User control, Customer control
      • Authentication, Authorization
      • Member provider
      • Data Binding
  2. MVC / MVVM
  3. Entity Framework / ORM / LINQ
  4. WCF (RIA, OData) / WPF / WF / SL (MEF, Prism)
  5. Design Patterns
  6. SQL (SSRS, SSIS, SSAS, TSQL)
  7. SharePoint (Customization, Performance Point, Power View, Power Pivot)

Designing Skills

  • Consider you are building simple Reporting solution to where you need to show data from DB to an UI page.  What are you primary question to estimate & design this app?
    • Number of Reports
    • Size of data
    • Number of users
    • Authentication
    • Performance needs, Frequency of data change and Caching
    • SP vs Dynamic SQL
    • AJAX & Pagination

Technical Leadership

  • Code Review
    • Readability
    • Each method one action
    • Input validation
    • Error Handling
    • Performance & Caching
    • View State
  • Estimation
  • Task allocation and tracking

Tools

  • Fiddler
  • FxCop
  • Beyond Compare

Logical Thinking

  • Designing lift logic
  • Designing Railway platform logic
  • Representing hierarchy using Array
  • Thread Synchronization
  • Tic-Tac -To who to create next move based on current state
    • How to you store the state
    • Compare two sets
  • Process communication

Scenario Interview Questions

I like the interviews with some scenario, and keep increasing the complexity of the problem to judge the persons knowledge level and how he maps problem to solution space.  The following are the basic problem to start and keep adding more complex scenario.

  • Log table summarization: If you have big log table, you need to analyze and summarize, how to do it?  How do you search on a log table for a pattern? (Generate Hash table /Leaner search)
  • Searching missing number (Leaner / Binary) (Increase complexity by saying, if need to read from file, db, multiple sources, using webservice, …)
  • You have a screen with a master record and a grid with multiple detail records, such as "Order" and "Order Line Items". The user can "scroll" from one master record to the next, or back again. How will you guarantee that the detail grid records being displayed always match the master record being displayed?
  • You have a high volume transaction system. You have a slowly changing product list. How can you optimize database disk access to get the product list for all the various programs that make use of it? How can you make sure that the optimized product list is always up-to-date (or very nearly so)?
  • You have a multi-record grid that needs to display a bunch of records. Most of the fields are short, but one is very big, it will take up most of the height available to the entire grid, not just one of the 10 records in the grid. We want to show nine records worth of short fields in the grid, but also show the "selected" record's big field in a shared, overflow area. As the user selects a different row in the grid, the overflow area should be synchronized with the selected row. How would you go about doing this?
  • View State "automatically" saves and restores values stored in some objects. What kinds of objects does it automatically save, and what kind does it always ignore?
  • Design a STOCK value display site
  • Consider a scenario in which user is complaining that an ASP.Net page is performing very slow, which was working properly for few months. How do you approach the problem? Detail various aspects of the application you look into. (Key: Isolating problem boundary / View State information /Database Tuning /Data volume check / IIS issue / IIS Log diagnostic)
  • Consider a scenario, where you need to develop a one page web application which has only one report. The report data is stored in database in single table. The table has lot of data and the size of the table is 500 GB. You need to develop a highly scalable and high performing solution for this scenario. Detail your design and highlight various technical decisions which you make in the process of the design. Also list your question to the user to complete your design. (Key: ASP.Net Performance(Paging in ASP.net / Caching / Minimize of View State info), DB: Partitioning in Tables / Indexing in DB / Database based paging) Functional: (Usage of report / Number of users / Number of concurrent users), Technology:  Azure / Azure table storage / AJAX /Silverlight)

Teams PowerShell

 The PowerShell helps to get quick meta data around Teams. Install-Module -Name MicrosoftTeams Connect-MicrosoftTeams Get-TeamAllChannel...