No, it's a fairly straight forward and simple algorithm.
The only ambiguity is due to the fact that it references relative spatial positions...but this question always provides a graphic that makes everything completely clear:
1
1 1
1 2 1
1 3 3 1
If someone couldn't understand the question with that description and graphic, they are either having a "brain fart"/interview jitters or have some deficiency in their reading comprehension, spatial reasoning, etc that they need to work on. The former is perfectly understandable and will happen no matter what you do in the interview; the latter tells you that the interviewee needs work in some area which is useful information.> You aren't testing programming, you're testing obscure maths knowledge
Not at all, to answer this question requires absolutely no previous knowledge. All you need to answer is in the question.
You can pretty much just translate the question directly into code:
function getRow(n) {
if (n == 1) return [1];
if (n == 2) return [1, 1];
var previous_row = getRow(n - 1);
var current_row = []
for (var i = 0; i < n; i++) {
current_row.push(
(previous_row[i - 1] || 0) +
(previous_row[i] || 0)
);
}
return current_row;
}
Took me maybe a couple minutes to translate the question into a fairly straightforward recursive function and type it out. From there it would be easy to improve in a lot of ways: caching, making it iterative, etc...all of which are relatively obvious and easy.I doubt there are any interviewers who wouldn't be basically satisfied with the most brain dead implementation. That demonstrates basic competence. The question has ample room to demonstrate a variety of skills beyond that. I'd expect the better interviewees (even with little math skill/background knowledge) to at least be able to make some observations about the properties of the triangle. I'd also expect the better ones to be able to talk about different approaches and their benefits/drawbacks.
For candidates with better math skills or background knowledge, they might know offhand/be able to write a better algorithm for computing the nth row. If the interviewer is expecting that as a baseline, sure I agree that's a bit unreasonable...but I don't think that ever happens.
I think this is a perfectly fine interview question with the caveats that it's very well known (and hence there will be some with a solution memorized) and one shouldn't rely on it too much.
It helps to have a good interviewer who will be able to explain the purpose of the question, and guide the interviewee if they get stuck. This is holds true for any interview question though.