- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
That frist one? All I'm thinking is about how the dreamer will chase the coder around the moons of Nibia... What? There was a nebula involved during that, and that's the cloud.....
Admin
I'm not taking the Star Trek job unless I get a free trip to TechEd on Risa.
Admin
It seems to me that anyone who can't even come up with a lame attempt at successive approximation to figure out a square root without running to a reference isn't fit for a programming job.
Admin
The second one has made me really sad. I get lost all the time, especially if I'm nervous. If someone judged my ability as a developer based on my inability to learn left from right or find my way around a place I've never been before I'd be horrified.
Admin
... then it's most likely the time of the Zombie Apocalypse, in which case I'd ask myself as to why in the seven frozen hells I'd need to calculate the square root of two.
Some smart guy once said: “I don't need to know everything, I just need to know where to find it, when I need it”
Admin
If I asked you to come up with a formula for something you honestly didn't know how to calculate, you might approximate, but you won't get it exact.
Admin
M: So, there is no one around. The people that aren't around have not invented the book yet or the internet, but trough some magic occurence there is a computer... I guess would get completely naked run around town, get drunk and destroy random objects. I would certainly not go solve some stupid programming problem
Admin
square root.
Asking someone to solve a problem using the most creative,original or complicated solution is clearly the best way to hire programmers who will create the worst thing possible to solve everyday problems.
Leaving the interview is clearly the best approach to that kind of question, your clearly don't want to work with people who answer "correctly"
Admin
An iterative approximation for a square root shouldn't be hard to come up with.
Admin
the real wtf is to consider Carmack's formula for solving sqrt.
Admin
I have been in one of those "Square Root of Stupid" before. I once interviewed with a bank, when the interviewer asked: He: So, imagine our data center in London goes down, what are you going to do? Me: We hopefully automatically fall over to NYC. He: What if NYC also goes down? Me: We hopefully automatically fall over to Tokyo. He: What if Tokyo also goes down? Me: I will go to the nearest supermarket, grab all the cans of food and drinks I can get and drive up North as fast as I can.
Admin
That last one was awful. Although you don't get to write square root formulas often, in real life not all answers are readily available. Being a programmer means that sometimes there's no site, no person, no book with the answer, and you have to patch something up by yourself. It is this ability which the interviewer obviously wanted to test. Walking away at this point is just stupid.
I know no formula for square root calculation, but I'd suggest some variation of binary search for instance. Take (a+b)/2, check it's square, if it's bigger than x then a:=(a+b)/2 else b:=(a+b)/2, repeat until you have the required precision. This probably sucks in terms of speed, but hey, at least it works.
Admin
I'd ask you as you obviously seem to know all the answers...
captcha : secundum (but not fristum...)
Admin
Just to remind you, there's no such thing as "exact" with floating point numbers. So they didn't ask him to give "exact" value. They asked to do his best at approximation.
Admin
Admin
It's funny how it's always Carmack's approximation, when in fact it was done by someone else at SGI. I wonder if that guy did it in 640k of RAM?
Admin
What if there were no numbers?
Admin
How do you know he wanted an exact value? You left without offering a non-exact solution.
Successive approximation WILL give you an exact value. You just repeat it until it converges. You know when it has converged because either square(x)==y or square(x)<y && square(Math.nextAfter(x))>y .
The problem is that the interviewer didn't portray it very well as a brainteaser and/or mathematical aptitude type question. If he'd started out by asking, "How would you calculate a floating-point square root without using the library function? (or the whole math library, depending on how easy you want to make the problem)", hopefully you wouldn't have given silly answers like, "ask someone".
Calculating a square root isn't something where you either know it or you don't. If you ask someone the arguments to an API function, they have to either know it, say they don't know, or walk out or whatever. For a square root, there are a large number of solutions of varying degrees of quality. Obviously it is not a hugely relevant question for upgrading a legacy system, but neither is asking how many golf balls would fill the Washington Monument or something. Giving up a feasible problem without attempting it is not going to help your job prospects.
Admin
...although I do agree with the guy's assessment of THE CLOUD. Pure marketing cr*p.
This morning I commuted to work on this new thing called THE GRID. It's a nationwide network of interconnected asphalt lanes - it really is the future of personal and commercial transportation. We have an IPO coming up if you're interested...?
Admin
If I was writing java code and there were no Math.sqrt function i would try to figure out what what jar file is missing, where and then contact IT to fix it.
Admin
After that interview, I had time to think about it and I came up with:
Start squaring numbers from 1 up until you exceed the target value, then back up one, and start incrementing the next smaller digit (1's, then tenths, then hundredths, etc) until you arrive at the required precision. Big deal; I can come up with a crappy algorithm for calculating something for which there are known formulas. I make no claims of being a mathematician. nor would I even want a job where I was responsible for coming up with such formulas.
A more sensible question might be to ask me: we've got A amount of data, B amount of storage, C transaction rate and D throughput. There is a problem xxx. How would you diagnose this? What are the likely causes and possible solutions?
That tells the interviewer how I think in terms of things pertinent to the job.
Admin
That's easy!
Admin
There is no way the guy wanted an exact answer. He was trying to see the candidate's thought process when the answer was not available. The interviewer could've done a better job at asking the question and the candidate should've done a better job at realizing what was being asked and made an attempt.
Admin
Hey, where can I get a computer like yours, that can represent sqrt(2) exactly? I could really use a computer with infinite-precision reals.
Admin
Admin
Admin
This should be considered a good example of precisely why you don't do things like this yourself. The square root of x for small x is much larger than x. The quick return is not needed for non-negative numbers, and if it were, the boundary would be EPSILON * EPSILON. (And no, the square root of -1.0 is NOT even close to 0.0.)
Yes, my degrees are in mathematics, and I did floating point validation in the '90s. Seriously, don't try this at home, kids.
(The way that we actually compute floating point square roots is fun. We look up the first several digits for the inverse square root, and then refine it based on polynomials designed to cancel the error term, usually quadratically. Once there is enough precision, you multiply back the original value to get the square root. Yes, you want a real proof that the algorithm works.)
Admin
Snoofle's tale of the interview is probably the most alarming - you apply for a job where apparently the boss expects you to work with zero resources?
I think Snoofle was right - the employer was totally wasting his time, and did a great job of letting Snoofle know that that was totally the wrong place to be, let alone work. The place next door that lets developers use Internet is a vast improvement!
Admin
Admin
The way I read it, he "pimped up" his CV and was trying to cheat his way through the interview. When he learned there'd be a technical test, he was "not prepared for" cheating it, so he made up a lame excuse to leave.
Admin
If I was conducting interviews for a programmer position, I'd immediately fail any candidate who didn't know Newton's method and was unable to come up with it (or a similar successive approximation method) on the spot. It is blindingly obvious, and trivial to implement.
I'd probably also fail any candidate who didn't, at some point, suggest Math.exp(Math.log(x) / 2). And even if Math.log() isn't available, you can easily compute a rough lower bound of log(x) through successive division, as an initial guess for successive approximation.
(to those who complained that Newton's method does not give an exact value: where does it say that the interviewer expected an exact value? in any case, with a few exceptions, the floating-point representation of a number will always be an approximation of the actual value.)
As for Carmack's method: assuming it can be implemented in Java (it can't—not without a lot of contortions), it can easily be derived from first principles if you know basic algebra and the layout of IEEE 754 floating-point numbers. If you don't know the layout, you can easily figure it out by looking at the binary representation of a handful of test values.
So TRWTF is that the candidate refused to even try to think of an answer, then blamed the interviewer for asking him a question he should have been able to answer but wasn't.
Admin
(It's a flipping adding machine!!!)
Admin
Newtons method of iterative approximation would be doable off the top of my head.
Admin
double Sqrt(double val) { double ret; while (true) { ret = rand() * double.Max; if (double.Equals(ret,val)) return ret; } }
He never said he wanted it quick
Admin
When you give an amateur programmer a problem, their first impulse is to roll their own solution.
A pro goes to the language libraries first, the in-house code base second, the world of pre-written solutions third, then asks "has anyone else poured some thought into this problem" before inventing his own wheel.
Snoofle, I think you bailed 5 seconds early. Based on your answers I would have been offering you a job in the next breath.
Admin
If you answer ARM and Intel have built in assembly squareroot instructions the next question will be what if you don't have a processor :)
Admin
Fail. You can't get it exact because square roots are (in all cases except when all the prime factors are to an even power) irrational.
Granted that you may not be able to come up with: guess, divide your number by that guess, take mean of result with guess, and repeat, IMO it's something that you might be expected to be able to work out.
Depends on whether your expertise is borne of a lot of experience or a combination of that and the ability to figger things out from scratch. Fair enough, though, it certainly appears that you and your prospective employer would not have been a good match.
Admin
Admin
Admin
Hell, half the stuff I see CS grads crank out barely works. But I suppose it's mathematically sound, so there's that.
Admin
Admin
Admin
Admin
[quote user="Anonymous Coward"]1. How do you know he wanted an exact value? You left without offering a non-exact solution.
That's impossible. Most square root functions return an irrational number, i.e.: their digits repeat endlessly without a recurring pattern. There is no representation for the number in a digit-based system.
Admin
I remember our math teacher showing us what Wikipedia calls Digit-by-digit calculation, just for the fun of it. But I totally forgot how it went, so I probably would have failed that interview too.
Admin
If you want a clever programmer that's exactly what you're going to get. Why use the built-in square root function when you can create your own version that somehow only works 50% of the time? Any way, I would just pre-compute trillions of square roots.
Admin
The square root issue is easy. Just convert the whole system to HTML5, put it on network 3.0 (the cloud) where every number automatically shows it square root next to it. 9(3)
P.S. Why can't I copy/paste the CAPTCHA?
Admin
Anyone who comes up with a lame attempt at approximation to figure out a square root without checking a reference, and puts that code in production with the obvious zombie apocolypse going on, isn't fit for a programming job.
Admin
Me: How does my ability to pontificate about unrealistic problems in an artificially constrained setting under unusual pressure relate to the projects for which you are hiring?
Interviewer: I want to see how you think.
Me: I think I want to work somewhere that is evaluating me for my technical skills, not my game show skills.
Admin
Unless Apple is now shuffling their Siri searches off to Deep Blue, maybe you should not refer to a wrapper around a voice to text system + search engine as "one of the most advanced data analytics programs"