Algorithm

主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell

剑指 Offer 14- II. 剪绳子 II

此题没做出来。
总结:之后每周的算法题应该提前做,如果放到周日来做,很有可能会因为时间问题而被划水过去 -_-||

Review

主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章,我个人最喜欢去的地方是http://Medium.com(需要梯子)以及各个公司的技术blog,如Netflix的。

Now You See Me: How To Defer, Lazy-Load And Act With IntersectionObserver
阅读笔记:

  • Observer vs Event: 前者同步,阻塞主线程;后者异步
  • IntersectionObserver 应用:
    • deferred functionality: 替换 scroll 或 resize 事件
    • lazy loading of assets
    • current section highlighting
  • IntersectionObserver 什么时候会失效?
    • display: none; 失效
    • overflow: hidden 超出的部分会失效
    • opacity: 0, visibility: hidden 有效

Tip

主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。

本周对 git 的 2 个命令有了进一步的了解:

  • git merge ff VS no-ff:no-ff (no fast-forward) 模式会将所有的更改生成一个 merge 提交,这样能保留分支信息;ff (fast-forward,默认) 会丢失分支信息,效果类似 rebase 后一样
  • git rebase master:当我们在 feature 分支开发完成之后,此时 master 分支可能已经有了其他的提交存在;当运行了 git rebase master 之后,就可以将 feature 分支的 checkout HEAD (即当初新建 feature 分支时对应 master 的那个提交)切换到 master 最新的提交上 (如下图);这个过程可能需要解决冲突

image.png

Share

主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。

Reusify: https://github.com/mcollina/reusify
原理是基于 v8 引擎的 hidden class 做的函数调用优化。源代码短短 30 多行,值得研究学习。