Skip to main content

Command Palette

Search for a command to run...

Polyfill

Updated
5 min read
G

Experienced DevOps Engineer with expertise in CI/CD automation, cloud infrastructure, Kubernetes, and GitOps. Provisioned a Jenkins server on AWS EC2 for automated deployments, integrating Terraform to provision VPCs and EKS clusters. Configured a Jump Server for secure Kubernetes access and implemented ArgoCD for GitOps-driven deployments. Integrated SonarQube for static code analysis and enforced quality gates in Jenkins pipelines. Built AWS ECR repositories and automated Docker image management. Ensured security by managing secrets in Jenkins Credentials Manager and implementing IAM policies for AWS resources. Configured Kubernetes Ingress via ArgoCD and deployed MongoDB with persistence strategies. Designed multi-branch Jenkins pipelines for different environments. Installed Prometheus and Grafana for monitoring with automated alerts. Optimized costs using AWS CloudWatch and Lambda for unused resource cleanup. Ensured end-to-end automation, security, and observability.

100 js coding question

100 js question asked

o/p js question:

  1. https://github.com/lydiahallie/javascript-questions

  2. https://www.toptal.com/javascript/interview-questions

  3. https://plainenglish.io/blog/50-javascript-output-questions

  4. https://builtin.com/software-engineering-perspectives/javascript-interview-questions

  5. https://umarfarooquekhan.medium.com/20-javascript-tricky-program-output-questions-and-answers-fc20a5c39eeb

  6. https://www.explainthis.io/en/swe/js-event-loop-questions

  7. https://devtools.tech/questions/s/what-is-the-output-of-the-following-code-promise-scheduling-or-event-loop-or-javascript-quiz---qid---LKBco8e783sP5ZGrjgxw

https://www.youtube.com/playlist?list=PLQOMi2yb4hF2kQ5Axv_tdznWLInV5qj8M

forEach

let arr = [1,2,3,4]
arr.forEach((ele)=> console.log(ele)) //1,2,3,4

Array.prototype.myForEach= function(cb){
    //console.log(this)  // [1,2,3,4]
    for(i=0;i<this.length;i++){
        cb(this[i])
    }
}

arr.myForEach((ele)=> console.log(ele)) //1,2,3,4

Map

let arr = [1,2,3,4]
const modifyArr = arr.map((ele,arr,i)=> ele*2)
console.log(modifyArr) // [2,4,6,8]

// map polyfill
Array.prototype.myMap= function(cb){
    let arr =[]
    for(i=0;i<this.length;i++){
        arr.push(cb(this[i],this,i))
    }
    return arr
}

const modifyMyArr = arr.myMap((ele,arr,i)=> ele*2)
console.log(modifyMyArr)  // [2,4,6,8]

Filter

let arr = [1,2,3,4]
const modifyArr = arr.filter((ele,arr,i)=> ele%2===0)
console.log(modifyArr)  // [ 2, 4 ]


// filter polyfill
Array.prototype.myFilter= function(cb){
    let arr =[]
    for(i=0;i<this.length;i++){
        if(cb(this[i],this,i)) arr.push(this[i])
    }
    return arr
}
const modifyMyArr = arr.myFilter((ele,arr,i)=> ele%2===0)
console.log(modifyMyArr)  // [ 2, 4 ]

Reduce

let arr = [1,2,3,4]
const sum = arr.reduce((acc,curr,i,arr)=> {
    return acc+curr
},0)
console.log(sum)

// Reduce polyfill
Array.prototype.myReduce= function(cb, init){
    let acc=init
    for(i=0;i<this.length;i++){
        acc = acc ? cb(acc,this[i],this,i) : this[i]
    }
    return acc
}
const sum1 = arr.myReduce((acc,curr,arr,i)=>{ 
    return acc+curr
},0)
console.log(sum1)
const person1 ={
 name: 'gokul'
}

const person2={
 name:'karthik'
}

