Hello guys, its been long since I last blogged. I have been wanting to get back to blogging from a long time, but was looking for some topic to resume, and now that I have one, I hope to continue blogging 🙂

In this blog I will talk about my interview process in National Instruments R & D. So, without wasting any more words, lets get started .

Something about the company: I really don’t know much about it, except that it produces softwares required which are used typically by electrical and electronic engineers for designing testing 🙂 I’ve always wanted to work in a products company, though of late i was getting more inclined towards systems programming, but no issues 🙂

Profile they offered :

Two  profiles were offered – one for software, one for hardware. Hardware was open for ECE and EEE, Software was open for CS, IT, ECE, EEE

They had three kinds of postings:

1)      Full time positions (the regular thing)

2)      Full time interns – I dont know much about it, except that it is for 6 months, at the end of which based on one’s performance, s/he is inducted into the company. This was for MCAs.

3)      Part time interns – This is for people who are in and around b’lore, who can visit the company 2-3 days a week

Coming to the more interesting, the interview process  🙂 :

I was sitting for the software profile, so I don’t know much about what happened to hardware people. There were basically 3 rounds, 1 written and 2 interviews. They asked about coding right from the first question in first round to the last question in the last round.

Round 1 : Written round, basically a C Apti

This round lasted for an hour, basically consisting of 2 parts. The first part contained code snippets and simple questions on it. There were around 12 questions and the answer had to be written(not MCQ). The second part involved wrting an algo/code or both for a prob statement.

Some simple problems were – find what does the following code does ( one was about printing nodes at kth level, one was about calculating sum of a number until single digit…), replace a given code with a more simpler code, finding number of graphs with n vertices, n few more simpler ones. The only question for which i didnt get a solution was

if((a == 5) || (a ==7))

{
//label

}

The compiler generates following assembly code

cmp eax, 5

jz label

cmp eax, 7

jz label

Optimise above code with single jz statement

The second part of Round 1 was to give an algo/code a problem statement. The jist of the statement is –

N soldiers of two armies are standing in two rows facing each other. Their individual strengths is given by two arrays G and F. You are commander of army F. If G’s soldier strength is greater than or even equal to F’s, G’s soldier wins or else F’s soldier wins. The soldier who looses dies, but strength of winning soldier is unaffected. Rearrange F’s soldiers such that the sum of strengths of alive soldiers in F is maximum.

Given two arrays int G[], int F[], int n = number of soldiers in both G and F

The indices represent the strength of a soldier

G[] = { given and order fixed}, ex: G[] = {2, 10, 7}

F[] = {given, order not fixes}, ex: F[] = {2, 9, 6}

sum = 0, all are dead

Rearrange F so that the sum of strengths of alive soldier is max. The above can be rearranged as

F[] = {2, 6, 9}, sum = 9

That was pretty much the first round. Around 80-90 people wrote the first round, and around 22 were selected. 3 from IT, 4 from CS, 1 from MCA and the rest from ECE.

Round 2: First round of interviews

After the written round, the shortlisted candidates were called for an interview. It was scheduled for half an hour for each person. My interview started almost on time. They took my resume, studied it for 10 mins and then I was called in. It was a one on one interview. The interviewer started with asking me to tell about myself. After clearing the purpose of the interview and what they are looking for in a candidate in that round, he proceeded on to ask questions. The questions themselves were easy. I was asked about 4 – 5 such questions in the entire round.

I always proceeded with first telling the interviewer what my strategy would be in solving the problem, and when he was satisfied, to write the code. The following questions I can recall were asked to me:

  • Given two arrays A[a1, a2…an] and B[b1, b2…bn], write a program(WOP) to find the fraction A/B in its simplest form
  • Given an string, find the largest palindrome in it
  • Given two trees, find out if one tree is subtree of the other(this was not required to be coded)
  • I don’t remember any more questions

This round was pretty much easy, the interviewer was friendly and would change the question if you were to get stuck at some point. The sad part was some people were eliminated in this round, based on such easy questions.

Around 14 ppl were selected from this round, 2 from IT, 3 from CS, 1 from MCA, rest from ECE.

Round 3: Second round of interviews + HR

This 1-on-1 interview round was scheduled for one hour. It started almost on time. My interview was slightly different from others. My interviewer spent around 10 mins asking me about things in my resume, regarding extra curricular activities, on my role in club, specifically the workshops, events I conducted, co-coordinated, attended, regarding my role in the cultural fest, on my internships. Then he started with the technical questions.

In the entire remaining duration we discussed only one question. He asked a question, which fortunately, came in my earlier round. He asked on how you will say, given pointers to two nodes, one is a sub tree of the other. He asked it on two approaches – comparing the value of the pointer, and comparing the values of nodes themselves.

The solution is rather straightforward, if comparing memories, traverse one tree and check each node’s address with the other node. If its comparing by value, it gets more complicated as all the children of the other node also needs to be compared to infer whether it’s a subtree or not.

I was asked to code both the approaches, and he checked it against various boundary conditions. I had made some implementation mistakes here and there which he founded out, and some I realized while explaining him the code. He was cool with it, as long as I corrected it.

After the tech questions, there were two HR questions –

1) Have you spent too much time on debugging something, and if yes, where was the fault, how did you correct it and how did you go about finding it?

2) As this was an R&D position, he asked me to give an example where I have shown motivation and initiative, when I didn’t really have to do it.

I didn’t have much trouble answering the above questions.

Finally, after around 30-45 mins of discussions within themselves, they published the results. Five people made it through: 1 from CS, 1 from IT and 2 from EC. They gave 1 full time internship to a MCA.

So that’s my entire experience. They haven yet given the joining dates. From my entire experience, two things that helped me the most –

1)      The ability to code, even when they say algo is enough, after giving algo, if u have time, code it. It gives you an advantage.

2)      Extra curricular activities. Depending on the profile of the company and the job position, change your resume to highlight few key areas, instead of putting all information, specially the langs/platforms/etc you know and the subjs which you studies.

These are my personal opinions, which I feel will help you.

All the best to everyone, who is looking for placements this year or in future. If you can code and have practice, you don’t really have to worry about anything else.