these are some samples of coding excercises I have resolved in past interviews
See also:
these are some samples of coding excercises I have resolved in past interviews
See also:
const combine = (...fns) => (...args) => fns.reduce((returnValues, fn) => [...returnValues, fn(...args)], []) |
// @params: N functions that should return an Object | |
// @returns a fn that will pass all arg to all fns and return an Obj with all outputs merged | |
const mergeOutputs = (...fns) => (...args) => fns.reduce((out, fn) => ({ | |
...out, | |
...fn(...args) | |
}), {}) | |
// takes one arg | |
const one = (name) => ({ hello: name, world: name }) |
const loop = { | |
timer: null, | |
count: 0, | |
start(fn, time=1000, limit = 100) { | |
fn(this.stop.bind(this), this.count); | |
this.count++; | |
if (this.count < limit) { | |
this.timer = setTimeout(() => this.start(fn, time, limit), time) | |
} else { | |
this.stop() |
const shallowCompare = (obj1, obj2) => | |
typeof obj1 === 'object' && typeof obj2 === 'object' | |
? Object.keys(obj1).length === Object.keys(obj2).length && | |
Object.keys(obj1).every( | |
key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key] | |
) | |
: obj1 === obj2 | |
const memoizeByProps = (...props) => Component => | |
React.memo(Component, (prevProps, nextProps) => |
// make a data uri encoded image from a <video> element using canvas | |
// (thank you stackoverflow people) | |
function videoElementToImage(videoElement, width, height) { | |
width = width || 360; | |
height = height || 240; | |
var canvas = document.createElement('canvas'); | |
canvas.width = width; | |
canvas.height = height; | |
var context = canvas.getContext('2d'); | |
context.drawImage(videoElement, 0, 0, canvas.width, canvas.height); |
function getHeader(url, header) { | |
return new Promise(function(resolve, reject) { | |
var http = new XMLHttpRequest(); | |
http.open('HEAD', url); | |
http.onreadystatechange = function() { | |
if (this.readyState !== this.DONE) return; | |
if (this.status != 200) { | |
reject(this.status); | |
} else { |
// pre-ES6 | |
function _ary(fn, arity) { | |
arity = arity || 1; | |
return function() { | |
// could use Array.from(arguments).slice(0, arity) ? | |
var args = Array.prototype.slice.call(arguments, 0, arity); | |
return fn.apply(null, args); | |
}; | |
} |
// alternative version using ES6 Array.from | |
const chunkify = (chunkSize, src) => Array.from( | |
{ length: Math.ceil(src.length/chunkSize) }, | |
(_, i) => src.slice(i * chunkSize, i * chunkSize + chunkSize) | |
) |
// first iteration | |
// v0.1 | |
(function(globalObject, document) { | |
function randomItem(collection) { | |
var index = Math.floor(Math.random() * collection.length); | |
return collection[index]; | |
} |