DEV Community

Satish
Satish

Posted on

Top Essential Coding Interview Problems in JavaScript

1. Reverse a String

function reverseString(str) {
  let result = "";
  for (let i = str.length - 1; i >= 0; i--) {
    result += str[i];
  }
  return result;
}

console.log(reverseString("hello")); // "olleh"
Enter fullscreen mode Exit fullscreen mode

2. Find Duplicates

function findDuplicates(arr) {
  let flatArr = arr.flat(Infinity);
  let seen = new Set();
  let duplicates = [];

  for (let item of flatArr) {
    if (seen.has(item)) {
      duplicates.push(item);
    } else {
      seen.add(item);
    }
  }
  return [...new Set(duplicates)];
}

console.log(findDuplicates([1, 2, [3, 4, 2], 5, 1])); // [2, 1]
Enter fullscreen mode Exit fullscreen mode

3. First Non-Repeating Character

function firstNonRepeatingChar(str) {
  let freq = {};

  for (let char of str) {
    freq[char] = (freq[char] || 0) + 1;
  }

  for (let char of str) {
    if (freq[char] === 1) return char;
  }
  return null;
}

console.log(firstNonRepeatingChar("swiss")); // "w"
Enter fullscreen mode Exit fullscreen mode

4. Flatten Array (recursive approach)

function flattenArray(arr) {
  let result = [];

  function helper(subArr) {
    for (let item of subArr) {
      if (Array.isArray(item)) {
        helper(item);
      } else {
        result.push(item);
      }
    }
  }

  helper(arr);
  return result;
}

console.log(flattenArray([1, [2, [3, 4]], 5])); // [1, 2, 3, 4, 5]
Enter fullscreen mode Exit fullscreen mode

5. Palindrome Check (two-pointer technique)

function isPalindrome(str) {
  let left = 0, right = str.length - 1;

  while (left < right) {
    if (str[left] !== str[right]) return false;
    left++;
    right--;
  }
  return true;
}

console.log(isPalindrome("madam")); // true
console.log(isPalindrome("hello")); // false
Enter fullscreen mode Exit fullscreen mode

6. Factorial (recursive and iterative)

function factorial(n) {
  if (n === 0) return 1;
  return n * factorial(n - 1);
}

console.log(factorial(5)); // 120
Enter fullscreen mode Exit fullscreen mode

7. Fibonacci Sequence

function fibonacci(n) {
  let a = 0, b = 1, result = [];
  for (let i = 0; i < n; i++) {
    result.push(a);
    [a, b] = [b, a + b];
  }
  return result;
}

console.log(fibonacci(7)); // [0,1,1,2,3,5,8]
Enter fullscreen mode Exit fullscreen mode

8. Two Sum Problem

function twoSum(nums, target) {
  let map = new Map();
  for (let i = 0; i < nums.length; i++) {
    let complement = target - nums[i];
    if (map.has(complement)) {
      return [map.get(complement), i];
    }
    map.set(nums[i], i);
  }
  return [];
}

console.log(twoSum([2, 7, 11, 15], 9)); // [0,1]
Enter fullscreen mode Exit fullscreen mode

9. Deep Clone an Object

function deepClone(obj) {
  return JSON.parse(JSON.stringify(obj));
}

let original = {a:1, b:{c:2}};
let copy = deepClone(original);
console.log(copy); // {a:1, b:{c:2}}
Enter fullscreen mode Exit fullscreen mode

10. Remove Duplicates from Array
Approach 1: Using a manual loop


function removeDuplicates(arr) {
  let result = [];

  for (let i = 0; i < arr.length; i++) {
    let isDuplicate = false;

    // check if arr[i] already exists in result
    for (let j = 0; j < result.length; j++) {
      if (arr[i] === result[j]) {
        isDuplicate = true;
        break;
      }
    }

    // if not duplicate, push to result
    if (!isDuplicate) {
      result.push(arr[i]);
    }
  }

  return result;
}

console.log(removeDuplicates([1, 2, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]
Enter fullscreen mode Exit fullscreen mode

Approach 2: Sorting first, then skipping duplicate


function removeDuplicatesSorted(arr) {
  // simple bubble sort (no in-built sort)
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }

  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (i === 0 || arr[i] !== arr[i - 1]) {
      result.push(arr[i]);
    }
  }
  return result;
}

console.log(removeDuplicatesSorted([4, 2, 2, 1, 3, 4])); // [1, 2, 3, 4]
Enter fullscreen mode Exit fullscreen mode

Top comments (0)