function details(age,place){
  return `my name is ${this.name} and age is ${age}, lives in ${place}`
}

Call


details.call(person1,26,'Mumbai') //my name is gokul and age is 26,lives in Mumbai
details.call(person2,17,'Bombay') //my name is karthik and age is 17,lives in Bombay

// call polyfill
Function.prototype.myCall = function(obj={}, ...args){
    //console.log(this)  // [Function: details]
    if(typeof this !== "function"){
        throw new Error('cant be called')
     }
    //console.log(obj)  //{name: 'gokul'}
    //console.log(args)  //[26,'Mumbai']
    obj.fn = this
    //console.log(obj)  //{name: 'gokul',fn:[Function: details]}
    obj.fn(...args)
}

details.myCall(person1,26,'Mumbai')

Apply

details.apply(person1,[26,'Mumbai']) //my name is gokul and age is 26,lives in Mumbai
details.apply(person2,[17,'Bombay']) //my name is karthik and age is 17,lives in Bombay

// apply polyfill
Function.prototype.myApply = function(obj={}, ...args){
    //console.log(this)  // [Function: details]
    if(typeof this !== "function"){
        throw new Error('cant be called')
     }
    if(!Array.isArray(...args)){
         throw new Error('TypeError: cant be called')
    }
    //console.log(obj)  //{name: 'gokul'}
    //console.log(args)  //[26,'Mumbai']
    obj.fn = this
    //console.log(obj)  //{name: 'gokul',fn:[Function: details]}
    obj.fn(...args)
}

details.myApply(person1,[26,'Mumbai'])

Bind

const newFn = details.bind(person1) 
newFn(26,'Mumbai')  //my name is gokul and age is 26,lives in Mumbai
const newFn2 = details.bind(person2) 
newFn2(17,'Bombay')  //my name is karthik and age is 17,lives in Bombay

// bind polyfill
Function.prototype.myBind = function(obj={}, ...args1){
    //console.log(this)  // [Function: details]
    if(typeof this !== "function"){
        throw new Error('cant be called')
     }
    //console.log(obj)  //{name: 'gokul'}
    //console.log(args1)  //[26]
    obj.fn = this
    //console.log(obj)  //{name: 'gokul',fn:[Function: details]}
    return function(...args2){
        //console.log(args2)  //['Mumbai']
        obj.fn(...args1,...args2)
    }
}
const newFn3 = details.myBind(person1,26) 
newFn3('Mumbai')  //my name is gokul and age is 26,lives in Mumbai

Array flat method

let arr =[1,2,3,[4,5]]
consloe.log(arr.flat(1)) // [1,2,3,4,5]

let arr2 =[1,2,3,[[4,5]]]
consloe.log(arr2.flat(2)) // [1,2,3,4,5]
Array.prototype.myFlat = function(depth){
   // console.log(this) //[1,2,3,[4,5]]
    let res =[]
    if(!Array.isArray(this)){
        throw new Error(`${this}.flat is not a fn`)
    }
    this.forEach((ele)=>{
         if(Array.isArray(ele) && depth>0){
            res.push(...ele.myFlat(depth-1))
         }else{
            res.push(ele)
         }
    })
    return res
}
let arr2 =[1,2,3,[[4,5]]]
consloe.log(arr2.myFlat(2)) // [1,2,3,4,5]

Debounce -->setTimeout()-->cb(),clearTimeout()

const myDebounce =(cb,delay)=>{
    let timer
    return function(...args){
        if(timer) clearTimeout(timer)
        timer=setTimeout(()=> cb(...args),delay)
    }

}

Throttle -->setTimeout()-->(false)

function myThrottle(cb, delay = 250) {
  let shouldWait = false

  return (...args) => {
    if (!shouldWait) {
        cb(...args)
        shouldWait = true
        setTimeout(() => shouldWait = false, delay)
    }
  }
}

Promise.all() --> all promise are resolved in same order as provided , if any one promise fail the all promise are rejected

