最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

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

这个问题我在活动群的 github issue 活动中,带有业务理解标签的题目里经常会问到,可是大部分同学都没有说到位,甚至答非所问。

这里谈谈我个人对业务的理解,或许没有普遍意义,所以仅供参考。

▐  业务最核心的要素是业务本身的价值

一家公司,或者一个部门,做的事情有许许多多,零零散散。也有很多事情合到一起,促成了一件大事的时候。那么,我们是把那些零散的事情都看成业务?还是只把那一件大事看成业务呢?我认为都可以。决定权在于这件事是否逻辑自洽,以及是否具有独特的价值。

接下来让我们拿着一个例子来说,假设你在开发一个营销活动页,这个页面能够给公司带来3000人的新用户,这些人有可能会购买公司的产品,从而带来收入。

这里明显可以感受到,营销是一个业务线,他的商业逻辑是投放页面 -> 拉新回流 -> 商品销售,价值在于新用户的触达,以及商品销售利益。基于这两点,我们就值得投入精力,因为做的越好,公司业绩越好。

▐  那么,做个页面就是亮点了?

当然不是,但是亮点已经离我们很近了。如果你想要有亮点,那你需要保持思考。在上面的例子中,我们有许多可以优化和验证的事情。

  1. 营销页每天换内容,怎么快速替换?

  2. 营销部门人越来越多了,页面每天要10个,一个人怎么做得完?

  3. 前端的人也越来越多了,改个组件不能只靠复制黏贴,怎么管理?

  4. 拉新回流效率具体有多高?新人真的有买我们的商品吗?这么多人投入,都是要工资的,卖出去的商品能够发我们的工资吗?

  5. 转化率低了,怎么才能提升?

  6. 这个按钮写错个样式到了右边,居然点的人特别多?那下次是不是都应该放右边?

上面列举的几个问题,估计很多同学日常都有做类似的事情。但问题是,这些事情是你想做的,还是产品让你做的?这些事情能诞生什么出来呢?

  1. 运营配置后台与投放策略

  2. 营销搭建体系

  3. 工程化研发套件

  4. 业务埋点与数据分析系统

  5. 数据仓库与数据分析后台

  6. A/B test系统

至少在我看来,如果面试的同学上来自我介绍的时候,能够讲一下上面例子中遇到的问题,之后再说做了下面对应的某一个系统,那么,这就是绝对够分量的亮点。只可惜这样的同学少之又少,大部分同学是因为产品说要做就去做了。

所以,你真的想过业务是什么吗?有为业务想过什么吗?有了你,业务有什么不同吗?

可以开始写代码了?(学会思考的方式)



好了,假设我们思考了一下,想了点东西出来,接下来我们可以开始写代码了…吗?

做一个有亮点的技术产出,可不是撸起袖子就能快速干出来的,当然,如果你是个天才,那请自便。如果和我一样是普通人,那么请先做好技术方案设计。而设计的第一步,就是做一个ppt工程师,画图。

▐  图,是思想的结晶

在上面提到过的github issue活动里,大部分同学的业务大图或者技术架构图,都没法说明白先表达的意思。

几个最典型的问题是:

  1. **思路混乱:**下面几个框在写业务的系统,上面画了一个vue或者webpack的框。

  2. **层级混乱:**底层写的是native容器,上层画了个api gateway。

  3. **答非所问:**要求画业务大图,结果画了一堆前端脚手架的关键字,或者画成了流程图。

如果看到这里,不明白画图是干什么的同学,可以去查一下架构图是什么,以及如何做程序设计。这经常是被大家忽略的事情,虽然很多同学在大学里学习的时候,都学过相关的课程,但是估计大部分都还回去了。

▐  怎么画好一张图?

这里不做具体的展开,毕竟我自己也不是画图高手,每次画图也是迟迟不知如何下笔。只给到几个建议,供大家参考。

同时,以一个模拟面试同学的案例来做参考。

原图:

第一步,先想明白这张图要表达什么?

这位同学说他参加过很多技术会议,看那些分享的ppt里面的大图,都很酷炫,自己平时也有总结(这点非常好),但是总画不出那种图来。面试过程中我问了这位同学,这张图他想表达什么,答案是他想说明白消息通信业务的技术方案。但是,这张图并不能表达出一个技术方案来。

这张图第一个问题是不够完整,他只有一条主链路,对于IM这样的复杂技术产品,主链路只是冰山一角,如果真的只做了主链路,那么代表思考不够,早晚会出现线上故障。

第二个问题在于含义不明与层次混乱。最下面的UI层有个箭头指向存储层,那是指渲染进程会去调用localStorage?那再向上2级的网关层呢?UI层会调用网关层?这里显然逻辑是不通顺的。

第二步,图里的每一个大块必须是同一个领域或类似概念的,每一个框都有意义

在这个问题上,这位同学做的还是很好的,但也还是有些小问题,比如UI层里的两个进程。这两个框显得意义不明,在没有描述的情况下,至少我是不明白他想表达的意思,而实际在沟通过程中,他也觉得这里挺奇怪的。

第三步,画完回顾一下是否描述清楚了第一步里的核心逻辑

很多时候我们一气呵成画了一张大图,结果一不小心容易画成一张流程图,把怎么写代码的思路也画到图上了。这就会导致图上有些地方是模块划分,而有些地方则是细节流程,整体就很失调。这只能通过反复的回顾和思考,进行自我调整了。

最后,我给出当时模拟面试时,对于这个业务的粗略设想:


知道原理有什么用?(技术如何赋能)



有了大图,我们终于可以开始实现亮点了…吗?

现实很残酷,哪怕我们想出了一个大饼,并不代表我们能吃到嘴里,从图变成面饼,我们需要太多的中间步骤。

而摆在技术人面前的问题是:如果有面粉了,你会揉面吗?你揉面的技术能保证烤出来的饼好吃吗?

总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

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

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

前端面试题汇总

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