本文是笔者在春季在@前端早早聊(手动笔芯)的面试专场分享的文字稿,主要针对前端社招,校招和实习的同学仅供参考,感兴趣的同学可以点击链接查看PPT和录屏——《前端如何提高面试大厂的通过率》
字节跳动秋季招聘提前批已经启动,欢迎投递幸福里业务线,内推码:WPBP917,大量HC,帮忙跟进面试进度,详细介绍可见文末。咨询内推事宜可加微信389399428.
内推码:WPBP917
字节跳动幸福里2022届校招提前批简历投递通道:
【前端校招(北京)】投递链接: https://jobs.toutiao.com/s/eggqpqB
【前端校招(上海)】投递链接: https://jobs.toutiao.com/s/eggvKXF
【后端研发(北京)】投递链接: https://jobs.toutiao.com/s/egguv2k
【后端研发(上海)】投递链接: https://jobs.toutiao.com/s/eggc5KV
【客户端研发(北京)】投递链接: https://jobs.toutiao.com/s/eggCRQy
【客户端研发(上海)】投递链接: https://jobs.toutiao.com/s/eggsaT2
【测试工程师(北京)】投递链接: https://jobs.toutiao.com/s/egpTbcm
【测试工程师(上海)】投递链接: https://jobs.toutiao.com/s/egsBFL3
【推荐算法工程师(北京)】投递链接:https://jobs.toutiao.com/s/egpKjpu
【风控算法工程师(北京)】投递链接:https://jobs.toutiao.com/s/egKMdoY
【架构工程师(北京)】投递链接:https://jobs.toutiao.com/s/egwoeJg
【NLP工程师(北京)】投递链接: https://jobs.toutiao.com/s/eggcPSg
【大数据工程师(北京)】投递链接: https://jobs.toutiao.com/s/egp64sQ
实习岗位:
【后端实习(北京)】投递链接: https://job.toutiao.com/s/eggoDGW
【前端实习(北京)】投递链接: https://job.toutiao.com/s/egK96v7
社招岗位:
【前端社招(北京)】投递链接:https://job.toutiao.com/s/egKU4x6
【前端社招(上海)】投递链接:https://job.toutiao.com/s/egK98pD
一. 废话暖个场
对于前端工程师来说,“跳槽”通常是提升收入水平的有效途径,但它也同时意味着你需要花费额外的时间和精力去准备面试,尤其是对于那些只有中小公司从业经历且首次备战大厂的同学而言是非常困难的。你看到很多人因为进入一线互联网公司而薪资大涨,却没有看到为了拿到这样的结果,他们在3~6个月的备战周期里付出了多少心血。那么我们应该如何看待技术面试,又如何来更好地备战前端面试呢?本章笔者就和你一起来聊聊面试那些事儿。
二. 战略主线:以战养战
如何提升大厂的面试的成功率?一个主要战略就是“以战养战”。很多候选人都能够耐心地花1到2个月时间来整理复习专业知识,但是面试的表现却总是不尽人意,因为“知识储备”和“面试技巧”本来就是两码事。所谓“以战养战”,就是不断参加面试,以此来提升自己的面试技巧,直到自己内心毫无波澜,这个时候再去冲刺大厂,成功的几率通常会大幅提高,本质上就是一个熟能生巧的过程。因为你怕面试,缺乏面试技巧,所以才更要去面试。大家肯定以前都上过学,其实备战大厂和备考是非常类似的。我们每个学期都要参加期末考试,但却很少为此而感到特别焦虑,即使考试前会觉得紧张,也很少会达到焦虑的程度,因为你平常的主要任务就是学习,几乎每天都会写作业做练习题,不仅要参加月考和期中考试,到最后可能还有老师从不知道什么渠道找来的各种真题试卷。大量的日常练习和模拟考试后,那些知识点你早已了如指掌,自己有几斤几两心里基本是有判断的,期末考试不过就是走个流程罢了。
其实面试的最佳状态也是如此,只是候选人都会花大量的时间去复习知识点,而对实战演练的关注度不够,有的甚至压根都没怎么复习,仗着学校学历的优势直接投递大厂,自己还觉得只是想满足一下好奇心,结果莫名其妙地在面试记录里永久地留下了差评记录,导致未来的1~2年甚至更长的时间里,HR都不愿意再给你面试机会。复习的过程中,你的知识储备一直在增加,但面试本身的技巧不会因此提高,以至于很多人在真正面试的时候语无伦次,甚至在压力面或者边界测试的环节直接情绪崩溃。所以你要练习,去实战,实战的心态和做练习是完全不同的,只有反反复复经历这样的刻意练习,你才能够在真正的面试中稳定发挥。需要注意的是,千万不要拿大厂去做面试练习,大厂的面评都是有记录的,如果评价不好,对后续的影响是很难评估的。
参加实战练习的方式有很多种,比如找已经身在大厂的朋友帮自己做模拟面试,很多技术论坛也提供这样的服务,由大公司的资深面试官来帮你模拟面并提供指导,当然最简单粗暴的方式就是在招聘软件上按待遇水平划分梯度来投简历,直接参加面试,这样的好处是你会遇到各种不同风格的面试,心理承受能力会提高得很快,拿到的优质Offer也可以增加信心,并帮助你撬动更好的Offer。需要注意的是,每次面试回来你都需要整理面试中的知识点,查漏补缺,夯实基础。当然这个阶段通常也需要在掘金、牛客网等技术论坛多看看别人的面经,看面经并不是让你评估自己能答上来多少题,而是针对那些不会的题去查漏补缺。在真正面对大厂的考核之前,所有的准备过程都是练习,你需要从这个过程中汲取更多东西,针对自己实战中答的不够好的点再去加强,去调整自己表达的提纲,或者去完善简历的细节等等,等到真正冲击一线企业的时候,你可能早就因为重复练习次数太多而内心里毫无波澜了。
三. 解构面试
大公司的面试通常都是标准化的,这也就意味着只要你满足了客观要求,很大概率是能够拿到Offer的。前端面试的要点大致可以分为简历、基础知识、数据结构和算法、框架&工程能力和综合素质这几个关键模块,比较合理的节奏是用3~6个月的时间将它们各个击破,然后去接受市场的检验,下面我们就针对这些关键点进行逐一解读。
1.简历
首先是简历环节,作为考核流程的第一道门槛,大多数候选人对于它的重视程度是远远不够。简历其实是面试官对你做事情态度的第一次考察,而面试的过程,更多是对简历内容真实性的检验罢了。当面试官不认识你的时候,简历其实就是你建立第一印象的机会,如果你还以为简历就是“简单讲一下自己过去的工作经历”,那就真的想的太简单了,有的候选人甚至连简历上的排版都懒得对齐。在网上找一个简洁的模板并不会花费太多时间,但至少在某种程度上表现出你对这个岗位的重视,关于如何组织简历的内容,我们来讲讲2个比较重要的部分。
首先是项目经历,很多候选人在写项目经历时,都是大致陈述一下自己所用的技术栈,然后描述某个项目做了一件什么事情、实现了哪些页面或功能。其实这是一种非常典型的无效描述,因为它机会没有传递给面试官任何能够为你加分的信息。那比较推荐的做法是什么样的呢?你可以遵循STAR原则,也就是通过Situation(背景)、Target(目标)、Action(行为)、Result(结果)来梳理自己的项目,简短地描述项目的背景和目标,最好各一句话就可以了。首先因为业务细节很可能是涉密信息并不方便详细介绍,其次是面试官更感兴趣的是你在项目中使用的技术、处理问题的思路、自己的收获和成长、对团队的贡献等等,也就是关于Action和Result的部分,而且面试本身就是为了评估你是否符合公司岗位要求,而不是为了评估你之前参与的业务。这里如果有设计文稿或者数据支撑是最好的,你可以先简单介绍一下使用的技术栈,然后用一些具体的例子来体现自己的技术、业务或是管理能力,例如:
- 承担了某个问题的技术攻关任务
- 负责某个系统的整体架构和技术选型
- 沉淀了可复用的组件、模块
- 性能优化使得某些性能指标提升
- 支撑紧急或重要业务取得了良好的结果
- 带领团队一起做事
-
推动某种SOP流程,提高了团队协作效率
……
必要的时候,你也可以准备一些脱敏后的设计图或是作品面试时展示。你需要知道的是对于项目经历的描述本质上是一道证明题,它需要你列举项目经历中的事实和数据,来说服面试官相信你拥有不错的技术能力、业务熟悉度或者团队管理能力,而不是真的让你去讲项目本身的业务细节。面试过程中做项目陈述的时候依然可以遵循STAR原则,条理清晰的表达是职业化的表现,当然希望你在面试前已经把这些内容练习过非常多次。
其次是关于技术能力的描述,大致可以分为编程语言、计网原理、设计模式及架构、数据结构算法、框架原理、全家桶的使用、性能优化和其他加分项(比如某个细分领域的专项经验),每个点写1-2句话基本就很丰富了,如果还是觉得写不出,有一个更简便的办法,就是找到目标部门的招聘信息,围绕着其中的招聘要求来写就可以了,当然底线是写上去的技术点你要真的能讲清楚。这里需要注意的是尽量使用“熟练掌握”、“了解”等字眼而避免使用“精通”,它极有可能增大你面试的难度,可能是某个面试官正好也对这方面有研究想切磋一下,也可能是某个素质并不高的面试官就是想恶意刁难,无论是哪一种,对于候选人来说都是不利的。
总的来说,简历是你提供给⾯试官的“开放题考纲”,你写在里面的东西,面试官必然默认你已经掌握了,而且是可以讲得不错的,千万不要给自己挖坑,连自己写在简历上的内容都讲不清楚是非常减分的。简历并不是你过往工作的“流水账”或是“功劳簿”,而是只要面试官说一句“请开始你的表演”,你就至少能条理清晰地讲10-15分钟的内容,把用到的技术从底层原理、设计思想、最佳实践等等都讲的清清楚楚的,让听的人感受到你对技术有追求、对业务有思考、对团队有贡献,这并不是即兴演讲,而是多次刻意练习之后才能做到的。多花一些时间打磨简历和自己的表达能力,等到真正面试的时候,你一定不会后悔。
2.基础知识
在常规面试流程里,简历通过评估后,你需要面对的第一轮考验就是前端基础,除了考察领域基本知识的掌握情况外,这个环节其实也是对候选人态度和信息过滤能力的考察。为什么这么说?因为大家知道基础知识主要就是靠背诵,我们开玩笑称之为“八股文”。这个环节其实不同的候选人都有自己需要面对的挑战,在校生记忆力比较好,但很可能由于缺乏实践经验导致对一些知识点理解不深,很难顶住对细节的追问;而社招候选人离开学校太久,对知识的理解和最佳实践会有更深的理解,这时记忆反而成了较大的挑战,但如果你有练习前文中介绍的记忆法,那么相信记忆对你来说也并不困难。
有经验的面试官通常会在评估社招候选人时更关注他对知识理解的深度,而评估校招候选人时优先关注知识广度,如果把评估标准对调一下,很容易产生“怎么连这么简单的东西都不知道”的错觉。这也是笔者希望大家认真准备简历的原因,面试有一定灰度和主观性的,想给你机会的面试官会帮助你挖掘亮点,而不想给你机会的面试官会揪住你的弱点不放,简历的印象分这种时候可能就会为你争取到额外的机会。笔者自己在面试中两种状况都遇见过,不得不说后一种真的会让整个面试过程特别压抑。有的人说这些东西平时又用不到,而且并不影响平时做业务开发,我为什么要浪费大量的时间背这些东西呢?
之前有个创业的朋友跟我讲,其实每一个小的创业公司,都希望自己做出的产品是可迭代的,今天做出一个产品,获得了一批用户,然后用户有反馈,我来做功能迭代,接着吸引更多用户,就去打磨这个产品,不断地积累直到最后这个产品做成功。每个创业者都是这样希望的,因为这样的对公司来说成本是最小的,但实际上你会发现大部分中小企业都不太可能很幸运的有这样的机会,都是摸爬滚打。今天做这个项目,明天做那个项目,最开始的两三年,对一个小公司来说活下来就是最大的问题,谁都很难保证自己当下在做的事情对未来一定是有积累的,有的时候你不得不去做一些看起来没什么意义的事情。面试备战中背基础知识也是类似的道理,当你还没有能力去改变规则的时候,抱怨其实是没有用的。你知道什么事情是必须做的,只要下决心去攻克它就可以了,而不是说去抱怨这个规则来唤起其他人的共鸣,因为抱怨太廉价。
关于基础知识笔者想说的是,它并不是研究的越深越好。因为复习的时间总是不够的,你需要做的是 “在有限的复习时间内尽可能拿到更高的分数”,而不是去追求所谓的“吊打面试官”。 比如说编译原理,现代化的主流前端技术底层几乎都会基于它,很多朋友问我是否需要买那本厚厚的《编译原理》来系统学习,我通常都会开玩笑说“你要觉得显示屏高度不够的话就买吧”。大部分前端工程师连工作中最常用的技术栈都还没掌握好,更不用提那些工作中几乎用不到的底层知识了,“掌握这些知识就会变得很厉害”可能只是你一厢情愿的错觉罢了。技术是个无底洞,我们不会的东西太多了,你不了解编译原理,很可能只需要学习一下the-super-tiny-compiler这个开源项目就可以了。它是一个非常简短项目,实现了一个简易编译器,代码中有非常详细的注释,你可以通过阅读源码来了解编译原理的各个阶段所做的事情,代码的范式,用到的设计模式等等,然后尝试自己来实现,思路卡住的地方再返回去读源码,等最终自己造出***后,你掌握的编译原理知识基本就够用了,然后在项目中遇到问题时可以考虑通过Babel、EsLint、PostCSS插件来解决,试着去编辑一下抽象语法树,如果能在团队内部做一些技术分享那就更好了。再比如面试考察V8,实际上很大概率都会落到三个知识点。第一就是对象的快慢属性,第二就是Orinoco垃圾回收,第三就是V8为什么快,它涉及到V8如何解释执行JS的一些过程,你只需要按照关键词去搜索一些资料进行专题学习就可以了。
之所以说基础知识是对态度的考察,是因为社区里的面经或面试专题已经可以涵盖90%以上的题目了,基础知识的考点根本就不算是什么机密,只是你自己没有给予足够的重视罢了,比如常见的“数组和链表的区别”这道题目,有的人就只了解基本数据结构和两者在选型方面的倾向,但有的同学就会顺藤摸瓜去复习单链表、双向链表、循环链表以及全O(1)复杂度的数据结构和LRU算法等等,看起来大家刷了一样的面经,但最终结果可能就大相径庭。你需要经常提醒自己,基础知识的复习是一个限时游戏,你需要在纵向探索和横向发展之间找到平衡。
3.算法题
数据结构和算法的考核已经成为面试大厂必须要面对的挑战了,它是对候选人聪明程度和抽象能力的考察,某种程度上也是对于态度的考察,因为不愿意学习数据结构和算法而直接打消了面试大厂的念头的人并不是少数。由于大学里并没有专门的前端专业,很多开发者都是通过自学或培训班转行进入这个领域的,在这样的背景下想要通过自学来掌握数据结构和算法题这类相对抽象的知识,需要付出的努力可想而知的。
那我们该如何攻克这个模块呢?笔者认为误导性最大的建议就是“刷题”,或者说还没有学习基础知识的情况下开始刷题,这就好像上学的时候不看课本直接做课后题一样,很容易得到事倍功半的结果。数据结构和算法基础本来就是一门课程,有其自身的基本理论知识和技巧,解题的过程其实就是从实际问题中识别出抽象模型的过程,如果你连常见的抽象模型和它们的特点都不知道,面对题目的时候没有任何逻辑线索,刷题时没有意义的。你所做的事情,可能只不过是看着题目发呆20分钟,脑子里一片空白,然后去看答案背代码,刷了很多类似的题后,你可能会因为总结出一些解题套路而沾沾自喜,殊不知很多技巧可能早就作为数据结构的特性写在书本里了,根本就不需要你自己再发明一次。这种备战方式会让你的面试表现更依赖记忆力和运气,而不是逻辑思维,刷过的题就更容易做出来,没刷过的题或者稍微变换一下就可能束手无策,更不用说关于数据结构的选型思路或算法复杂度分析的话题了。所以希望你在刷题之前,先来建立基本的知识体系,搞清楚各个抽象结构的特点和常见操作的编程套路,认真做课后练习,然后再去刷题,这时你会发现自己更容易识别出题目的特点,是在考栈、队列、链表还其他结构,适合用哪种算法等等,这样可能并不需要刷太多题就能够达到大厂面试的要求,毕竟你面试的不是算法岗位。当然这方面知识掌握得越牢固,给面试官的印象通常也会更好。
很多算法题的解法并不唯一,在真正面试的时候,你可以先使用暴力解法写出一个能运行的程序,然后再尝试使用复杂度更低的方法,这样即便没能写出更优的解法,至少也能保证这个环节是通过的。如果实在觉得没有思路,可以请面试官给予提示,或者要求更换题目。毕竟如果面试通过的话,你就是面试官未来的同事,尝试沟通一下又有什么关系呢?
4.框架&工程能力
框架和技术能力的考核通常会出现在第二轮面试中,用于考察候选人的技术深度、技术广度和工程化能力,最常见的问题就是项目经历和框架源码原理的掌握,如果你也在写简历时已经觉得自己“项目没亮点”或者“技术没深度”,可能更需要的是推迟面试的计划,专门花一些时间去做相关的积累,可以针对自己工作中的项目来挖掘,也可以另起炉灶自己做一些技术性更强的项目,而不是因为看到别人拿到心仪的Offer就觉得迫不及待,满脑子都是如何为了面试而“临时抱佛脚”。
首先如果你在日常开发中没有做项目复盘的习惯,那么一定要现在开始养成这个习惯,每个需求迭代做完后尝试从项目、技术、管理三个方面去反思一下,最好能主动去找自己的直属领导或导师去沟通。笔者自己在做一线开发时,工作中所有的经手的项目都会编写开发纪要,内容包括这个项目有哪些协作方,每个人提供的资料分别是什么,重要的会议记录,过程实施中出现了什么问题,自己的代码设计方案,每天的工作日志,遇到了什么问题,自己有什么想法和建议。等到特性发布上线后,自己会专门拿出一天来,针对遇到的每个问题去查查业界的解决方案,或者提出自己的技术规划,并在未来的1-2个月来落地。这样的方式看起来很傻,但对于理清思路真的很有用,大家做的项目都是一样的业务开发,但我相信用心的人会收获更多。后来自己也把“开发纪要”沉淀成文档模板,分享给其他同事,要求自己指导的实习生每一轮迭代完后必须主动把开发纪要发给我,我会和他们一起来进行简单的复盘梳理。当你真正用心去做一些事的时候,进步就会更快,也正是这些看似无关紧要的小习惯,最终形成了你和别人之间的巨大差距。
其次,你可以去技术社区找一些整体设计方案类的文章,然后参考作者的思路来尝试复现一套系统,最好是能够和自己的工作实践结合起来,也就是所谓的“造***”,这里的关键点在于你一定要自己动手把这个系统做出来。在字节的新人培训会上,主管经常会问新人这样一个问题:“字节为什么要花很大的成本自己来深耕垂类领域,而不是直接收购其他公司呢?”其实这其中的道理是一样的,因为只有“躬身入局”才能获得对市场的“一手信息”,从而建立正确的认知,并以此作为商业决策的依据。你可以尝试自己动手去落地一个项目,无论是关于埋点、告警监控、低代码搭建、数据可视化等等任何一个领域都可以,在这个过程中你可能会产生很多关于细节的疑问或者新的想法,这时候再跟朋友讨论或者直接找文章的作者去咨询,通常都会有不小的收获,很多时候你甚至会发现自己的思路和别人有非常多的契合点,这对自己而言是非常棒的精神鼓励。
对于你工作中使用的主流开发框架,无论是
React
、
Vue
还是
Angular
,如果日常开发中确实没有遇到过什么技术问题,可以去官方代码仓的Issues里面去找,可能会有意想不到的收获,里面的问题可真是应有尽有,尤其是框架版本迭代的时候有可能都会带出非常多意料之外的影响,比如
Vue2.x
版本中对于
nextTick
方法的底层实现方法就发生过好多次更改,在应用层引发了很多莫名其妙的问题,这其实就是一个非常容易从问题下沉到实现原理,再下沉到设计思想的问题,很值得去研究探讨,面试时也不至于面试官问“使用框架的时候有没有遇到过什么问题,是怎么解决的呢?”,你只能风轻云淡地回一句“没有遇到过”,然后两个人四目相对,场面尴尬至极。
5.综合素质
面试的过程,通常前期比较侧重从对基础知识和技术能力的考察,而越到后期越注重对综合素质的考察。想要在综合素质的考察中表现出色,除了平时需要关注程序的设计思想、业界的技术会议、技术活动等等做好谈资的积累,还需要去练习自己口头表达的逻辑性和条理性,也就是掌握职场技能中非常重要的“结构化思维”。逻辑思维能力并不一定是与生俱来的,它是一项技能而不是一种天赋,这就意味着普通人通过学习和练习都是可以掌握的。关于“结构化思维”的话题,你在网上可以找到很多相关的资料,它们可能涉及到
“金字塔原理”
或者
“麦肯锡方法”
之类的关键词,笔者接下来只做一些简单的介绍。无论多好的方法,你都需要通过练习和实践把它变为自己的技能后才会受益,“知道但做不到”的人满大街都是,希望你不要成为其中的一员。
“结构化思维”通俗地讲就是指你在描述一件事情前,对于如何描述这件事有一个“自顶向下”或是“分解结构”的思维框架的,相当于头脑中有一个大纲,这样在表达的时候更容易表现出思维的条理性,而不是让人觉得你想到哪说到哪。比如这样一道智力题,200毫升水怎么放到100毫升的杯子里?很多人可能会说喝掉一半水,或者说换个大杯子,或者其他什么答案,越脑暴越开心,还觉得自己想象力特别丰富,问题在于这道题压根就不是用来考察你的想象力的,想象力是右脑的能力,而工作中更多地需要左脑的逻辑思维能力。
那我们如何让自己的表达更具有条理性呢?首先200毫升水为什么无法直接放进100毫升杯子,因为水比较多杯子容积比较小,那么解决这个问题的两个主要方向就是:1.尝试减少水的量,2.尝试增加杯子的容积。然后再分别向着这两个方向完善,这样听的人就更容易跟上你的思路,因为它心里已经有一个提前声明的认知结构(就是指分为两个主要方向)。如果你仔细想想就会发现,上面的思路似乎并不完备,比如我们可以将水冻成特殊形状的冰块,变成固体后它也能放在杯子里,这种情况下水的量也没有减少,杯子的容积也没有变大,但依然可以满足题目的要求,你可能会突然意识到最初的思维框架并没有考虑到水的形态造成的影响,那这道题是做错了吗?不重要。还记得吗,面试考核的重点永远都是你,面试是为了评估你,对面试官而言重要的是看到你面对一个问题是如何分析思考和规划的,有条理地描述自己如何分析一个问题比问题的答案更重要。
我们再来看一个经典三分法结构“是什么,为什么,怎么样”的实例。有一次技术群里大家在讨论一道前端面试题“TCP连接为什么要握手三次”,当时就有人给抛出答案说,因为服务端的socket是有数量限制的,他说的可能是对的,但是我确实没能明白这个答案跟问题有什么直接关系,也有人给出了这样的回答“因为三次握手更可靠,客户端首先发送XXX报文给服务端......”我当时看到这个题,脑子里很快就拟定了“是什么、为什么、怎么样”的提纲,接着就在群里分享了自己的思路:
- 先提及一下自己会按照“是什么”“为什么”“怎么样”这三个点来解答,给听的人一个基本的认知框架和心理预期
- 是什么?首先讲什么TCP,它是一个讲究可靠的全双工连接
- 为什么?讲为什么三次握手就可靠,两次的话可能发生什么问题
- 怎么样?详细聊聊TCP连接在三次握手时报文中的关键信息
如果把“结构化”的陈述从答案中去掉,其实和你给出的答案基本是一致的,但有了“结构化”的辅助,整体的回答就容易让听的人觉得更清晰。如果你对
HTTP3
有一定了解,就知道它的底层是基于
UDP
协议来传输的,但依然需要做到可靠传输,在解答完整个题目后,你就可以很自然地主动引导话题“其实说到可靠传输,
HTTP3
中尽管使用
UDP
协议,但是......”,这样面试中就很容易把话题延续下去,把一个话题聊开聊透是非常能够提高面试官好感度的,当然这对于你的知识储备也是一种考验。
当然上面的示例并不是唯一的“三点结构”,当我们复盘项目时可能会按照“事前、事中和事后”来拆分,再比如谈及能力模型时通常会按照
“技术、业务、管理”
来拆分,再比如之前提及的
STAR
原则就需要4个维度,业务上做用户留存分析时常用的
AARRR
漏斗模型,就是将用户生命周期分为5个阶段……更复杂的问题可能有更复杂的方法论,它们的价值就在于帮助你将高复杂问题的问题分解为多个或者多级低复杂度的问题,从而为解决问题寻找到突破口。结构化思维的练习其实就是帮助我们练习职场中分析思考问题的基本模式。至于如何更有效地培养结构化思维,你可以阅读更多专业的书籍,本文不再展开。
除了表达技巧,平时对于行业动态的关注也很重要,你可以尝试自己写技术博客,关于如何写作,前面的文章已经介绍过了,你需要做的是主动思考,而不仅仅是摘抄知识点;另外也可以多关注国外的技术会议,你会发现面试中遇到的很多开放题,通常都可以找到一些业界大咖在技术演讲中分享自己的观点。为什么提到国外的技术会议?国内大会的技术分享更关注技术的实现细节和业务实践的应用上,如果没有相关的背景知识或领域知识是很难听懂的;而国外的大会在设计思想和问题本身上探讨的非常多,很多都是在讲自己遇到了一个什么问题,是怎么思考的,怎么解决的,现场演示的代码看起来也比较简单,因为很多复杂的技术方案都沉淀到底层了,这些知识实际上对于大家在面试时回答开放题是非常有帮助的。比如面试中可能经常会被问到
React
和
Vue
框架该如何选型,你可能已经有自己的答案了,但如果你看过尤雨溪在2019年JSConf上的主题演讲
《在框架设计中寻求平衡》
,再结合自己的认知,也许就能得出更棒的答案。另一方面,国外的技术分享视频中经常会带有大量的动画,这对于开发者理解一些抽象的概念或者过程是非常有帮助的,希望你不要错过。
四. 尾声
每一份令人羡慕的成功背后,都有着不为人知的努力和付出,你会发现其实备战大厂面试的思路和我们以前上学时学习考试并没有什么本质区别,认真去做了,结果总不会太差,愿你能坚定地做自己喜欢的事,愿你能早日取得心仪的Offer。关于面试的话题,如果你还有什么希望深入探讨的,欢迎直接与我联系。
五. 字节跳动幸福里前端招聘
社招、校招、实习均在火热招聘中~
幸福里
幸福里是字节跳动旗下集内容、社区、工具于一体的房产信息、服务、交易平台。产品基于个性化推荐引擎向用户推荐优质的房产内容和全面、真实的房源信息,致力于为用户提供全面、专业、可靠的购房决策支持。
幸福里始于2018年8月,是国内发展最快的,集内容、社区、工具于一体的房产信息与服务平台,业务覆盖一二线共23城,现累积注册用户千万,目前进入高速增长期,等你一起野蛮进化~
幸福里前端团队
幸福里FE团队诞生于2018年9月,从最初的4人组成长到今天的50人,成员年龄跨度从90后到00后。技术栈覆盖当下前端主流全方向(Vue/React/Typescript/nodejs/webgl/flutter/Taro),团队内大牛多多,技术氛围浓厚,有VR专家老吴、3D渲染一哥博哥、《Flutter实战》作者wendux、深谙Web框架及工程化的董老师、以及技能树满点的杰哥等等,还有,团队经常组织线下学习及娱乐活动,是一个开心且战斗力极强的team。只要你觉得自己够出色,或想让自己变得更出色,还等什么,放肆地加入我们吧。
实习生福利
我们会为每一位实习生配备一名mentor进行日常决疑解惑和指导,同时我们针对不太熟悉前端的同学进行一个专门的筑基培训,帮助快速补齐前端基础,以及明确后续学习和成长路线。
蹭一波热度
感谢你坚持到最后,推荐我的个人技术博客https://github.com/dashnowords/blogs ,如果看完对你有帮助,可以帮忙点个Star,非常感谢!