Microsoft Interview Question for Software Engineer / Developers


Team: MS Office Platform
Country: India
Interview Type: In-Person




Comment hidden because of low score. Click to expand.
1
of 1 vote

unsigned int reverse_bits(unsigned int num)
{
	num = (num<<16)|(num>>16);//every 16
	num = (num & 0xFF00FF00)>>8 | (num & 0x00FF00FF)<<8;//every 8
	num = (num & 0xF0F0F0F0)>>4 | (num & 0x0F0F0F0F)<<4;//every 4
	num = (num & 0xC3C3C3C3)>>2 | (num & 0x3C3C3C3C)<<2;//every 2
	num = (num & 0xA5A5A5A5)>>1 | (num & 0x5A5A5A5A)<<1;//every 1
	return num;
}

- Sugarcane_farmer May 28, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 votes

SORRY Above code will not work
A big bug resolved below

unsigned int reverse_bits(unsigned int num)
{
	num = (num<<16)|(num>>16);//every 16
	num = (num & 0xFF00FF00)>>8 | (num & 0x00FF00FF)<<8;//every 8
	num = (num & 0xF0F0F0F0)>>4 | (num & 0x0F0F0F0F)<<4;//every 4
	num = (num & 0xCCCCCCCC)>>2 | (num & 0x33333333)<<2;//every 2
	num = (num & 0xAAAAAAAA)>>1 | (num & 0x55555555)<<1;//every 1
	return num;
}

- Sugarcane_farmer May 28, 2014 | Flag
Comment hidden because of low score. Click to expand.
0
of 0 votes

Sorry, Above has a bug
Solved in below.

unsigned int reverse_bits(unsigned int num)
{
	num = (num<<16)|(num>>16);//every 16
	num = (num & 0xFF00FF00)>>8 | (num & 0x00FF00FF)<<8;//every 8
	num = (num & 0xF0F0F0F0)>>4 | (num & 0x0F0F0F0F)<<4;//every 4
	num = (num & 0xCCCCCCCC)>>2 | (num & 0x33333333)<<2;//every 2
	num = (num & 0xAAAAAAAA)>>1 | (num & 0x55555555)<<1;//every 1
	return num;
}

- Sugarcane_farmer May 28, 2014 | Flag
Comment hidden because of low score. Click to expand.
0
of 0 vote

unsigned int reverseBits(unsigned int num)
{
    unsigned int  NO_OF_BITS = sizeof(num) * 8;
    unsigned int reverse_num = 0;
    int i;
    for (i = 0; i < NO_OF_BITS; i++)
    {
        if((num & (1 << i)))
           reverse_num |= 1 << ((NO_OF_BITS - 1) - i);  
   }
    return reverse_num;
}
Time Complexity: O(log n)
Space Complexity: O(1)

- maddy May 23, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

#define reverse_nibble(x) (((x & 0x01) << 3) | ((x & 0x02) << 1) | ((x & 0x04) >> 1) | ((x & 0x08) >> 3))
#define reverse_byte(x)   ((reverse_nibble((x >> 4) & 0x0F)) | ((reverse_nibble(x & 0x0F) << 4)))
#define reverse_word(x)   ((reverse_byte(x) << 8) | (reverse_byte(((x >> 8) & 0xFF))))
#define reverse_dword(x)  ((reverse_word(x) << 16) | (reverse_word(((x >> 16) & 0xFFFF))))

- CCoder May 27, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Hi Dipankar,

Was this interview for SDE 1 or SDE 2?
Also were u selected.

Sorry for asking here

- Sugarcane_farmer May 28, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

for (int i = 0; i < 16; i++) {
        int b1 = a & (1<<i);
        int b2 = a & (1 << (31 -i));
        if (b1) {
            a |= (1 << (31 - i));
        } else {
            a &= ~(1 << (31 - i));
        }
        if (b2) {
            a |= (1 << i);
        } else {
            a &= ~(1 << i);
        }
    }

- Anonymous June 03, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

If someone did not specifically say bitwise then please just divide by 10 and reverse.
Otherwise the other approach is divide by 2 and shift left.

Since it's 32 bit , it will be a constant only.

- Anonymous July 14, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

I assume we're talking about reversing bits. Either way, here're code which does bits reversal and number as a whole reversal:

typedef unsigned int uint;

uint ReverseBitsOfUInt(uint number)
{
    uint reversedNumber = 0;
    uint count = 32;

    if (number)
    {
        while (number)
        {
            reversedNumber <<= 1;
            reversedNumber |= number & 1;
            number >>= 1;
            count--;
        }

        reversedNumber <<= count;
    }

    return reversedNumber;
}

uint ReverseNumber(uint number)
{
    uint reversedNumber = 0;

    if (number)
    {
        while (number)
        {
            reversedNumber = reversedNumber * 10 + number % 10;
            number /= 10;
        }
    }

    return reversedNumber;
}

- AK October 28, 2014 | Flag Reply


Add a Comment
Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

Learn More

Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.

Learn More

Resume Review

Most engineers make critical mistakes on their resumes -- we can fix your resume with our custom resume review service. And, we use fellow engineers as our resume reviewers, so you can be sure that we "get" what you're saying.

Learn More

Mock Interviews

Our Mock Interviews will be conducted "in character" just like a real interview, and can focus on whatever topics you want. All our interviewers have worked for Microsoft, Google or Amazon, you know you'll get a true-to-life experience.

Learn More