12

前言

3 月 25 日晚,面向 21 届学生,淘系前端团队举办直播活动,由淘系前端技术专家大果带来「淘系前端技术体系揭秘」和「校招问题答疑」,答疑环节更是邀请了淘系前端校招负责人、淘系高级技术专家元彦,直播回答问题,其中干货满满,冴羽辛苦的对答疑部分进行了文字整理,分享给大家,如果要观看这场直播,可以搜索「yayujs」,关注「冴羽的JavaScript博客」公众号,回复 "宝典" 获取视频回放。

1. flutter 在手淘有很多应用场景吗?

元彦:阿里一直在发展 flutter,像以闲鱼的同学为代表,就一直在社区布道和宣传,这是阿里在新技术上的态度,会一直做推进,也一起谋求共建。这是当下 flutter 在闲鱼的落地,而手淘这边,还是大量的处在探索阶段,这是因为手淘和闲鱼客户端并不在一个体量上,我相信今天大家也看到了很多手淘的问题,我觉得这个是客观的存在,所以我们在新技术的探索会做一些保守的策略,所以手淘我们会做很多新的探索,但当下并没有大量的落地。

2. 校招侧重哪些能力的考察?

元彦:对人的考察往往是因人而异的,毕竟每个人的背景、学校、经历都是不同的,比方说有些人非科班,可能到了大二大三的时候,突然发现前端很有意思,然后才去学习,而有些科班的同学,可能从一开始就已经接触了前端,在社团里也承担了前端相关的工作,所以每个人的差异其实是很大的。

但从整体来说,我们其实有一些基本的考量标准,这个可能是我们站在淘系前端的角度,第一次对外宣扬这个标准,不过我觉得这个标准其实也不应该是什么秘密,可能有些人还会觉得这是正确的废话,但是这就是我们评判一个人的标准,大家可以做一个参考。我觉得主要是三个点。

第一是基础,即基础扎不扎实,这个基础就是指计算机理论的基础,很多渠道都可以学习,比如学校的课程,非科班的同学也可以去选修 CS 相关的课程,当然如果是科班的同学,我们还希望他能把基础知识学扎实,尤其是数据结构、操作系统原理等这些最基本的东西,在未来工作中也是一定会用到的内容,这是一个最基础的事情,当然,有些同学会说,我要去学习 AI 人工智能,然后我觉得这是一个加分项,至少对前端这个岗位来说。因为当前的 AI 其实更多的还是在探索阶段,并没有在一个收割的阶段。我们见到很多学生,会去研究这些,这个是我们希望看到的,但是最基本的还是,基础一定要扎实。

第二个是热情。只关心自己的基础,肯定是不够的,至少你还要对社区的发展有观察或者说有参与。观察就比如说经常逛社区,这是一种热情的体现,今天在直播背后的很多同学,我相信很多人还会逛 Github,在 Github 里面大家有没有经常去参与一些讨论和建设,我觉得这个也是热情很重要的体现,我们也希望看到很多人说,对知名的开源项目提交过 PR,像我昨天面试的一个同学,他去年有为 ICE 这个开源项目提交过 PR,而且 PR 质量也很高,我觉得这个就是一个不错的亮点,也很能打动评委,说明今天你参与了一个大公司的开源项目或者社区知名开源项目,并且受到认可。当然我不是说让大家去提交一个文本错误之类的 PR,虽然这种也是好事情,的确体现了热情,但是可能没法去证明自己的实力,这个希望大家有一个正确的判断。所以,当你有去参与开源项目的时候,我们会认为这是一个非常有热情的的同学,这是我们希望看到的。

当然,最重要的,我觉得还是成果,成果就是你在这个领域做出的一些关键的结果,比如说,有些人将一些技术沉淀下来,出了一本书,或者,你写了一个库,大家都在使用它,而且你也一直在经营它,我觉得这是一个非常有意思的体验和成果,当然我觉得这些也离不开你在之前说的基础和热情,这三者也是相辅相成的。

所以总结来说,其实我们看重的就三个指标,一个是基础,就是你的基础知识,第二个是你的热情,你对技术上的热情,包括你对这个社区的热情,这都是热情。第三个是成果,就是你有没有一些作品。

