Web前端最全Vue(70),2024年最新高级程序员面试题及答案

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

在这里插入图片描述

尤雨溪:从艺术爱好者到年薪百万的全职开源开发者


尤雨溪,网名尤小右,作为一位「半路出家的程序员」,其实他一开始志并不在编程。

学生时代,对画画特别感兴趣的尤雨溪,在初中时期偶然间推开了 Flash 动画的大门,他将静态的画通过一定的技术方式「动」起来,为自己喜爱的动漫创造出更好的视觉体验,甚至在某次生物课的演示上,他将演讲内容加入了很多科幻效果,而正是这些尝试,也鼓舞了他日后想要坚持走艺术这条路的决心。

后来,高中毕业后,尤雨溪以接近满分的托福成绩考入美国 Colgate University 大学。在大学期间,尤雨溪坚守自己的爱好,选择的专业是室内艺术和艺术史。但是,随着时间的推移,其发现,艺术这条路也并非想象的那么简单,一方面,在不懂编程的情况下,很难凭借简单的 Flash、HTML 5、CSS 等知识实现自己的想法;另一方面,也和《黑客与画家》里面的格雷厄姆所体验到的现实一样,“我决定不当画家了,首先要彻底解决自己的收入问题”,在美国,这个专业的毕业生很难找到工作。

