禁止任何对指定内容的修改,确保内容的原样呈现。
2019年年末,我结束了在一家工作了两年半的公司的工作。随后,我花了半个月的时间来准备面试,包括研究面试题目和练习算法。半个月后,我开始向阿里、百度、快手和字节跳动等公司投递简历。尽管阿里的一面面试因为电话面试的匆忙而未能通过,但百度、快手和字节跳动都进行了现场面试。最终,我收到了这三家公司的offer,并在其中选择了字节跳动。
三家企业的面试流程均为三轮技术考核加上一轮HR面试,实际上,不论哪家公司的面试,所涉及的问题都颇为相似,答案也大多能在网络上找到,它们无一例外地都收录在某篇面试题汇总文章中。技术本身并无二致,即便提问方式各异,其本质或原理仍旧相同。若想了解详细的实际面试题目,掘金、牛客网、知乎等平台上有大量资源,稍加搜寻便可知足。
与其直接给予他人鱼,不如教会他们捕鱼的方法,因此在这篇文章中,我发现了更多我认为值得分享的内容。为了防止文章篇幅过长,我决定不逐一详述我在这些公司所遭遇的具体问题,但每家公司我都挑选了两句给我留下深刻印象的例子。
百度
百度成为了我在阿里咔公司离职后所投递的第一家公司,而当时北京的招聘情况允许进行现场面试,因此我决定亲自前往百度参加面试。
在面试中,提问大多围绕基础技能展开,特别值得一提的是,在三家面试中,百度是唯一一家向我提出CSS相关问题的公司。面试官现场从其正在处理的项目中选取了一个布局案例,要求我编写样式并完成布局任务。这次任务并非要求我使用圣杯布局或双飞翼布局等特定模式,而是主要考察我对CSS的灵活运用能力,需要我运用一定的思考。
在二面环节,他们也提出了一些基础问题,主要关注的是各种场景下的解决方案或设计思路。至于算法方面,只问了一个关于二叉树后序遍历原理的问题,难度不大,我很快就顺利完成了。
面试官似乎更注重了解我的背景,先是让我回答了一个关于场景设计的题目,接着便展开了对人生抱负的探讨,询问我为何离职、未来的职业规划、在先前团队中的贡献、遇到的挑战以及如何克服它们,还有在加入百度后我打算从事哪些工作。这些问题在我看来,远比技术问题更难以应对,因为它们太过抽象,我甚至不清楚该如何作答。尽管如此,我并未直接追问面试官具体意图,而是依据自己的理解逐一作答,同时还要留意面试官的反应。这个过程持续到面试官觉得满意为止,让我说得口干舌燥,我更希望他们能多问一些技术问题。
总体来看,百度的这次面试更侧重于对实际操作能力的评估,提出的问题都极具实用性。若应聘者曾在实际工作中遇到过类似问题,或是阅读过相关资料,那么在回答这些问题时通常不会有太大难度。
百度的业务板块中,百度APP占据着核心地位,可被视为公司的主要业务线,我一直都很向往能够加入其中。然而,由于种种缘由,最终我还是选择了放弃这个机会。
快手
面试依旧侧重于基础知识的考察,面试官的技术专长在于React,而我则熟悉Vue。尽管如此,面试官并未给我带来困扰。他针对Vue的相关问题,如响应式原理、diff算法、观察者模式等,提出了一些常见的面试题。由于我之前系统地研究过Vue的源码,因此对这些问题的回答并不费力。在回答完毕后,我顺带向他详细介绍了Vue的执行流程和源码的内在原理,内容颇为丰富,面试官对此表示满意。
我询问了关于原型链等较为复杂和抽象的概念,随后提出的问题中有一个是关于洗牌算法的。我觉得这个问题并不太理想,因为洗牌算法相对独立,不属于回溯、动态规划或分治等常见算法。它不是一个可以触类旁通的题目。如果你恰好熟悉洗牌算法的实现,那么只需几行代码,你几乎可以闭着眼睛就能完成。但如果你对它一无所知,可能就算绞尽脑汁也难以着手。当然,换个角度想,运气也是实力的一部分。
这位可能是团队的前端领导,与百度三面面试的问题相仿,先是进行一道场景设计题目以测试技能运用,随后便开始探讨关于人生规划和理想的话题。
概括而言,快手的面试内容相当全面,而且在与前端负责人交流时,彼此间颇感投缘,整体感觉十分匹配。此外,快手是我主动申请的最后一家公司,面试结束后,我紧接着就踏上了回家的路,准备迎接春节,并期待着年后能够加入公司。然而,最终未能如愿,原因是我选择了跳槽至字节跳动。
字节跳动
原本并未有投递字节跳动之意,恰逢春节假期在家闲逛,字节跳动的人力资源部门却从简历库中检索出我的资料,主动来电邀请我提交申请。他们提出年后可通过视频面试,经过一番思考,我决定试一试,毕竟闲暇时光,若快手那边出现意外,此路也可作为退路。于是便约定了视频面试的时间,未曾料想,面试机会就这样意外降临了。
面试官中有三位是我的直接上司,与他们交流后,我感到彼此都很投缘。其实,早在一年前和半年前,我就已经向字节跳动投递过两次简历,第一次成功通过,但最终因为某些原因我选择了放弃,第二次则未能通过。如今,我已经第三次尝试,幸运地通过了。然而,我陷入了纠结,因为我已经接受了快手的offer,如果现在反悔,似乎不太合适。但转念一想,这或许就是命运的安排。我觉得即便这次不能加入字节跳动,将来迟早也会成为其中一员。与其晚些时候加入,不如早点行动,因此,我只能对快手那边表示歉意了。
成功面试的几个经验:
通过这些面试经历,以及我阅读过的相关面试经验,我略微归纳出了大厂面试成功的一些关键要点。
学历
这一点很容易明白,不论你从事工作的时间长短,人力资源部门或面试官在浏览简历时,首先关注的往往是学历。这是简历评分的一个非常直观的依据。虽然拥有优秀的学历并不保证你能顺利通过面试,但它确实能确保你的简历能够通过初步筛选。许多人可能正是因为学历这一门槛,而无法进入面试环节,即便他们具备丰富的才能,也无法得到展示的机会。
这亦是情理之中,毕竟大型企业收到的简历数量庞大,人力资源部门不可能为每一位求职者提供面试机会。若不然,面试官除了这项工作外,即便全天候工作,加上连续抽签也难以完成面试任务。学历往往成为筛选简历的一个直观标准。
工作经历
既然学历问题已经既成事实,便无法更改,我们只能接受这一现实;然而,学历最关键的作用还是在于使简历能够顺利通过初步筛选。若你的学历水平无法确保简历通过这一筛选环节,那么你大可将希望寄托于一段出色的职业经历。
你的教育背景暂时无法让你直接进入大型企业,不过可以先考虑加入一些二线或三线企业,或是小型独角兽公司,这样一来,可供选择的机会就变得相当丰富。在这些级别的公司里,踏踏实实地工作两年,期间务必注重打好基础,切勿懈怠。
两年之后,你的身份标签可能并非学历出众,然而工作履历却颇为丰富,且具备较强的耐心,通常情况下,大型企业给你提供面试机会的可能性还是相当高的;一旦进入面试环节,那便是你展示自身实力的关键时刻。
这里有三点需要注意:
1、作为跳板的公司不能太小了
至少得是二线或三线企业,亦或是独角兽公司,规模较小的企业也不可能提供优质的项目经验;此外,面试官和HR很可能已经对你的公司有所耳闻。
2、不要频繁跳槽
即便你从腾讯转至阿里,再跳槽到微软或谷歌,即便你每半年换一次工作也无妨,然而,若你是从一家不知名的小公司跳到另一家不知名的小公司,那么即便一年只跳一次,HR也会觉得你跳槽过于频繁,认为你不够稳定;半年内跳槽更是难以接受。特别是当你身处小公司,却渴望进入大公司时,务必保持稳定,切勿让你的简历显得杂乱无章。
3、不要闷头搬砖
无论身处何地,工作内容大多集中在编写业务代码,这就像是日复一日地砌砖,然而,既然你已经下定决心将来要进入大型企业,那就绝不能仅仅满足于这种简单的砌砖工作,而应当让每一块砖都焕发出独特的光彩。
若在项目中发现某个部分结构不够完善,尽管勉强可用,问题尚不严重,那么你就需要思考自己不能将就,必须将其调整至满意状态,于是便付诸行动,直至真正解决问题;再如,若你感觉工作流程中存在重复的操作,不妨考虑是否可以开发一个工具来简化这一过程。
面试过程中,多数情形下要求你提供解决方案,主要考察的是技术在实际中的应用能力。几乎每一轮面试,我都会遇到这类问题。因此,你在日常工作中需要有意识地积累知识。仅仅埋头苦干,是无法完整阐述解决方案的。当然,一些基础概念如原型链、闭包、diff算法等,也常常会被问到。所以,你不能因为平时工作中很少用到这些知识就置之不理。即使你了解某些知识点,但若无法清晰表达,那也是不行的。务必真正理解并掌握。
总之,关键在于培养独立思考的能力,不能只顾着埋头苦干。搬砖这种活儿谁都能做,大家都是搬砖的,凭什么我能进大厂而你却不能?因此,你必须比他们更出色,即使没有条件,也要努力创造机会,勇往直前。
个人修炼
若你遭遇连连不幸,所任职的公司接连破产,或是上司们过于苛刻,导致你不得不频繁更换工作,那么自然也就难以积累出值得炫耀的优秀项目。即便如此,你的简历受损,也并非无法挽回。毕竟,外界环境虽然不可靠,但你完全有能力依靠自己的努力。
撰写博客,记录日常技术心得,分享摸索出的解决策略,投身或参与开源项目,将个人博客与GitHub打理得颇具规模,各类分析、源码、解决方案、开源项目一应俱全,面试官浏览一番后脸上露出满意笑容,如此一来,你还会担心找不到面试机会吗?
个人修炼也有助于我上面提到过的面试官喜欢问的场景设计题

