线段树的 js 实现

Segment tree 可以用来解决一些区间的问题。比如说有 100 个元素的整数数组,想要求其中索引位置在 a - b 之间所有数字的和,那怎么求呢?一种方式是遍历,从 a 到 b,这样的时间复杂度是 O(n) 级别的;第二种是使用线段树,则可以把时间复杂度优化到 O(logn)。

继续阅读“线段树的 js 实现”

一些排序算法

记得有一个明星程序员说,做一个 web developer 是不用学习数学的。那么自然也不用学习算法了。作为一个前端,在实际工作中确实很少实现什么排序算法,因为在 JavaScript 的语言层面,就已经实现 sort 函数了。但是学习这些排序算法,依然有助于我们理解这些语言相关内置函数的原理。

继续阅读“一些排序算法”

收获满满的一个月

2021-03-31

手写用 ES6 proxy 实现 arr[-1] 的访问

https://github.com/lgwebdream/FE-Interview/issues/36#issuecomment-809936411

滴滴公司的面试题

2021-03-30

手指、拇指和手腕腱鞘炎的原因和治疗 – 骨往筋来的文章 – 知乎

https://zhuanlan.zhihu.com/p/32937541

乱语:打游戏居然都能打出腱鞘炎,游戏水平很高了,但是也到了退役的时候。

继续阅读“收获满满的一个月”

几个前端面试题

写代码和做代码题目还是有很大差别的

1,如果数组里的某两个元素相加等于16,则去除这两个元素。如 [1,3,1,15,13,2,16,0]  ==》[1,2]。

实现代码:

// 1.如果数组里的值某两个相加等于16,则删掉
  var arr = [1,3,1,15,13,2,16,0];
  arr.forEach(function( item1, index1 ){
    arr.forEach(function( item2, index2 ){
      if ( index1!=index2 && item1+item2==16  ) {
        arr[index1] = '#';
        arr[index2] = '#';
      }
    })
  })
  var newArr = arr.filter(function(item){
    if ( item == '#' ) {
      return false;
    }else{
      return true;
    }
  })
  console.log(arr, newArr);

点评:这个题目考察数组操作是否熟练,和实现思路。

继续阅读“几个前端面试题”

VueJS 中 event bus 的实现

最近在工作中,使用了消息总线(message bus)这么一个东西,想起 Vue 也有类似的东西,所以想看一下其源码实现。

学习英语是理解编程的第一步。bus 有公共汽车的意思,也有 ‘a set of wires that carries information from one part of a computer system to another’(计算机系统的总线)。所以这里 bus 的意思是总线,一种形象的说法,为了更进一步的了解这个概念,可能需要一点硬件知识。

继续阅读“VueJS 中 event bus 的实现”

多花点时间和家人在一起

2021-02-28

看了《你好,李焕英》,这个电影虽然技术上平平无奇的,但是感情真挚,让人又笑又哭的。作为一个男人应该把时间和钱花在正确的人身上,比如家人朋友啊。和电影《教父》一样,重申了“家庭”的意义。推荐这个电影。

https://movie.douban.com/subject/34841067/

继续阅读“多花点时间和家人在一起”

nsum 问题求解

2sum 问题是,给出一个数组,从里面找出 2 个元素,使其相加之和等于 target。

3sum 问题是,给出一个数组,从里面找出 3 个元素,使其相加之和等于 target。

以此类推,nsum 的问题是,从数组中找出 n 个元素,使其相加之和等于 target。那怎么求解这个问题的答案呢?

继续阅读“nsum 问题求解”

湖南省湘潭九华经济技术开发区福晟滨江花园一、二期全体业主维权诉求书

尊敬的湖南省人民政府:

我们是福晟滨江花园商品房开发楼盘的购房业主。今天,我们怀着极其愤怒和痛苦的心情,向您反映福建福晟集团有限公司以及湖南和达投资集团有限公司停建滨江花园一二期商品房建设项目,多次推诿、欺骗、愚弄业主,不仅已经逾期交房,形成事实违约,而且面临再次延期的严重后果,给全体业主造成极大的经济损失,带来一系列的家庭灾难和社会不稳定的可怕后果。

继续阅读“湖南省湘潭九华经济技术开发区福晟滨江花园一、二期全体业主维权诉求书”

40 行原生代码理解 Vue 响应式

Vue 的一大核心是响应式,所以理解她的响应式实现是很重要的。为了帮助最核心的原理理解,我抽丝剥茧于 Vue 源码,实现了一个最简单的响应式系统。明白依赖如何收集;在哪个时机收集的;数据变化了又应该在哪个时机触发视图的更新。

继续阅读“40 行原生代码理解 Vue 响应式”