JS interviews... and how to (part 3)

kharioki

Tony Kharioki

Posted on June 1, 2020

JS interviews... and how to (part 3)

Recap

Previously I did two posts on common questions you may encounter during JS interviews. You can find the posts her: part 1 and part 2

Disclaimer

As usual, the solutions discussed below, assume that you already have an understanding of Javascript and specifically data types and OOP.
The solutions may also not be the best and if you have a better more effective solution, please make a Pull Request to this repo, and I will add your solution.

Sample Challenges

Challenge 12 - Add all arguments

Given n number of arguments, Return a sum of all parameters entered regardless of the amount of numbers - NO ARRAYS

function addAll() {
  //? solution 1 - es5 arguements object and for loop
  var args = Array.prototype.slice.call(arguments);
  var total = 0;

  for (let i = 0; i < args.length; i++) {
    total += args[i];
  }
  return total;
}
Enter fullscreen mode Exit fullscreen mode

using ...rest operator and forEach

function addAll(...numbers) {
  //? solution 2a - es6 - ...rest operator and forEach
  let total = 0;
  numbers.forEach(num => (total += num));
  return total;
}
Enter fullscreen mode Exit fullscreen mode
function addAll(...numbers) {
  //? solution 2b - es6 - ...rest operator and reduce
  return numbers.reduce((a, b) => a + b);
}
Enter fullscreen mode Exit fullscreen mode

Challenge 13 - Sum all primes

Given a number n, add all of the prime numbers. A prime number is a whole number greater than 1 whose only factors are 1 and itself
for this solution we will need a helper that helps check if a number is prime.

// helper function
function checkForPrime(n) {
  for (let j = 2; j < n; j++) {
    if (n % j === 0) {
      return false;
    }
  }

  return true;
}
Enter fullscreen mode Exit fullscreen mode
function sumAllPrimes(num) {
  let sum = 0;
  for (let i = 2; i <= num; i++) {
    if (checkForPrime(i)) {
      sum += i;
    }
  }

  return sum;
}
Enter fullscreen mode Exit fullscreen mode

Challenge 14 - Seek and destroy

Remove from the array whatever is in following arguments. Return the leftover numbers in an array

function seekAndDestroy(arr) {
  //? solution 1 - using arguments, indexOf, filter
  const args = Array.from(arguments);

  function filterArr(arr) {
    // Return true if NOT in array
    return args.indexOf(arr) === -1;
  }

  return arr.filter(filterArr);
}
Enter fullscreen mode Exit fullscreen mode

using ...rest operator, includes

function seekAndDestroy(arr, ...rest) {
  //? solution 2 - ...rest, filter, includes
  return arr.filter(val => !rest.includes(val));
}
Enter fullscreen mode Exit fullscreen mode

Challenge 15 - Sort by Height

Some people are standing in a row in a park. There are trees between them which cannot be moved. Given an array of the heights, your task is to rearrange the people by their heights in a non-descending order without moving the trees.
Assume the tree heights are represented by negative numbers
(this is actually a common whiteboard question)

function sortByHeight(a) {
  const arr1 = [];
  const arr2 = [];

  a.forEach((val, i) => val === -1 ? arr1.push(i) : arr2.push(val));
  // sort arr2 ascending
  const sortArr = arr2.sort((a, b) => a - b);
  // use array splice to insert tree heights
  arr1.forEach((x, i) => sortArr.splice(arr1[i], 0, -1));

  return sortArr;
}
Enter fullscreen mode Exit fullscreen mode

Challenge 16 - Missing letters

Given a string of letters, find the missing letter and return it. If all letters are present, return undefined

function missingLetters(str) {
  let compare = str.charCodeAt(0);
  let missing;

  str.split('').map((char, i) => {
    if (str.charCodeAt(i) == compare) {
      ++compare;
    } else {
      missing = String.fromCharCode(compare);
    }
  });

  return missing;
}
Enter fullscreen mode Exit fullscreen mode

Challenge 17 - Even & Odd Sums

Given an array of numbers, return an array of the sums of even and odd numbers.

function evenOddSums(arr) {
  let evenSum = 0;
  let oddSum = 0;

  arr.forEach(num => (num % 2 === 0 ? (evenSum += num) : (oddSum += num)));

  return [evenSum, oddSum];
}
Enter fullscreen mode Exit fullscreen mode

That's all for today. I will keep updating this series. Perhaps in the future, I will also do a series on python and dart too.
Till next time, have a great time and take care.

Remember if you come up with better solutions, please make a pull request on this repo.

💖 💪 🙅 🚩
kharioki
Tony Kharioki

Posted on June 1, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related