The trick here is to consider a number as a series of digits. This is not an inherent property of numbers, since the base-10 representation that we use is quite arbitrary. But once a number is represented as a series of digits, it is quite easy to convert each digit individually to a string, and concatenate all such strings.
EDIT: As pointed out, this only takes integers into consideration (which is probably acceptable for an interview question).
var intToDigits = function(n) {
var highestPow = 1;
while (highestPow < n) highestPow *= 10;
var div = highestPow / 10;
// div is now the largest multiple of 10 smaller than n
var digits = [];
do {
var digit = Math.floor(n / div);
n = n - (digit * div);
div /= 10;
digits.push(digit);
} while (n > 0);
return digits;
};
var toString = function(n) {
var digitArr = intToDigits(n);
return digitArr.map(function(n) {
return "0123456789"[n];
}).join('');
};
Usage:
>> toString(678)
"678"