实现数值插入

[1, 2, 3, 4, 6] 插入3.5
二分法

  1. var append = (arr, val) => {
  2. let i = 0
  3. let j = arr.length - 1
  4. let ans = j
  5. while(i < j) {
  6. // 加上起始坐标,才是真正中间坐标
  7. let pivot = ~~((j - i) / 2) + i
  8. if (arr[pivot] >= val) {
  9. j = pivot - 1
  10. ans = pivot
  11. } else {
  12. i = pivot + 1
  13. }
  14. }
  15. return ans
  16. }
  17. var a = append([1,2,3,4,5], 3.5)
  18. console.log(a)

实现newOperator

先知道new发生了什么,通过构造函数产生一个新的实例,
那new和构造函数关系是什么

  1. function newOperator(fn) {
  2. let newObj = Object.create(fn.prototype)
  3. let args = [].slice.call(arguments, 1)
  4. let res = fn.apply(newObj, args)
  5. if ((typeof fn === 'object' && fn !== null) || typeof fn === 'function') {
  6. return res
  7. } else {
  8. return newObj
  9. }
  10. }

贪婪模式

webpack怎么保证异步加载

node多进程间如何通信

  • child_process
  • cluster

    websocket建联过程

linux中socket如何通信