在重构百度app首页的feed流时,需注意每条数据的展示效果,其功能与样式会因数据所属类别而异,例如广告、百家号、小视频等。点击这些数据流,用户可执行多种操作,如打开模态窗口、播放视频或跳转至新页面。面对这一需求,我计划如何进行设计呢?
此类题目涉及的知识点众多,提问范围亦较广,不涉及具体问题点,主要评估的是应试者的知识广度与深度、日常积累以及思考问题的角度等。上述题目并无固定答案。
此刻正是检验应聘者个人修为的时刻,有些人或许会显得茫然失措,随意说几句就不知如何继续,而有些人却能与你畅谈数小时仍觉得意犹未尽。若我是应聘者,我或许会从优化长列表、实现跨域或跨页面通信、配置化以提高可维护性、数据预加载、数据缓存、页面或组件的无缝切换及转场动画、离线包或SSR等多个角度来解答这个问题。若没有这些知识储备,便难以想到这些点。场景设计题不仅能让面试官全面了解你的能力,也是你展现才华的舞台,因此这类题目通常会被大型企业面试官提出。
然后也有几点需要注意:
1、高质量博客
既然博客是你展示个人技术实力的平台,那么首要任务是确保内容的原创性,确保这些内容真正属于你。若内容全是复制粘贴的API文档、他人的作品或是缺乏思考的入门教程,那这样的博客不如不写。面试官在阅读后,可能会质疑你的技术水平仅限于此。因此,务必保证博客内容的品质。
2、持之以恒
不能三天打鱼两天晒网,务必持之以恒,构建起一个连贯的体验。首先,这样能让人一眼看出你对这件事的认真态度;其次,也只有这样,你才能积累足够的经验。数十篇文章显然比几篇简短的文章更能让面试官全面地了解你。
亮点
这其实是一个在很多时候可以一招制胜的关键
在先前的一篇文章结尾处,我实际上已经对“亮点”这一概念进行了阐述,此处我仅是直接引用了之前的观点。
近期我参与了几次面试,注意到面试官们普遍倾向于询问我的个人优势,无论是从业务角度还是技术角度,他们都会根据我的回答进行深入探讨,进而观察我所提及的优势究竟有多么突出。
面试官若对你所擅长的领域进行深入探究,实则表明他们对你抱有较大的信任,毕竟技术领域如此广泛,你可能会遇到他提问的领域并非你所熟悉的情况,这种情况在面试中并不罕见。例如,你精通Vue,而他所在团队却使用React,此时他对你追问React相关问题时,可能难以得到满意的答案。此外,你也难以确保自己在每一场面试中都能发挥出最佳水平,万一你和面试官之间无法达成有效沟通,彼此听不懂对方的话语,那么面试又该如何继续呢?既然将决定权交予你,赋予你自主选择的机会,随之而来的是另一个疑问:若你未曾有过任何引人注目的事迹,那么即便给予了机会,你却未能把握住,这显然不能归咎于他人。
因此,若你的目标定位较高,即便日常只是编写业务代码,亦需保持独立思考。诸如,该组件是否可换一种编写方式?该需求是否可适当简化?项目中的webpack是否需要升级至最新版本?此问题是否可开发一个轮子,从而一次性解决?
无论问题大小,都能激发思考,通常来说,大问题并不常见,多数时候面临的是一些小挑战。然而,即便问题微不足道,频繁解决它们也能形成一笔可观的积累。凭借这样的积累,在团队中,你将拥有值得夸耀的成果展示;而走出团队,你也可以利用这些成果牢牢把握住面试官提供的机遇。
这种亮点往往比单纯背诵面试题目或练习算法更有价值,因为面试题目和算法题要么你会,要么你不会,而所谓的亮点却并非有固定的答案,你可以从多个角度进行阐述。
必须强调的是,你这项技能的卓越之处必须足够显著,不能只是短暂地闪耀,那样会让人眼花缭乱,它必须足够稳固和持久。
你务必确保在你所擅长的领域有深入的洞察和独到的见解,对整个产业链的上下游以及各个环节的细节都了如指掌,这样才能充分应对面试官可能提出的各种问题,从而让面试官认为你确实精通该领域。
软素质
1、简历用点心
简历作为招聘流程的初始环节,首要任务是挑选一个较为出色的模板,而网络上的选择相当丰富。
然后就是内容要好好写,切忌罗列毫无意义的技术点,什么
jq、vue、vuex、react、redux、http、cdn、vim、git等,并非不能提及,只是请避免过分占用篇幅,详尽地介绍它们。点到为止即可,关键是要凸显核心内容。
别声称自己通晓某项技能,因为每个人对“精通”的定义各有千秋。你或许认为精通意味着在任何场合都能自如运用。然而,面试官可能会质疑,既然你声称精通JavaScript,为何Vue框架是由Evan You所创而非你呢?这或许会让他们对你产生疑问,因此最好避免那些可能引发争议的话题。
详细记录你所参与的项目,阐述项目所采用的技术架构,以及项目的主要功能特点。同时,简要说明你在项目中的具体职责和角色。内容要精炼,避免冗长,像文档那样详细。面试时会有机会深入了解细节。对于三年以下工作经验的求职者,简历篇幅最好控制在两页以内。
若你在博客或GitHub上有所分享,不妨附上相关链接;若那仅是一个空荡荡的页面,缺乏实质内容,则大可不必展示出来。
此外,我建议在简历中附上一张个人照片,这样可以为简历增添一个具体的主语,使其具有鲜明的个人特征,而这与外貌是否出众并无直接关联,除非你确实觉得自己在形象上难以让人满意,那么在这种情况下,或许可以不考虑添加照片。
2、一定要会表现自己
面试官的目的是为了尽可能全面地了解你的情况,以便更准确地评估你的能力。然而,他们提出的问题可能只是简短的一两句。因此,作为应聘者,你绝不能仅仅因为面试官问了一个简单的“1+1等于多少”这样的问题,就只给出一个“2”作为回答。尽管这样的回答可能符合要求,但它并非面试官所期望的最理想答案。
在提供标准答案之后,你需要针对面试官提出的问题进行深入探讨,例如探讨为何结果为2,探讨这一结论在实际生活中的应用场景,以及过去是否出现过结果为3的情况。
详细来说,若面试官向你提出了关于原型链的问题,你的任务便不仅仅是解答该问题,更应主动阐述原型链的基本原理,并最好现场绘制一张关系图。接着,你还可以提及原型链的应用领域,例如原型链的继承方式。若你提及了这些,那么实际上还可以进一步探讨继承的相关内容(即便面试官并未询问),总之,你需要充分展示你的知识储备,尽可能多地向面试官展示你的能力。
这并非是投机取巧,反而正是面试官所期望的;他无需费尽心机去引导,你便能主动坦白,面试官自然会感到欣慰,至少这表明你对知识掌握得相当丰富,因为那些对知识点掌握不牢固的人,是难以说出这么多内容的。
你在某一领域的深入理解或广泛涉猎,在一定程度上能够引发晕轮效应;这种在某一方面的高度表现,会在面试官心中留下深刻印象,就如同月亮周围的光晕一般,使他们不自觉地忽视了你其他方面的不足。
许多程序员或许并不擅长表达,然而这并不意味着你要投身社交活动;在我看来,在技术领域的话题上,还是可以多发表一些见解的。
3、第一印象
面试往往注重第一印象,有些面试官,在你初次与他见面时,就能预感到这次面试很可能无法通过;同样,也有面试官,在初次见到你时,便已决定不让你通过。
因此,第一印象至关重要。虽然程序员不必身着正装,但也不宜过于随意。尤其是在展现个人精神风貌上,绝不能显得萎靡不振。必须保持活力,切勿因担心面试失败而显得过于紧张不安。你越是如此,反而越有可能无法通过面试。
面试你的,大多是未来将共事的伙伴、上司或是相邻部门的同仁,若换作是你,想必也不愿接纳一位外表不整、性格消极的人加入团队。因此,务必保持自信,但需注意,自信与傲慢截然不同,自信与谦逊亦无矛盾之处。
小结
技术从业者,其核心在于个人技术实力的提升。许多人在初出校门时充满激情,犹如打了鸡血般夜以继日地辛勤工作,毫不觉得疲惫。然而,随着在社会中遭受的打击越来越多,他们很容易感到疲惫不堪。有些人甚至在喊口号的过程中逐渐放弃,开始满足于现状,这实则是一种非常危险的态度。在技术领域,不进则退,唯有不断学习,才能在这条道路上走得更远。
另一方面,确实存在一些客观的挑战,例如任务繁重导致时间不足,前端技术更新迅速难以全面掌握等。因此,你需要探索一条能够持续发展的路径,比如每周深入阅读一篇高质量的技术文章,亦或是有规律地做总结。同时,要注意减轻自己的压力,但也不能放松对学习和进步的追求。
无论你采取何种策略,关键在于将其付诸实践,仅仅将众多优质文章的链接囤积在收藏夹中,任其尘封,并无实际效用。
历经多年精心打造,资深程序员专属福利大放送:涵盖网页设计、网站构建、Web前端技术,课程内容从零基础出发,深入讲解HTML、CSS及JavaScript。jQuery、Ajax、node、angular等框架在移动端小程序项目中的应用实战,包括视频教程、实用工具、电子书籍以及系统路线图,均已全面整理。有兴趣的朋友可通过私信联系我,发送“前端”关键词,等待3秒钟后即可获得领取链接,这份资料将赠送给所有对编程充满热情的小伙伴。
在贫穷的时刻,人的生命显得尤为廉价。我们经常在媒体上目睹那些幸存者的故事。例如,马云、王健林——他们中的某些人,曾拥有过超凡的胆识与智慧,然而命运却未能垂青。他们的辛勤努力最终化为泡影,个人与家庭的幸福沦陷于绝望的深渊,他们的艰辛与苦楚被社会边缘化,鲜为人知。然而,难道因为贫穷,我们就应当遭受践踏与羞辱吗?答案显然是否定的。