Instead of asking a quirky question, it is better to have them solve a simple problem and judge on logic and structure.
Instead of asking a quirky question, it is better to have them solve a simple problem and judge on logic and structure.
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.
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.
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.
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.
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