Sunday, February 17, 2008

Microsoft Intern question paper

Well I attended Microsoft Internship written test. The question paper was um..okay. They concentrated more on concepts. The "reading between lines" concept was requried to answer all the questions. We were asked to register first, then assemble for a presentation. The presentation was done by a microsoft personnel (dint tell us his name). There were around 400 students from all over tamilnadu. The written test was conducted for around 2500 students alround India. The presentation was about MS's 3 teams for which the internship program was conducted. They were

  • MS IT global team
  • MS consulting
  • MS IDC(Indian Develvopment Center)

The test started at 11.10 am exactly. The question paper was divided into sections. There were 5 sections. Each section was alloted timings based on I guess.. Importance. The 5 sections were(in order)

  • Analytical
  • Software Engineering
  • C and C++ programming
  • Operating System concepts
  • RDBMS

The question paper for next section is given only after collecting the previous section's paper. The questions were asked to test our understanding level and how well we learnt concepts rather than how we mugged up. Sample questions are:

Analytical:

  • Assign a 6 letter code for employees of a company. A-E(5) characters and 0 - 9(10) digits are to be used, whereas first 3 letters are characters and others are digits. Find the proability that all 3 characters are the same.
  • Given a pie chart find the corresponding number of people... etc.

Operating system:

  • In deadlock prevention, hold and wait can be avoided by which protocol. There are 2 protocols and both were given as options.

C and C++ programming:

  • Enumeration is an Userdefined datatype.
  • List is used instead of array and is preferred when
  1. For sequential access.
  2. For random access and some more options.
  • The default access specifier for inheritance in C++ is ......

Monday, February 11, 2008

Struct && Union

STRUCTURE:

A structure is a group of items in which each item can be refrenced with its own identifier and such item is called "member" of the structure. Aka record and field of the reord sometimes.

Matter-of-fact details:

  • For declaring structures, there are 3 methods
  1. struct { //members }struct_varname;
  2. struct struct_tag {//members} ; struct struct_tag struct_varname;
  3. typedef struct {//members} TYPENAME; TYPENAME varname;
  • the typedef declaration sometimes used to achieve the flavor of ADT specification within a C program.
  • A member of structure may be declared to another structure. Eg: struct var1{ struct var2; struct var3; };
  • ANSI standard C allows assignment of structures of the same type. But the original C developed by Kernighan and Ritchie doesnt allow this type of assignment but the field wise assignment.
  • Two structures cannot be compared for equality in a single operation in C.
  • Same identifier can be reused to name members of different structures. No ambiguity caused because while refrencing, the memeber name is followed by the structure name.
  • Amount of memory specified by the structure is the sum of the storage specified by the members of the structure.
  • There are boundary restrictions in some system. For eg: if there is a member of integer, it will start from memory location which is divisible by 4 (assuming integer occupies 4 bytes).

UNION:

C allows another type of structure, the union, which permits a variable to be interpreted in several different ways.

SPOJ Techniques

SPOJ online judge is one of the judges which is used by many of the college students. So far only few problems are solved, many techniques have been learned from mistakes. When the solution is submitted the judge gives the result in code. The code has to be interpreted as follows:

1. AC - accepted - your program ran successfully and gave a correct answer

2. WA - wrong answer - your program ran successfully, but gave an incorrect answer

3. TLE - time limit exceeded - your program was compiled successfully, but it didn't stop before time limit

4. CE - compilation error - your program couldn't be compiled; compiler's errors can be seen from www and are sent via mail if your preferences say so; note: only some languages can give CE, syntax errors in intrerpreted languages can lead to WA (Python - no pre-checking syntax or Perl - CE only afer a basic syntax check)

5. RE - runtime error - your program was compiled succesfully, but it exited with an error; possible codes are:
- SIGSEGV (signal 11) - most common, "segmentation fault"
- SIGXFSZ (signal 25) - "output limit exceeded"
- SIGFPE (signal 8) - "floating point error", like division by zero, etc.
- SIGABRT (signal 6) - raised by the program itself; C++ STL does it under some conditions
- NZEC (non-zero exit code) - helps telling crash from WA with interpreted languages
- other - there are other signals which can cause program to terminate, all remaining are shown as other

problems solved:

In the future, the techniques for string manipulation with code will be updated :)

DataStructures

DATA TYPE:
A method of interpreting a bit pattern.

ABSTRACT DATA TYPES:
Tool for specifying the logical properties of the datatype. Its java counterpart is interface. It declares the methods,but the implementation details are not mentioned and can be changed according to the context of the class that implements the interface. Hence here, it defines the logical properties abstractly.
Eg: For array,

ADT definitions:

abstract typedef <> array(ub,eltype);
condition type(ub) == int;

This specifies that array in C will have two arguments one is ub(upper bound) and the other is eltype(element type). Upper bound is specified to allocate that many number of contiguous memory locations. The element type specifies which type of element each mem. location is going to hold.
This can be extended to other language array representation with some details. For eg in Pascal, int arr[-3..10] specifies both upper bound and lower bound for the array along with eltype of int. Thus ADT would be sth like

abstract typedef <> array(lb,up,eletype);
condition type(ub) && type(lb) == int;

DATASTRUCTURES:

COMPOSITE OR STRUCTURED DATATYPES:
These are made up of simpler data structures. One such datatype is array.

ARRAY:
Array is a finite ordered set of homogeneous elements.

finite: Only finite no. of elements can be stored in an array.
ordered set: the elements are arranged.
homogeneous: may contain one datatype or the other but not the both.

we know in C, int a[10] declares a continuous memory locations starting from a till a+10*sizeof(int). The base (a) is a pointer to the starting location of the array. The disadvantage of the array is that it contains homogeneous elements. But it the simplest form of storing large value.
Another disadvantage interms of efficiency, while dealing with large number of inputs, the insertion and delete all are difficult or atleast will not be efficient.Mutlidimensional arrays are viewed as single dimensional arrays stacked together. The array can be represented as row-major representation where a[2][1] is represented as,

--------
|a[0][0] |
--------
|a[0][1] |
--------
|a[1][0] |
--------
|a[1][1] |
--------
|a[2][0] |
--------
|a[2][1] |
---------

I am BACK!!

Back after a long time. Got lot of things to pour in. Things swamped in
the first in, first out fashion.









Though we dint make it into the shortlisted teams, the experience was a piece of cake. Sitting around the table as in meetings(though haven't seen real meetings, I have picture of it from the films), discussing the pros and cons of every idea about the product gave us real insight into the product development details. Our product was Green Paper. Not to be confused with the Green paper- government's tentative report. Our aim was all about going paperless by providing secure storage and cataloging of receipts and documents online and sharing them with anyone who has internet connection. The motive behind the product is the complete digitization of paper receipts and documents which in turn reduces vast consumption of papers thereby contributing to a greener environment.


Link to our paper.

The project was not completed due to certain unforeseen situations. Similarly here, experience was a gain.

Link to our paper.