Recently, I attended telephonic interview with LimeSpot Technology India Pvt. Ltd. (Noida). This was an hour long interview and below is the list of questions asked.

There was no introduction round.

Straight away I was asked following questions in given order:


[Interviewer]: Briefly explain the projects you have mentioned in your resume!!
[ME]: I was not having my resume with me so just honestly told him about the same. Then he selected one of my projects and asked about it.

[Interviewer]: When a "process" is started on a system what is the sequence of steps taken by OS at that time?
[ME]: As I work on Windows Operating Systems, I explained that any executable on Windows has a specific file format called Windows PE(Portable Executable) File Format. A PE file basically contains information about the executable in multiple, nicely organized, sections - data section, code section and file header, type of binary (32-bit or 64-bit), windows subsystem required by executable etc.

When OS loader starts a process it first validates the file format and determines Windows subsystem that this kind of exe requires to execute. Then OS allocates some address space and default to the process .

[Interviewer]: What are the various sections in address space of the process or how does the process's virtual memory look like?
[ME]: Process has a call stack for local variables, heap for runtime memory allocation and global data section, code.

[Interviewer]: What for does a process has this Stack?
[ME]: Local variables for a function are stored on Call Stack of the process. Whenever a function calls another function, context of calling function is stored on a new stack frame. Whenever callee returns then context of caller is obtained from stack and execution starts from instruction just after the function call.

[Interviewer]: What is process heap?
[ME]: Heap is area of memory that a process is allocated by operating system for any runtime memory requirements a process may have. Whenever we allocate memory using 'new' or 'malloc' kind of functions, it gets allocated from Heap only.

[Interviewer]: What is a thread, How does thread differ from a process?
[ME]: Thread is an actual executing instance of a process, a process can have one or more threads and all threads inside a process share same address space. Every thread has its' own call stack.

[Interviewer]: In a multi-threaded application how can you synchronize threads?
[ME]: Usually synchronization is achieved by using mutex, locks. In cases there are only two threads to be synchronized we can declare a boolean variable which if true then only thread1 starts execution and after thread1 is completed it can set the variable to false. Similarly, thread2 can check if the flag is false, then it executes and sets it to true.

[Interviewer]: Comment on inter-process communication!
[ME]: I read about IPC in my college days only and wrote programs for Linux so I just mentioned about Named Pipe, Shared Memory and Queues are used for Inter Process Communication. I was asked whether named pipe communication is possible on Windows systems as well. Yes, was the answer but I did not remember the Win32 APIs for creating Named-Pipes thus stopped my discussion over there and moved to the next question.

[Interviewer]: A website is reportedly having very bad performance and it uses databases to store it's information. What will be your strategy to fix this performance issue?
[ME]: My answer revolved around following three points:

  • Avoid multiple round trips to the database.
  • Cache data because new database servers provide this features (SQL Does)
  • Use external CSS files inspite of inline CSS style code for individual html elements
I should admit here that I should have mentioned about -
  • Minimize ViewState of a page
  • See database design
  • Use Indexes on Database Server
[Interviewer]: What are indexes in a database?
[ME]: I am not at all a database guy hence could answer only theoretically about it that a database supports indexing as we have book indexes to quickly search for any particular information we are searching for in a book.

[Interviewer]: Your resume mentions about a Chat Application project. Can you give a high level overview of how you created this application?
[ME]: I explained about my project and it's implementation.

[Interviewer]: In OOPs, Can you explain about polymorphism?
[ME]: I explained about overloading, as well as, runtime polymorphism.

[Interviewer]: Does C# support multiple inheritance? How can you achieve multiple inheritance in C#?
[ME]: No. A class can although implement as many interface thus we can create interfaces and implement them in a class, in case we want multiple inheritance.

[Interviewer]: Any idea about design patterns?
[ME]: As I have just started reading about design patterns, I told that this is current item on my TODO list and I am just reading about it. No experience about this so no further questions were asked about it!!

This was the end of it and I was given chance to ask questions. Here are the list of questions I asked:

What is the project I will be working on?
What is the source of revenue for Lime Spot as of now?
What are the travel opportunities at Lime Spot to US?

We exchanged "Have a Nice Time" kind of wishes with each other and interview was concluded. I've yet to listen from them!! (:)

2 comments

  1. Sandy // September 26, 2008 at 9:37 AM  

    This was really helpful as i have an interview with lime spot... Thanks.

  2. Anonymous // October 6, 2008 at 11:40 AM  

    for which profile did you appeared?