const promise1 = new Promise((resolve,reject)=>{
   setTimeout(()=>{
        resolve("promise1")
    },1000)
})

const promise2 = new Promise((resolve,reject)=>{
   setTimeout(()=>{
        resolve("promise2")
    },100)
})


// maintain the order , (promise2 is resolved first), if it is resolved it return array of resolved promised in order
Promise.all([promise1,promise2]).then(console.log).catch(console.log)
// ['promise1','promise2']
const myPromiseAll = (arrayPromise) => {
    if (!Array.isArray(arrayPromise) || arrayPromise.length === 0) {
        throw new Error('Input must be a non-empty array.');
    }

    let res = [];

    return new Promise((resolve, reject) => {
        arrayPromise.forEach((promise, index) => {
            promise
                .then((data) => {
                    res[index] = data; // for maintaining the order of resolved promises
                    if (index === arrayPromise.length - 1) {
                        // all promises are fulfilled, then only it should resolve
                        resolve(res);
                    }
                })
                .catch((error) => reject(error));
        });
    });
};

myPromiseAll([promise1, promise2])
    .then(console.log)
    .catch(console.log);
// Output: ['promise1', 'promise2']

Promise.any() --> any promise which is first fulfilled or all promise rejected (array of rejected promise)

const promise1 = new Promise((resolve,reject)=>{
   setTimeout(()=>{
        resolve("promise1")
    },1000)
})

const promise2 = new Promise((resolve,reject)=>{
    resolve("promise2")
})

const promise3 = 3

Promise.any([promise1,promise2,promise3]).then((res)=>conslole.log(res)).catch((error)=>console.log(error))
// promise2
const myPromiseAny = (arrayPromise) => {
    if (!Array.isArray(arrayPromise)) {
        throw new Error('Input must be an array.');
    }

    let errors = [];
    let counter = 0;

    return new Promise((resolve, reject) => {
        arrayPromise.forEach((promise, index) => {
            promise
                .then((data) => resolve(data))
                .catch((error) => {
                    counter++;
                    errors[index] = error;
                    if (counter === arrayPromise.length) reject(errors);
                });
        });
    });
};

myPromiseAny([promise1, promise2, promise3])
    .then((res) => console.log(res))
    .catch((error) => console.log(error));

Promise.race()

const myPromiseRace = (arrayPromise) => {
    if (!Array.isArray(arrayPromise)) {
        throw new Error('Input must be an array.');
    }

    return new Promise((resolve, reject) => {
        arrayPromise.forEach((promise) => {
            Promise.resolve(promise)
                .then((data) => resolve(data))
                .catch((error) => reject(error));
        });
    });
};

myPromiseRace([promise1, promise2, promise3])
    .then((res) => console.log(res))
    .catch((error) => console.log(error));

Promise.allSettled()

const myPromiseAllSettled = (arrayPromise) => {
    if (!Array.isArray(arrayPromise)) {
        throw new Error('Input must be an array.');
    }

    return new Promise((resolve) => {
        const settledPromises = [];
        let settledCount = 0;

        arrayPromise.forEach((promise, index) => {
            Promise.resolve(promise)
                .then((value) => {
                    settledPromises[index] = { status: 'fulfilled', value };
                    settledCount++;
                    if (settledCount === arrayPromise.length) {
                        resolve(settledPromises);
                    }
                })
                .catch((reason) => {
                    settledPromises[index] = { status: 'rejected', reason };
                    settledCount++;
                    if (settledCount === arrayPromise.length) {
                        resolve(settledPromises);
                    }
                });
        });
    });
};

// Usage
const promise1 = new Promise((resolve) => setTimeout(resolve, 1000, 'foo'));
const promise2 = new Promise((_, reject) => setTimeout(reject, 500, 'bar'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 1500, 'baz'));

myPromiseAllSettled([promise1, promise2, promise3])
    .then((results) => console.log(results))
    .catch((error) => console.error(error));