|
Interview questions on C and C++
Insights of an
inverter. Explain the working? Q1: Tell how to check whether
a linked list is circular.
A: Create two pointers, each set to the start of the list.
Update each as follows:
while (pointer1) {
pointer1 = pointer1->next;
pointer2 = pointer2->next; if (pointer2)
pointer2=pointer2->next;
if (pointer1 == pointer2) {
print (\"circular\n\");
}
}
Q2: OK, why does this work?
If a list is circular, at some point pointer2 will wrap
around and be either at the item just before pointer1, or
the item before that. Either way, it’s either 1 or 2 jumps
until they meet.
How can you quickly find the number of elements stored in a
a) static array b) dynamic array ?
Why is it difficult to store linked list in an array?
How can you find the nodes with repetetive data in a linked
list?
Write a prog to accept a given string in any order and flash
error if any of the character is different. For example : If
abc is the input then abc, bca, cba, cab bac are acceptable
but aac or bcd are unacceptable.
This is a C question that I had for an intern position at
Microsoft: Write out a function that prints out all the
permutations of a string. For example, abc would give you
abc, acb, bac, bca, cab, cba. You can assume that all the
characters will be unique. After I wrote out my function, he
asked me to figure out from the code how many times the
printf statement is run, and also questions on optimizing my
algorithm.
What’s the output of the following program? Why?
#include <stdio.h>
main()
{
typedef union
{
int a;
char b[10];
float c;
}
Union;
Union x,y = {100};
x.a = 50;
strcpy(x.b,\"hello\");
x.c = 21.50;
printf(\"Union x : %d %s %f \n\",x.a,x.b,x.c );
printf(\"Union y :%d %s%f \n\",y.a,y.b,y.c);
}
Given inputs X, Y, Z and operations | and & (meaning bitwise
OR and AND, respectively)
What is output equal to in
output = (X & Y) | (X & Z) | (Y & Z)
|
|