所以每个人在写简历的时候,一定要想象自己的作品是什么,不过这个作品不是老师布置的作业,作品是自己定义的问题,自己提出了解决方案,作业是老师定义的问题,你提交了一个作业。这两者是有很大的区别的。

3. 如何系统的学习前端然后如何从前端开发晋升至前端专家?

大果:我结合着自己的经验来讲一下,首先是如何系统的学习前端,刚才元彦讲的那些标准,其实对不管是实习生还是社招,都是一样的。就是看你这个人的一些特质:你的基础能力,你对这个方向有没有热情,你有没有一些作品,这些都很重要。

这些特质其实回过头来看,在我 13 年应聘的时候,这三个是不可能都达到的,可能就只达到了一个热情,当时整个实习面试也是非常的坎坷,最后也是到了大三的暑假了,然后在家里才通过一次补招,最后拿到阿里实习的 offer。

不过今天,我们对于实习生的要求,其实已经比我当年高很多了,因为不管是大家的学习能力,还是社区的发展,都一直往前走。那怎么系统的学习呢,我觉得首先还是基础能力这一块,大家千万不要去忽视。很多人也在说,今天前端领域很多,我怎么去把一个领域做深,所以首先第一个是,我们得有这样一个想法,就是我今天不求说,所有的东西都要会,但我一定要能说,我们在某个领域是足够深入的,基础也就是指这一块。基础是你往后发展的一个基石,如果这一块的东西你不打扎实的话,你未来在任何的一个领域,其实都很难去做深的,因为你很容易就遇到一些瓶颈。有很多同学说,Flutter 出来了,我可能比较了解 Flutter,那我会就会问,你做了什么呢?然而很多人可能就跑了一个 Demo,打印个 hello world,然后模拟器跑起来,那这个显然是不符合我们的要求,所以对于基础这一块,大家一定要去关注。

然后第二个就是作品, 不过今天很多可能都是校招生,可能还没有一些业务的驱动,对于作品这个概念,可能不是很好理解,那我觉得学校里,比如说实验室的老师让我们去做的一些项目,其实就是很好的去展示自己作品的机会。

然后另一块就是今天整个前端开源社区,其实也是非常开放的,发展也很快,大家可以对开源社区多去做一些关注,了解别人在做些什么,社区在发展什么,然后慢慢的参与进去,这个我觉得也是一个作品。所以作品不一定说我要做一个 React,我要做一个 Vue 。我对 React 提交一个 PR,这些也都是作品。

然后怎么晋升至前端专家,晋升其实是一个水到渠成的过程,没有说今天我给你安排好一条道路,你就按照这样的道路去走,你就能晋升,那显然不是的。刚开始我可能会做业务,那在做业务的阶段里面,热情很重要,我要有自己的热情和积极性,可以去看到业务的问题,看到架构的问题,虽然可能这个架构现在还不是我在做,那可能是其他团队的任务,但是我在里面可以看到他们的问题,并且逐渐的去给他解决问题,那这中间就是我自己去发挥的一个能力,也能让别人认识到我有这个能力,那慢慢的,你可能就会做一些相关的事情,逐渐的,整个技术深度包括你对业务的一些理解,都会逐渐成长,最后到晋升,其实都是一个水到渠成的过程,所以这里面热情、积极性很重要。

然后另一块就是要多去输出,不管是学生,还是说今天已经工作的同学,很多时候我们都在被输入这个,输入那个,比如说业务给我们输入什么,整个社区给我们输入什么,老板在跟我们输入什么,他们告诉我们,要去做什么什么样的事情。但很多输入可能我们自己并没有去消化,把他沉淀成自己的能力,所以我们要通过输出去把这些东西转换成自己能力。所以我面试的时候经常会问,有写一些博客或者去做一些开源项目之类的分享之类的事情嘛,我觉得这些都是一些很好的输出的场子。通过每次的输出,也是对自己这一块的技术体系的一个沉淀和抽象,把它真正的转换成自己所理解的东西。

4. 前端对非计算机专业有歧视吗?

大果:这个问题还是要抽象一下,应该是说,今天我们对于计算机或者非计算机专业的同学,有没有区别对待之类的?那这个问题元彦来回答吧。

