# JavaScript interview questions [with solutions]

in #coding3 years ago (edited)

I have been a software engineer for almost 5 years now but (for one reason or another) only today for the first time I interviewed another developer for a position in my company.

Here is the simple exercise that I asked the (junior) candidate to solve:

``````Write a function that given 2 arrays of characters returns
whether the 2 arrays contain an acronym.

Eg.

[ 'b', 'i', 'n', 'a', 'r', 'y' ]
[ 'b', 'r', 'a', 'i', 'n', 'y' ]
=> TRUE

[ 'b', 'o', 'a', 't' ]
[ 't', 'a', 'b', 'o', 'o' ]
=> FALSE

``````

Here are a couple of simple solutions:

### Solution 1:

``````var isAcronym = () => {
if (!arr1.length || arr1.length != arr2.length) return false;
arr1.forEach((el) => {
const id = arr2.indexOf(el);
if (id == -1) return false;
arr2[id] = null;
});
return arr2.filter(el => !!el).length === 0;
}

var arr1 = ['b','a','g','r','e','i','e','l'];
var arr2 = ['g','a','b','r','i','e','l','e'];

console.log('Is Acronym: ', isAcronym(arr1, arr2));
``````

• Complexity: O(N)
• Optimization: length check, best case: O(1)
• Spatial complexity: in loco

### Solution 2:

``````var isAcronym = () => {
if (!arr1.length || arr1.length != arr2.length) return false;
const count = {};
arr1.forEach(el => {
if (count[el]) count[el] += 1;
else count[el] = 1;
});
arr2.forEach(el => {
count[el] -= 1;
});
return Object.values(count).filter(res => res !== 0).length === 0;
};

var arr1 = ['g','a','b','i','r','e','l','e'];
var arr2 = ['g','a','b','r','i','e','l','e'];

console.log('Is Acronym: ', isAcronym(arr1, arr2));
``````

• Complexity: O(N)
• Optimization: length check, best case: O(1)
• Spatial complexity: O(N)

Did I miss any bugs? =)

Sort:

This post is promoted by @tipU voting service under #newsteem rules funded by marcocasario :)
The upvotes are not profitable and 50% of the payment is donated to @steempeak and other steem projects.

This post has received a 34.4 % upvote from @boomerang.