因此,凭借着自学,尤雨溪在本科毕业的时候做了一个完全靠编程来实现的网站,并用它成功进入了美国纽约的 Parsons 设计学院并获得了 Design & Technology 艺术硕士学位。在此期间,尤雨溪不仅学习了 openFrameworks、动画算法等技术,还接触到了 JavaScript 编程语言。同时,除了参加日常的课程之外,尤雨溪在业余时间也经常“蜗居”在各大社区中,并在 TJ Hollowaychuck(https://github.com/tj)、Guillermo Rauch(https://github.com/rauchg)、Substack(https://github.com/substack)等活跃于 Node.js 生态初期的开发者影响下,他在 JavaScript 这条路上越走越深,也基于此开启了自己的职业生涯:

  • 2012 年,尤雨溪花费了两天的时间,打造了一款 HTML5 版的 Clear(极简任务管理应用)并将其开源,凭借简单的操作方式且摆脱了任何形式的按钮束缚,该应用在上线短短一天后,便登上了 HackerNews 首页,且受到了 Facebook、Color 等大厂的 Email。

  • 2013 年,尤雨溪加入 Google Creative Lab Five Program 项目组,担任 Creative Technologist,主要负责快速实现可体验的产品原型。在彼时的环境中,前端框架才刚刚崛起,而起步稍早的 AngularJS 应用也更为广泛一些。不过,在日常工作中,尤雨溪发现 AngularJS 在某些应用场景中的表现不如人意,以基于前端框架的双向绑定实现为例,AngularJS 有自己的一套模板编译规则,且需要使用脏检查,对于开发者而言太过繁重且灵活性不够。而为了更好地满足自己的工作需求,尤雨溪决定自己动手开发一个轻量级的框架来练练手。

  • 2014 年 2 月,尤雨溪带着前端开发库——Vue.js 来了,它可以通过简洁的 API 提供高效的数据绑定和灵活的组件系统。同时,尤雨溪选择了开源的方式,方便更多的开发者使用并参与其中。

在这里插入图片描述

随着 Vue 用户规模的不断增长,正如文艺复兴时期的代表人物阿尔伯蒂的一句至理名言:“任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。”在 2016 年,尤雨溪决定以全职开源开发者的身份全身心地投入到 Vue 项目的维护中。

这一路走来,他的技术成长经历成为了很多想要跨行以及专业开发者学习的楷模。不过对于尤雨溪自身而言,他并不希望自己成为程序员的个人崇拜对象,因为在他看来,「做脑力工作的人,往往钻研得越深,越发现自己的渺小和无知」。

尤雨溪认为,「崇拜」和「敬佩」两个词其实非常不同。其表示,“过度的「崇拜」另一个人,往往让人妄自菲薄,觉得自己好像永远也赶不上对方,甚至放弃了赶上对方的努力。但事实上,这世上碾压众生的「怪物」也并没有那么多,大部分有点名气的程序员,可能是因为种种机遇才得以成名,单论技术实力,其实也都在凡人努力可及的范围之内。相比之下,「敬佩」一个人,则心态上更多地会去思考这个人身上有什么东西值得我学习,我如何才能拉近自己和对方之间的距离。”

如今,在尤雨溪全身心投入 5 年、Vue 落地近八年的时间里,Vue 从一个“蹒跚学步”的婴儿成长为一位正在“乘风破浪”的少年,且也取得了 GitHub TOP3 Repo 的优异成绩。对于尤雨溪个人而言,也在摸索中找到了最适合自己的工作与生活节奏。

《程序员》:从最早初接触 JavaScript 到 Vue.js 的研发落地,每个阶段,你通过什么样的方式不断提升自己的技能?

尤雨溪: 多看多尝试!一直呆在舒适区往往就得不到提升,程序员能力的提升往往都发生在尝试解决一个从没解决过的问题之后进行反思的过程中。

《程序员》: 你曾谈到在 Meteor 作为一名开发者没有高层决策能力,这其实是我们常常面对的问题。从 Unix、Linux 等到今天,伟大的项目往往由一个人或者一个极小数量的群体发起并成长起来,而在企业里,项目的开展往往讲求完美的计划、多人头脑风暴,你认为这两者之间是否存在“矛盾”?

尤雨溪: 会有一定的矛盾。决策过程的参与人并不总是越多越好,有时候意见分歧会导致事情反而没法顺利推进。但没有一定数量的互相反馈也很容易忽略一些重要的问题。

个人认为,需要有完善的计划和探讨,但在决策上还是要有一个敢于承担责任并且有能力拍板的人去确保项目不陷入无止境的“扯皮”中。

《程序员》: 从 2013 年提交了第一个 Commit 到今天,Vue.js 已经快 8 岁了,你有着怎样的心路历程?遇到过的最大的难题是什么?

尤雨溪: 时间过得还是很快的,一开始 Vue 只是一个兴趣使然的小项目,现在它是我的全职工作,真的可以说是陪伴着我一步步从初出茅庐到成家立业了。这过程里最大的难题并不是技术问题,而是在 2016 年考虑是否要辞职,全职做开源。当时没有太多可以参考的案例,也没有十足的把握,可以说是完全凭着热情做出了这个决定,不过幸运的是这可能也是我这辈子做得最成功的决定之一。

《程序员》:8 年过去,你认为前端发生了哪些变化,如何看待今天三足鼎立的局面,前端发展的未来走向将是怎样的?除此之外,你还在关注哪些技术?

尤雨溪: 我个人觉得,主要的变化就是前端从相对 “手艺活” 的定位变得更加工程化了,已经有了大量成熟的工具和模式,生产力大大提高。目前在前后端分离的场景下已经没有太多潜力可挖了,所以在生产力和性能方面的探索开始分裂为两个方向:

  • 一个是 JavaScript 全栈,打通前后端数据和类型(比如 React Server Components 以及 Next/Nuxt 这样的全栈框架);

  • 一个是对传统后端更友好,但保留现代前端部分开发优点的方案(比如 Phoenix LiveView、Laravel LiveWire)。

具体来看,JavaScript 语言在 ES2015 大跃进之后慢慢稳定,随着微软停止支持 IE11,我个人希望看到的情况是现代 JavaScript 语言特性的支持能够彻底普及,这样无论是框架还是工具层面都可以少浪费些精力在兼容方面。TypeScript 会越来越普及,类型会成为大部分非玩票前端项目的标配。

另一个崭露头角的趋势就是用非 JavaScript 的语言去写支持前端的工具。自从有了 Node.js,前端工程师们自然而然地用 JavaScript 去写给自己用的工具,但现在我们发现在构建性能这块,JavaScript 依然是完全没法跟 Go 或者 Rust 这样的编译型语言比的。esbuild 和 swc 已经用优于 JS 工具链几十倍甚至上百倍的性能证明了这一点。某种程度上来说,接下来几年非 JavaScript 语言对前端的影响可能更多会体现在工具链方面(相比 WASM 而言)。

《程序员》:对于工程师来说,在最初的 5 年、10 年等不同的职业阶段,什么样的技能或者思维最为重要?

尤雨溪: 不同路线的侧重点是完全不一样的,大公司 vs 创业公司,纯技术岗 vs 管理岗,没法一概而论。尤其是我自己走的是独立路线,需要关注的东西又跟在公司里发展不一样。非要说共通的一点,可能就是想清楚自己擅长什么,想要什么,选一条适合自己的路线吧。

一个人顶起一个项目,Vue 的构建与重写!


如果用一句话总结 Vue 今日的成功,尤雨溪认为,「时机,坚持,基于用户去思考」三者缺一不可。抓住前端发展的浪潮,不断地尝试与改进,从根本上解决开发者日常工作中的痛点,是 Vue 的不断向前的驱动力,而重写 Vue 3 的根源也是在此。

《程序员》:2020 年 9 月,Vue 3.0 正式发布,这一版本为什么要重头开始写?亦或说重构之后的 Vue 3 解决了此前哪些必须解决的问题?

尤雨溪: 重写的主要原因一个是类型系统,一个是内部逻辑分层。Vue 2 项目先基于 JavaScript,中期加入了 Flow 做类型检查,导致类型覆盖不完整。Flow 本身又破坏性更新频繁,工具链支持也不理想,所以决定转为用 TypeScript 重写。Vue 2 的内部逻辑分层不够清晰,对于长期维护是一个负担,这也是一个不重写就很难彻底改善的问题。

《程序员》:这样的一个大型开源项目重写,必定耗费了不少心血,此次的重写主要是你一个人完成的吗?在 Vue 团队中,全职开发者有几位?

尤雨溪: 这个项目初期主要是我一个人,但进入了 Alpha 以后也有很多来自外部贡献者的 PR。团队全职的严格来说其实只有两位,一个是我,一个是 @soda 负责 Vue CLI 的维护。

其他成员一部分有自己的全职工作,仅用业余时间参与,但现在也有好几位是自由职业者,通过 GitHub 或其他渠道的赞助,贡献部分时间参与 Vue 的开发。

《程序员》:重写的过程中,你认为最难的挑战是什么?是否遇到过比较有挫败感的事情?又是如何解决的?

尤雨溪: 最难的是如何在尽可能兼容 Vue 2.x API 的前提下改善内部架构和性能,同时还要开拓新的能力。比如 Composition API 在刚提出的时候遇到了很大的阻力,但后续根据用户反馈调整,现在在高级用户中的接受度还是很高的,算是达成了设计的目的。

《程序员》:Vue 3 版本兼容 2.x,对于想要学习 Vue 的开发者而言,时常在纠结是从 Vue 2 开始学基础还是直接学 Vue 3,对此,你有着什么样的建议?

尤雨溪: 直接学 Vue 3 就行了,基础概念是一模一样的。

《程序员》:Vite 2 不久前正式发布,未来 Vite 会不会慢慢地取代掉 webpack?

尤雨溪: 完全取代应该不可能,这也并不是目标。webpack 有巨大的存量,功能上也覆盖了一些 Vite 并不打算覆盖的场景(如 Module Federation),但对于大部分应用,尤其是中小型应用来说,webpack 的复杂度和性能代价其实并无必要。

《程序员》:今天,Vue.js 有着非常多的跨时区、跨文化的协作,你采用了哪些方式确保代码质量和高效协作?

尤雨溪: 其实开源协作未必高效,毕竟大部分成员都不是全职。但好处是因为不是有业务压力的公司,所以高效并不是一个必须的条件。我们团队会每两周开一次例会同步一些进展,进行一些讨论,除此之外几乎都通过 GitHub 协作。

最后

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。

并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值