4 ms·
You hit the nail on the head. We explicitly did not care about how "well" the solution was written (some solutions were very surgical, others involved a lot of
by ankrgyl 5y ago
You hit the nail on the head. We explicitly did not care about how "well" the solution was written (some solutions were very surgical, others involved a lot of copy/pasta, some folks wrote very detailed comments, etc.), although we did point out and ask you to fix solutions that were incorrect. For example, some candidates implemented "mult" as "add" in a loop, with the row lock acquired and released in each iteration. This solution is vulnerable to a data race if another user concurrently updates the value.
- jwmoz 5y agoCan you explain why some would go down this loop route? I don't know C but the obvious solution to me is what you posted.
- sverhagen 5y agoIt seems a simple way of building the "mult" solution as a composition of the existing primitive(s), here "add". But agreed, that I would not find the tradeof acceptable either.
- Sohcahtoa82 5y agoForget the locking and data race problem...I think about the massive performance problem. It turns multiplication into O(n) instead of O(log n). `mult 2000` would take 2000 times longer than `mult 2`. Imagine being able to DoS a server just by asking it to multiply two numbers.
- jseban 5y ago> This solution is vulnerable to a data race if another user concurrently updates the value. And this, of course, they are expected to understand in an unfamiliar code base with 3 hours total for the whole task. LOL
- FartyMcFarter 5y agoYou don't need to see the rest of the codebase to realise that's probably wrong. In any codebase, locks only apply to the scope they're in.
- jseban 5y agoThe key word here being "probably".
- FartyMcFarter 5y agoYes - so the safe thing to do is to put the lock outside the loop. Anyone experienced in multithreading will instinctively know this is the correct alternative for any codebase (and it performs better too).
- maccard 5y agoNo, not knowing that is a fundamental misunderstandings of either locks or scope. Depending on the role and job level that may be table stakes.