## Amazon Interview Question for SDE-2s

Country: United States

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

/*
i1 * i2
int result = 0;
add i1 to result i2 times.
*/

``````public int multiple (int i1, int i2) {
int i = 0;
int result = 0;
while (i2 > i) {
}
return result;
}

public int add(int i1, int i2) {
// iterate until there is no carry
while (i2 != 0) {
// carry contains common set bits of i1 and i2
int carry = i1 & i2;
// sum of bits of i1 and i2 where at least either of i1 and i2 bits is 0
i1 = i1 ^ i2;
// carry is shifted by one so that adding it to i1 gives the required sum
i2 = carry << 1;
}
return i1;
}``````

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

Below method should work:

public static int mulipleCustomLooping(int a, int b) {

int getresultat = 0;
for (int i = 0; i < a; i++) {
getresultat += b;
}

return getresultat;
}

Comment hidden because of low score. Click to expand.
0

I do not think that is a bitwise operation.

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

public static int mulipleCustomLooping(int a, int b) {
int getresultat = 0;
for (int i = 0; i < a; i++) {
getresultat += b;
}
return getresultat;
}

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

``````public static int multiply(int i1, int i2) {
boolean isPositive = false;

if(i1==0 || i2==0) return 0;

if(i1<0 & i2<0) isPositive=true;
else if(i1>0 & i2>0) isPositive=true;

if(i1<0) i1 = ~i1+1;
if(i2<0) i2 = ~i2+1;

int acc = i1;

for(int i=2; i <= i2; i++) acc = add(acc, i1);
return isPositive ? acc : ~acc+1;
}

public static int add(int i1, int i2){

int subsum=0, result=0, pos=0;
boolean carryOver=false;

while(i1>=0 || i2>=0){
final int digitA = i1 & mask, digitB = i2 & mask;

/*
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
*/

subsum = digitA ^ digitB;

if(carryOver) subsum ^= 1;

carryOver = (carryOver && (digitA == 1 || digitB == 1)) |
(!carryOver && digitA == digitB && digitB == 1);

i1 >>= 1; i2 >>= 1;
subsum <<= pos;
pos++;
result |= subsum;

if(i1 == i2 && i2 == 0 && !carryOver) break;;
}

return result;
}``````

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

Here is my approach -:

``````int ans = 0;
for(i=0;i<a;i++)
{
ans = ans xor b + (ans && b) << 1;
}``````

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

public static int multiply(int a,int b){
// flag to store if result is positive or negative
boolean isNegative = false;

// if both numbers are negative, make both numbers
// positive as result will be positive anyway
if (a < 0 && b < 0) {
a = -a;
b = -b;
}

// if only a is negative, make it positive
// and mark result as negative
if (a < 0) {
a = -a;
isNegative = true;
}

// if only b is negative, make it positive
// and mark result as negative
if (b < 0) {
b = -b;
isNegative = true;
}
int res =0;
// While second number doesn't become 1
while (b!=0){

// If second number becomes odd,
// add the first number to result
if((b&1)!=0){
res +=a;
}
// Double the first number
// and halve the second number
a = a <<1;
b = b >>1;
}
return (isNegative) ? -res : res;
}

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

``````public static int multiply(int a,int b){
// flag to store if result is positive or negative
boolean isNegative = false;

// if both numbers are negative, make both numbers
// positive as result will be positive anyway
if (a < 0 && b < 0) {
a = -a;
b = -b;
}

// if only a is negative, make it positive
// and mark result as negative
if (a < 0) {
a = -a;
isNegative = true;
}

// if only b is negative, make it positive
// and mark result as negative
if (b < 0) {
b = -b;
isNegative = true;
}
int res =0;
// While second number doesn't become 1
while (b!=0){

// If second number becomes odd,
// add the first number to result
if((b&1)!=0){
res +=a;
}
// Double the first number
// and halve the second number
a = a <<1;
b = b >>1;
}
return (isNegative) ? -res : res;
}``````

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.

### 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.