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]; | |
| } |