元彦:这个答案肯定是没有的。其实我个人在面试过程中,对于非科班的毕业生更有好感。为什么这么说,因为今天你作为非科班,你去应聘技术岗位的时候,你相关的学习都是自驱的,你是基于兴趣去学习的,不是因为学校里有这些课程才去学习的,你学习的过程是完全自己驱动的,未来在工作中,更多的事情也不是自上而下布置的,很多事情都是要靠你自己主动去学习的,我觉得一旦你养成了这个学习习惯,尤其在工作中应用到,一定会把工作做的更好,所以我才会对非科班的学生更有好感。

5. 面试的时候不会的问题,应该怎么回答?

元彦:面试中遇到问题不会回答,这是非常正常的,毕竟大家在学习过程中遇到的问题,跟我们在工作中遇到的问题是非常不一样的,除此之外,我们看问题的角度,也是有差别很大的。

举个例子,很多人都在看 React Fiber,但是如果问你们,为什么要有 Fiber 这个东西,可能很多人都回答不上来,因为大家只在社区里面看到说,Fiber 是怎么工作的啊,但是为什么要有 Fiber?如果没有会怎样,而这种思考,其实是非常底层的。我相信,很多人可能都没有思考过。

那如果遇到的问题不会,你可以先选择不会,说我觉得自己没有信心能答出这个问题,当然我更希望听到你说,我现在不会,但是你给我两分钟思考一下,我想一下这个问题有没有答案?我觉得这是一个很好的思考习惯,首先你在面对不会的东西是坦然的,我当下不会,很正常,我之前没有思考过这个问题嘛,那我们再花两分钟思考一下,给一个初步的答案。

所以说遇到问题,也不用不会就不会,也可以有一个积极的方式回应。

6. 前端实习生一般做什么工作?

大果:我自己也是实习过来的,在我们进来之前,每个人就会分配一个师兄,师兄可能会提前跟你联系,帮助你解决来杭州、租房之类的问题,入职之后,师兄会带着你去了解整个工作中依赖的一些东西,就比如说我刚才讲的一些工程的东西,可能需要去学习和了解的一些东西,那在这个阶段过去之后呢,接下来就是分配一些实质性的内容,我们给到实习生的工作内容也是非常正式的。因为我们其实是希望实习生能承担起跟正式员工一样的工作,就没有说今天你是一个实习生,就给你分配一些简单的工作。接下来实习生实习了一段时间之后,还有实习转正,review 你在整个实习过程中做的事情,包括你自己在里面的思考。

元彦:我再补充几点,我个人在两家公司做过实习生,这一家是在阿里,上一家是在深圳的一个公司,我觉得这两家公司的实习还是有很大的差别的。这个我实习的时候有点久远,可能差不多快九年多了,但我觉得这两家公司给我的感觉,还是很不太一样的。

阿里更多是把实习生当作一个正式员工来看待,会倾心的把所有知识交给你,把正式员工遇到的问题交给你。这个有好处,有坏处。好处是今天你跟大家一样,都是在一个水平线上做挑战,不是说今天你是一个实习生,就拿一些不重要的事情让你做。我确实听过很多人说,今天实习生过来只是个打杂的,其实很多实习生在很多公司真的学不到东西或者说学不到非常深入的东西。为什么学不到,可能是因为你面对的问题不是一个难题啊,只是说是一个资源的问题,这跟阿里确实有很大的差别。

另一个点,对于一个可能没有经验的人,他压力会比较大,这就是为什么会有师兄存在的原因。我们希望你遇到困难的时候,更多的去找人沟通、讨论,让师兄帮助你。而且你来到阿里,师兄很可能就是像大果这样的专家,甚至可能是高级专家去帮助你。

7. 前端应用面太广,怎么选择一项深入呢?

元彦:刚才我在看这些问题,有人提 Flutter、游戏、gcanvas、框架之类的,的确前端的技术非常多,但其实这些技术核心的点都是围绕体验的。

那技术这么多,怎么办?我觉得这是客观问题,当然一定要从兴趣出发,就是今天你喜欢做什么,有些人说我喜欢做游戏,那我觉得你就可以专门去选择学习这样的技术和领域。

