Its not enough to outwit a Burmese Python but you need to do it while a clock is ticking.
We all know the best performance and indicator of skill always comes from coding with an egg timer or stop watch.
Oh and did I mention the Hacker Rank challenge was being asked before even speaking to a human being about the job?
Programming is only a competition sport when it is voluntary, no need to turn access to a job into some kind of Christians versus the lions spectator sport.
If someone were to approach me with that kind of offer I think the response would not be much longer than one line (and I'd try hard to keep it polite).
Yeah, I just deleted the email.
In the case of Atlassian and some others I have seen recently, the job of the recruiter now seems to be sending out links to hacker rank challenges after a successful key word search on a candidates C.V. I imagine recruiters love this because it means they now have to understand even less than the little they understood before.
I prefer that a lot more than scheduling a 1 hour phone interview during my workday, to do the same stupid questions over the phone, with someone who can describe neither the job nor the company.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in one_true_addition_test_case
AssertionError
The "correct" answer according to my pet parrot is (5).__add__(6). Of course, as per real-life, "correct" is usually just an aspect of if you find the interviewer's solution instead of whether your solution is actually correct. Better luck next time![1]: http://stackoverflow.com/questions/17342042/why-this-code-fo...
Really, the question should be 'add these two integers' and any solution that produces the result in a transparent and straightforward way should be honored with top marks.
Trick questions, especially those where only the interviewers pet solution is permitted are a sure sign that this employer is best avoided because they care about form and ego more than they care about getting the bloody job done.
Guess that won't work too well with larger numbers...
In [8]: math.log(math.exp(5000) * math.exp(6000))
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
<ipython-input-8-3d6e46c58c45> in <module>()
----> 1 math.log(math.exp(5000) * math.exp(6000))
OverflowError: math range error
In [9]: math.log(math.exp(500) * math.exp(600))
Out[9]: inf >>> (Decimal(5000).exp() * Decimal(6000).exp()).ln()
Decimal('11000.00000000000000000000000') In [13]: Decimal(5000000).exp() * Decimal(5000000).exp()
---------------------------------------------------------------------------
Overflow Traceback (most recent call last)
<ipython-input-13-8333724ae893> in <module>()
----> 1 Decimal(5000000).exp() * Decimal(5000000).exp()
Overflow: [<class 'decimal.Overflow'>]
The problem is that the multiplication blows the precision of the used format (either double for math.log(...) or the one the decimal module uses).I had also thought about the intention of the question trying to get you to express the sum as bit operations (thought I admit that sounds like going for a very low-level profile), or maybe just "thinking outside the box".
add = lambda a, b: add(a ^ b, (a & b) << 1) if b else a def add(a, b):
while a and b:
if a ^ b < 0: (a, b) = (a & ~b, b & ~a)
(a, b) = (a ^ b, (a & b) << 1)
return a or bhttps://www.mcsweeneys.net/articles/faq-the-snake-fight-port...