5 ms·
YES! for the first 2 questions. My go to question is reverse an array (without using any library functions). Instead of asking a quirky question, it is better
by amitutk 9y ago
YES! for the first 2 questions. My go to question is reverse an array (without using any library functions).
Instead of asking a quirky question, it is better to have them solve a simple problem and judge on logic and structure.
- walrus1066 9y agoWhy can't you use libraries? You're rewarding people for reinventing the wheel.
- bragh 9y agoBecause in many languages, this is trivial to the level of calling .reverse() on the array.
- dragonwriter 9y agoSure, but in some of the popular languages where that is the case, .reverse() is no more (and no less) a “library feature” than creating or indexing an Array.
- walrus1066 9y agoIn which case, the question isn't really relevant to the job. Same goes for stuff like sorting algos. Why not pose problems more representative of the job and business domain?
- glibgil 9y agoBecause reversing an array is super easy and using a library is one function call
- dragonwriter 9y ago> Because reversing an array is super easy and using a library is one function call It's not super easy without using library functions when all the operations that work on arrays (including the constructor that makes them) are as much “library functions” as the one that reverses an array. (Conversely, if the mechanism that reverses an array is part of the language core and not a library, the restriction fails to have the expected effect from the other side.) The restrictions seem to assume that every language has the same division of distinct core “language” features as distinct from what is provided by libraries.
- glibgil 9y agoWriting the following does not use any libraries a = [0, 1, 2] print a[1] That's just how arrays work. If your elements are 32 bit integers then you are establishing a pointer to the first element. Accessing an element is multiplying the index by the element size and jumping from the first element pointer to a memory address offset. > The restrictions seem to assume that every language has the same division of distinct core “language” Fine, if your language has a library for arrays, then reimplement it on the whiteboard. Everyone is able to do that if they know what arrays are. They are just contiguous memory
- clay_to_n 9y agoAt some point, you need to decide what you're going to ask something to build in an interview. It's probably been implemented before. Yes, reversing an array is arguably lower level than an application engineer needs to go - but not by much (in some languages you will be doing this yourself). And if they can do that, they can do something comparably difficult.
- walrus1066 9y agoWhy not choose a problem more representative of the job and business domain? One that demonstrates their ability to write clean, testable, readable OO code, with appropriate abstractions, and not overengineered. I find most candidates, struggle to do this, including algo wizards. Most software engineers aren't good at this either.
- dragonwriter 9y ago> My go to question is reverse an array (without using any library functions). If you mean “functions provided by a library outside of the core” there are languages where this restriction doesn't prevent the kind of trivial solution you are trying to prevent. If you mean “any predefined functions/methods” there are languages where this is impossible (e.g., since even literal array syntax is just syntactic sugar for the Array constructor method.) Note that there are several languages that fall into both categories (e.g., Ruby.) There are probably a very narrow slice of languages where this restriction, however you define it, really does what you intend.