所以围绕技术做出的选择永远是基于自身的倾向来的。多说一点就是今天我以个人的角度来看这个问题,其实我发现我个人的喜好是有变化的。我以前喜欢做工程,但我做着做着,转移了我的兴趣,所以我觉得人还是善变的,兴趣是会偏移的,我现在主要是做基础架构,工程上的事情就很少做了,但是工程是我以前喜欢做的,所以人的兴趣是一个变化的过程,并不是一成不变的,所以你今天什么都学一点,也不会一件坏事情,但我建议还是围绕前端,围绕体验的技术展开,不是说今天我学前端,我可能去选一个数据库方面的技术,当然 SQL 是基础的,这个也不是一个关键的技能,只要能用就行。但比如说存储方面,你说分库分表的优化怎么做?我觉得这不是我们关心的,我们也不是特别推荐说,你一定要往这个方面去深入,当然你懂、你有兴趣,你有这个好奇说我要去了解一下,我觉得这也是好的点。

所以总结来说,当下,你可以选择一个感兴趣的点持续深入,不过我不会觉得你会一直在这个点上,你未来也可能会转移你的兴趣。

8. 前端更新快,怎么看待?

元彦:这个问题我们拓展来看,其实不止前端技术发展快,整个技术发展都更新都很快,比方说今天后端体系,你回到两三年前,可能都很少去谈云原生这个概念,但当下,云原生、Serverless 在服务端大行其道,所以技术的发展一直是很快的,这里面包括前端,我觉得这是从宏观层面来看,不是前端发展的快,其实恰恰我觉得前端这些年的发展有点慢。为什么这么说,你们现在用的技术,其实好多年前就已经开始使用,大部分的技术,其实并没有太大变化,我从我的视角来看,前端的技术已经大概有四年左右时间没有什么大的发展。这是我对前端发展的一个看法。

我个人觉得前端未来如果能发展的更快,有更好的迭代,那一定是在新的问题和新的领域,比如说我们在 IOT 领域上的一些发展,包括有些同学说的,我们做一些 D2C,用智能的方式去提升我们整个的研发效率,那我们很多定义的问题都是新的领域,而且这些新的领域其实跟已有的技术是不冲突的,比如 D2C,生成的依然是 Rax 的技术体系,这个体系也存在三到四年了。

9. 什么样的作品能让面试官感兴趣?

大果:这里没有一个绝对的标准,我们去看待学生的作品或者说社招同学的作品,核心还是说是第一个是你在这个产品层面有没有自己的思考。我今天做一个产品、做一个作品,这个作品我是怎么思考的?为什么要去做?而不是说我今天可能就仿照饿了么做个小的网站,或者搞个什么 stackoverflow,这个显然在产品层面上是缺少思考的,就是没有一个,我要去做一个什么样的事情?为什么要去做?这个事情的价值是什么?的思考。

另一块就是整个技术深度的挑战,就比如说我刚才说的仿照做的网站,那这个可能产品层面确实没有什么思考,但如果说我在这个作品里面有很多技术上的挑战,那我们也是认可的。

所以我觉得核心就两个点,一个是你在产品方面有没有自己的一些思考想法,另外一块就是你做的事情,在技术上有没有一些挑战。其实也是核心考察两个点,一个是人的思考能力,一个是人的技术能力。

10. 实习生是不是基本都会转正?

大果:这个不一定,我当时差点就没有实习转正。所以也不是说百分之百转正。所以在整个实习过程中,大家还是要保持一个好奇、热情、有产出这样一个心态。其实我自己在实习前,前端基础是很差的,因为我就是刚才说的非科班,大三的时候才开始接触前端,以前都是搞其他语言,进来的时候整个基础就很差,但我觉得实习的那三四个月,参与到公司一些产品业务里的建设,对于我的技术能力、做事方式的成长是非常非常快的,所以,大家对实习这个过程一定要珍惜,努力争取这样的机会。

冴羽补充一句:淘系去年的实习生其实是都转正的

其他

最近新建了公众号,搜索「冴羽的JavaScript博客」或者 「yayujs」,文章也会第一时间发送,收到推送后依然建议到各平台阅读。

冴羽的公众号

系列博客

JavaScript 系列目录地址:https://github.com/mqyqingfen...

如果有错误或者不严谨的地方,请务必给予指正,十分感谢。如果喜欢或者有所启发,欢迎 star,对作者也是一种鼓励。


冴羽
9.3k 声望6.3k 粉丝