Amazon Interview Question: Write a program to find the s... | Glassdoor

Interview Question

Software Development Engineer Intern Interview Seattle, WA

Write a program to find the square root of a double.


Interview Answer

5 Answers


use binary search to narrow down the search space and keep multiplying the answer in each iteration by itself to check if it is equal to the double given. If it is lesser, move up the lower bound, else move down the upper bound.

Interview Candidate on Jan 6, 2011

One easy to remember method that also has much better performance than binary searching for the result is the Babylonian Method. It is similar to Newton's method for finding derivatives. See the algorithm here:

Also, combining this algorithm with the Rough Estimation also described on that page will compute the squareroot of most double numbers in less than 10 iterations.

Rob on Jan 7, 2011

Is it too obvious to ask if you can do double^.5 ?

Obvious on Jan 9, 2011

I would respond by showing that I am thinking about the problem as it is defined, not by making assumtions about what is implied. This can result in product that does not meet the requirement specifications, which can be very costly:

"What do you mean, a program or a function? A program would require input and output mechanisms to make it meaningful, but makes it pretty usesless as a job assessment question. A function makes more sense in this context. "

Rainman on Jan 12, 2011

There's a variation of the problem which says "find the square root of a double up to the third decimal digit". I'd just multiply the original number by 10^position (meaning, for 3 digit accuracy it'd be 10^3) and ran a simple loop to find the closest integer. As soon as i*i > 10^position * number, you can return (i-1)/10^position. It's hella slow and unimaginative, but it works and you won't sound like you knew this problem ahead of time (if you come up with a Babylonian solution).

Anonymous on Mar 14, 2011

Add Answers or Comments

To comment on this, Sign In or Sign Up.