Skip to main content

Command Palette

Search for a command to run...

String Polyfills and Common Interview Methods in JavaScript

Published
5 min read

Introduction

Strings are one of the most fundamental data types in JavaScript. Whether you're validating input, formatting data, or solving algorithmic problems, string manipulation is unavoidable.

In this article, we’ll go beyond just using string methods—we’ll understand how they work internally, why polyfills matter, and how this knowledge directly helps in interviews.


What Are String Methods?

String methods are built-in functions provided by JavaScript to perform operations on strings.

Common Examples:

let str = "hello world";

str.toUpperCase();   // "HELLO WORLD"
str.includes("world"); // true
str.slice(0, 5);     // "hello"
str.split(" ");      // ["hello", "world"]

Key Insight:

Strings in JavaScript are immutable. This means:

  • Methods don’t modify the original string

  • They return a new string

let str = "hello";
str.toUpperCase();

console.log(str); // still "hello"

Why Developers Write Polyfills

A polyfill is a custom implementation of a built-in method.

Why do we need them?

  1. Browser compatibility

    • Older browsers may not support modern methods
  2. Deep understanding

    • Interviews often test how things work internally
  3. Custom behavior

    • Sometimes you want slightly modified functionality

How Built-in Methods Work Conceptually

Before coding polyfills, understand the internal logic.

Example: includes()

Conceptually:

  • Iterate through the string

  • Check if substring matches at any position

  • Return true/false


Implementing Simple String Polyfills

1. Polyfill for includes()

String.prototype.myIncludes = function(searchStr) {
  let mainStr = this;

  for (let i = 0; i <= mainStr.length - searchStr.length; i++) {
    let match = true;

    for (let j = 0; j < searchStr.length; j++) {
      if (mainStr[i + j] !== searchStr[j]) {
        match = false;
        break;
      }
    }

    if (match) return true;
  }

  return false;
};

Key Logic:

  • Outer loop → starting index

  • Inner loop → match substring

  • Early break → optimization


2. Polyfill for toUpperCase()

String.prototype.myToUpperCase = function() {
  let result = "";

  for (let char of this) {
    let code = char.charCodeAt(0);

    // a-z → 97–122
    if (code >= 97 && code <= 122) {
      result += String.fromCharCode(code - 32);
    } else {
      result += char;
    }
  }

  return result;
};

Key Logic:

  • ASCII manipulation

  • Lowercase → uppercase = -32 shift


3. Polyfill for split()

String.prototype.mySplit = function(separator) {
  let result = [];
  let current = "";

  for (let char of this) {
    if (char === separator) {
      result.push(current);
      current = "";
    } else {
      current += char;
    }
  }

  result.push(current);
  return result;
};

Key Logic:

  • Accumulate characters

  • Push when separator found


Common Interview String Problems

These are extremely important for placements and coding rounds.


1. Reverse a String

function reverseString(str) {
  let result = "";

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

  return result;
}

2. Check Palindrome

function isPalindrome(str) {
  let reversed = str.split("").reverse().join("");
  return str === reversed;
}

3. Count Character Frequency

function charFrequency(str) {
  let map = {};

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

  return map;
}

4. Find First Non-Repeating Character

function firstUniqueChar(str) {
  let map = {};

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

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

  return null;
}

Interview Insight: What Companies Actually Test

When interviewers ask string questions, they are evaluating:

1. Logical Thinking

  • Can you break a problem into steps?

2. Understanding of Internals

  • Do you know how split, reverse, etc. work internally?

3. Edge Case Handling

  • Empty string

  • Single character

  • Case sensitivity

4. Time Complexity Awareness

  • Nested loops → O(n²)

  • Hash maps → O(n)


Importance of Understanding Built-in Behavior

Most candidates rely heavily on built-ins:

str.split("").reverse().join("");

But interviews often restrict that.

Why?

Because they want:

  • Your problem-solving ability

  • Not your ability to memorize methods


Final Takeaways

  • String methods are powerful, but understanding their internal logic is what makes you strong.

  • Polyfills help you think like a JavaScript engine.

  • Interview problems are mostly about patterns, not memorization.

  • Practice writing logic from scratch—this is where most candidates struggle.


What You Should Do Next

  • Re-implement 5–10 string methods yourself

  • Solve at least 20 string problems on LeetCode

  • Avoid built-ins initially, then optimize using them


Mastering strings is one of the fastest ways to improve your problem-solving skills—and it directly impacts your performance in technical interviews.