Skip to main content

Some interesting questions

1.whats the value of x.
x = 20;
y=30;

x=y++ + x++;
x = 30++ + 20 ++ = 50 but there is one ++ pending for x which shall be executed so the value of x will 51 .

2.write  a function to check its a big endian or little endian

first method

union test{
        int i;
        char c;
};

test t1;

t1.i = 1;

if(t1.c == 1){
    pf("LE");
}
else
pf("BE");


second method.
int i=1;
if( *(char*)&i == 1)
pf("LE");
else
pf("BE")

3.write a program to reverse the bits in an integer 1101 ==> 1011
 int output;
for(int i=0;i<32;i++){
       if( input & 1 ==1 ){
             output |= 1<<32-i;
       }
     input = input >> 1;
}

4.
 int inc(int ip){
     static int i=2;
     i += ip;
     return i;
}

x = 10;
if(  inc(x) == 12 || inc(x) == 14 )
pf("%d",inc(10)) ;

whats is the output?  its quite easy .. let me know if u need answer.

5.Think about the reason for one thread not receiving the message by the other thread . 
  • meomry corruption 
  • other thread reading message  for this tread
  • if they are using queue,  queue might be full
  • if the receiving thread is of low priority and it never getting chance to execute and hence cant read the msg.

6.write a function to reverse the linked list.
check page 33 and 34 of this article

7.If we have 2 set of identical numbers and if we zero down any one of the number, find that number
one easy solution would be get the sum of both the set and the difference will give you the answer.(can be done in O(n) )
second solution is sort both of the arrays and compare them at each position (but sort them in ascending order or descending order ? Think :) )

8. let say we have 3 macros to print something like below
    1  #define PRINT3(b1,b2,b3) /
                 myprint("%x %x %x",b1,b2,b3);
    2   #define PRINT2(b1,b2) /
                 myprint("%x %x",b1,b2);
    3   #define PRINT1(b1) /
                 myprint("%x",b1);
        write a function which receives length i.e total number of bits and char* actual data to   print  each    bit using above macros, make as small as possible and working.

pseudo code
while(len>0)
{
        if(len>3){
          // use   PRINT3
          len = len-3;
       }
        else if(len == 2){
             // use PRINT2
               len = len-2;
       }
       else{
                //use PRINT1
                len = len-1;
       }
}

9.Write diff kind of functions to multiply by 7.
int mul71(int i){
      return i*7;
}
int mul72(int i){
     int  pr = 0;
     for(i = 0;i <min(i,7);i++)
             pr +=  max(i,7);

       return pr;
}

int mul73(int i)
{
      return i<<3 - i;
}

10. what is re-entrant function ?

Comments

Popular posts from this blog

Enable stats GUI on haproxy.

Add bottom snippet to the haproxy.conf below the defaults section. listen  stats         bind 19.41.259.10:1234         mode            http         log             global         maxconn 10         clitimeout      100s         srvtimeout      100s         contimeout      100s         timeout queue   100s         stats enable         stats hide-version         stats refresh 30s         stats show-node         stats auth admin:password         stats uri  /haproxy?stats Make sure you are updating the IP address on the bind to your VIP and if you want, you can change th...

atoi implementation in C

Algo for you own implementation of atoi :) :) int val = 0;    for each char in the string       val = val *10 + char-48 lets write some code for it :) int myatoi(char *convetIt) {      int val = 0;      while(*convetIt)      {           val = (val * 10) + *convetIt - 48;           convetIt++;      } } So how it works? lets see how it works take an example of string "123" formula : val = (val * 10 ) + *convetIt - 48                 val = (0 * 10 ) + '1' - 48      =>      0*10  + 49 - 48 =  0  + 1 = 1                 val = (1 * 10)  + '2' - 48      =>     1*10  + 50 - 48 = 10...

Adding a table to the openstack databases using migration scripts

So I had a task of adding a new table to the neutron database and at the same time not to use the neutron's migration script, as we wanted to keep the neutron code pure. I tried to google for the alembic data migration but could not find anything useful. So I started to reverse engineer the migration scripts of the other Openstack projects. I used the db code base from the following link. https://github.com/stackforge/group-based-policy/tree/stable/juno/gbpservice/neutron/db So I ll just mention the modifications we need to do to make it work. Please note that I am doing these changes in the Devstack environment. 1. Create folders for new project. Lets say we are building a new project called test_db. Add a folder named test_db as shown in the below location /opt/stack/test_db/test_db/ (Yes 2 folders just to keep in sync with Devstack Arch) 2. Copy migration folder from the below link to  /opt/stack/test_db/test_db/ https://github.com/stackforge/group-based-pol...