干了快三年的前端,一直都是自学,做些无聊的 to B 项目。
喜欢刷算法题,水平不是特别高,但也刷了快千道题了。
以前经常听别人说算法才是关键,算法好的人上手工程也快,设计模式我也学过,结果工作这么久连个源码都看不懂。应届生学弟都看完 React 源码了,我看了好几次 Vue 也看不懂,看了各种讲源码的文章也迷迷糊糊,感觉自己好废物。到底怎么样才能提高阅读源码的能力。
1
heiheidewo 2020-04-27 10:52:48 +08:00
算法题是怎么刷的?有参考别人的解题报告吗?
|
2
murmur 2020-04-27 10:53:54 +08:00
b 站有个 vue 代码讲解的视频(版权问题,你看的随时可能被删,如果好建议购买正版,作者已经开始讲 vue3 了),我是跟着讲解看的,这东西自己找入口太累,跟着别人的视频思路清晰直切重点
|
3
dxc190749 2020-04-27 10:57:23 +08:00 via iPhone
划水划太多了吧,学会独立思考呀
|
4
Curtion 2020-04-27 11:00:40 +08:00 3
和算法没什么大关系吧应该,这种库比较完善,既然比较完善就有很多细节操作,这些细枝末节虽然必不可少,但是在看源码时却是累赘,所以要忽略这些东西,建议先看轻量级实现,例如: https://github.com/DMQ/mvvm,然后再去看 Vue 源码,而且要有目标,否则就会在源码中东跳西跳中迷失自己,要看初始化过程就只看这个,要看依赖收集就只看这个,一旦跑题就点到为止。我最近也在看,加油!
|
5
zhengjian 2020-04-27 11:03:46 +08:00 via iPhone
佩服看完 React 源码的应届生学弟。
|
6
chenjunyue520 2020-04-27 11:04:03 +08:00
刷算法题和 看源码有什么直接关系么。 你带着问题看源码,会比较有收获,如果是无目的的看,应该都是会很难看下去的吧。比如,卧槽,这个咋实现的。。然后直奔代码。
|
7
iDontEatCookie OP @heiheidewo #1 一般想了一小时想不出,或者自己的解法速度比较慢会看别人的代码。
|
8
iDontEatCookie OP @murmur #2 谢谢 我搜了一下有好多 感觉大部分质量都不太好的样子 能给个 Av 号吗
|
9
ericls 2020-04-27 11:09:26 +08:00 via iPhone 2
面试过很多这种
其实就是脱离了实践 学算法学成奥数的。 忘记算法这回事先 不要因为会算法就把一切问题往算法上套。 我觉得算法就像工程里的力学 它很重要 但是很片面 造一个房子你还要考虑审美 跟环境的结合 跟周围建筑的结合 用户的习惯 甚至还要考虑风水。 |
10
fool079 2020-04-27 11:10:22 +08:00
看完 react 源码的应届学弟是什么神仙。。
|
11
iDontEatCookie OP |
12
iDontEatCookie OP @Curtion #4 谢谢你 我研究一下。
|
13
iDontEatCookie OP @chenjunyue520 #6 主要总有人说你算法那么厉害 看源码很容易 我不知道怎么解释 因为我真的努力去看了 确实不会。大神学弟也是这么和我说的,要有目的的去看。但我还是在源码中迷失了自己= =
|
14
jmc891205 2020-04-27 11:17:44 +08:00
为了看懂 Vue 源码而去学算法?
那你可能方向搞错了。。。 |
16
wangxiaoaer 2020-04-27 11:27:26 +08:00 via Android
正常,估计我的项目代码你也看不懂。
|
17
nianyu 2020-04-27 11:28:14 +08:00
因为你被骗了,现在的风气就是鼓吹算法。骗你刷算法刷多了你就什么都会了。
|
18
VDimos 2020-04-27 11:31:11 +08:00 via Android
看完 react 源码的应届生是什么神仙
|
19
maichael 2020-04-27 11:37:23 +08:00 2
看源码本身不是有多难,难的是在找切入点上。
|
20
crackhopper 2020-04-27 11:43:13 +08:00
工欲善其事必先利其器。你把调试的工具搞清楚明白,掌握一些基础原理:编译、设计模式。然后顺着 debug 工具的流程看,接着站在全局梳理,最后每个子模块梳理。就搞定了。
|
21
murmur 2020-04-27 11:43:46 +08:00 1
av100634051
|
22
crackhopper 2020-04-27 11:44:42 +08:00
本质上看不明白就是基础功不够。当然顺着 debug 工具的堆栈硬看也行,大概也能掌握个 50%左右的源码吧。
|
23
nicebird 2020-04-27 11:45:24 +08:00
多看多想,完事
|
24
yeze322 2020-04-27 11:49:25 +08:00 2
工程问题和算法问题是两回事,算法重细节,源码重设计
|
25
revalue 2020-04-27 11:54:19 +08:00
大学生大把时间,找一个培训班视频看,各种源码解读。怎么也得看懂了吧
|
27
zhw2590582 2020-04-27 11:59:32 +08:00
vue 源码我看过好几遍也没看下去,看懂了的部分过几天又忘了
|
28
strugglexiang 2020-04-27 12:09:12 +08:00 via Android
@murmur 在哪里
|
29
wobuhuicode 2020-04-27 12:13:58 +08:00
算法是面试的关键。看懂 vue 库应该是业务的积累。用到用过的去看,带着想法去看才知道这东西是干嘛的。
|
30
murmur 2020-04-27 12:15:22 +08:00
@strugglexiang
@geniusmyn @iDontEatCookie https://www.bilibili.com/video/av100634051/ 地址栏里的 gitpage 打进去好像可以找到正版的购买地址,我记得是 400 快 |
31
murmur 2020-04-27 12:17:12 +08:00
|
32
tmac33 2020-04-27 12:21:19 +08:00
我感觉你应该是被庞大的项目绕晕的。个人判断你应该缺少的是实际业务经验,跟算法无关。综上,多研究研究设计模式吧。
|
33
Huelse 2020-04-27 12:28:48 +08:00
算法是具体设计,软件是规模工程
|
34
wangyzj 2020-04-27 12:40:48 +08:00
刷算法题和看懂 vue 代码没啥关系
|
35
Chenamy2017 2020-04-27 12:41:43 +08:00
如果不是学生,那么为了用而学,会比你漫无目的的刷算法题要好。
|
36
hutng 2020-04-27 12:54:05 +08:00 via Android
哈哈哈
我还没学会 vue 怎么用 更不要说看源码了😂 |
37
renmu 2020-04-27 13:26:31 +08:00 via Android
建议可以去看看《深入浅出 vue.js 》这本书讲得简单易懂了
|
38
ikaros1997 2020-04-27 13:46:23 +08:00 1
你知道数据劫持怎么实现的吗,不要说什么 defineProperty/proxy,要具体的,keep-alive 又是怎么实现的,生命周期又是怎么实现的,等等这些。你想知道了,带着这些问题去看,做笔记,看懂源码做了什么再谈设计,不然源码那么多,为了看源码而看源码没有什么意义的。。
|
39
gouflv 2020-04-27 13:51:32 +08:00 via iPhone
算法不是万能的
|
40
iDontEatCookie OP @crackhopper #20 谢谢指教~
@renmu #37 好的 买! @ikaros1997 #38 刚看了明白点数据劫持和响应式,就 Watcher 和 computed 那里。感觉函数跳来跳去的理不清记不住。谢谢大佬指教。 |
41
betulac 2020-04-27 13:59:58 +08:00
面试算法占比多少就有多少用处啊
想起兄弟去阿里面试,算法题直接说忘了还是给过了 |
42
dremy 2020-04-27 14:00:23 +08:00 via iPhone
会算法但不会语言基础,会走很多弯路的
相比算法技能,我觉得语言基础应当更先掌握 推荐看《 JavaScript 高级程序设计》,看过之后就会恍然大悟了 |
43
DelayNoMay 2020-04-27 14:00:27 +08:00
vue 每个关键词的含义,你不知道就是不知道,难道你还能通过算法推断出 vue 关键词的含义??
|
44
beidounanxizi 2020-04-27 14:05:12 +08:00
vue 都学不会 ? 你的算法题 是 目光所至=刷过 🐶
|
45
frantic 2020-04-27 14:06:59 +08:00
看主干啊,抓你想要看的东西,适当忽略一些代码块
|
46
q8164305 2020-04-27 14:14:11 +08:00 via Android
算法有用,但不是全部,代码设计,工程化也很重要
|
47
hoyixi 2020-04-27 14:15:54 +08:00
高中刷过 N 套试卷,考不上大学的多了去了
|
48
wutiantong 2020-04-27 14:58:48 +08:00
如果你想看懂一个框架的源代码,一个通用的最优方案是:自己尝试做一个类似的框架,不指望能做出来,但实践过后再去看就能懂。
|
49
SpiderXiantang 2020-04-27 15:34:38 +08:00
看完源码。。。。 你逗我吧
|
50
jtwor 2020-04-27 15:54:34 +08:00
1000 道。。。有点猛
|
51
Mexion 2020-04-27 16:13:09 +08:00
你说应届学弟看完 React 源码,我怎么感觉是吹的,说大致懂点我觉得还是很合理的。当然,不是说完全不可能,毕竟世界这么大,牛人还是很多的。
|
52
Navee 2020-04-27 16:22:02 +08:00
框架的实现和设计模式关系更大一些,和算法关系不大
|
53
Stevearzh 2020-04-27 16:36:41 +08:00
为啥要看源码
|
54
jrtzxh020 2020-04-27 16:55:43 +08:00 via iPhone
<<vue 深入浅出>>这本书就讲源码的,可以一看,挺不错的
|
55
kaedea 2020-04-27 21:35:28 +08:00 via Android
1000 道... 能不能分享你觉得最妙的 2 道?
|
56
g0thic 2020-04-28 09:34:38 +08:00
js 基础差了点吧
|
57
GiantHard 2020-04-28 09:50:34 +08:00
我觉得你可以去看看 Vue Issue 区里面一些超过一年以上都没有修复的问题,然后再带着这些问题去看源码,最后在试着去解决这些问题,顺便你还可以提交个 PR 修复一下。
|
58
vcode 2020-04-28 10:23:23 +08:00
蜜汁操作
|
59
iDontEatCookie OP |
60
aguesuka 2020-04-28 12:41:30 +08:00 via Android
术业有专攻,就算是算法题,leetcode 的算法刷得再多,去做《计算方法》的算法题一样懵逼
|
61
zzzzzzggggggg 2020-04-28 12:47:05 +08:00
算法题跟 vue 源码,这俩完全不是同一个东西啊;
而且这个跟你 JavaScript 基础知识差也没关系,首先你需要用 vue 写过项目,踩过一些坑。此时你应该对 vue 的响应式原理有一些体会,对虚拟 dom 有一些听说,也对它的生命周期方法有个粗浅的了解。 然后你开始看源码了,看源码前首先要知道你的目的是什么,比如你是为了搞清楚响应式原理还是为了搞清楚 diff,这样子才能有的放矢,抓住重点;而且你可能还需一些前置知识,比如看虚拟 dom,你需要知道它解决了什么问题,重绘回流你得懂。看响应式原理,观察者模式得懂,es6 的语法得懂。看生成模板那块,得需要懂点编译的知识 所以总结一下:算法题跟读项目源码没关系;不是你弱;需要用的比较熟练;需要前置知识;需要抓住重点 |