浅谈前端求职 — 项目篇
前言
大家好我是KaiSarH,今天和大家聊聊前端求职中关于项目的话题。这部分我会从前端的角度分为三个部分来谈一下,分别是:为什么聊项目?项目如何准备?项目怎么聊?
为什么聊项目
在面试过程中,往往包括以下流程。
在做一些简单的基本了解之后,会着重考察求职者的基础能力与项目经验,而这一部分对于不同招聘者的要求是不同的。
对于公司来说,社招往往希望可以招聘来立马就能干活的同学,因此对于求职者的经验要求会更高一些,往往会着重考察其项目经验,对项目进行一定的深挖。而对于校招的同学来说,公司往往更加看重个人的潜力,包括基础掌握能力、学习能力与学习动力。如果可以展示出良好的学习能力与潜力,将会在面试中脱颖而出。当然这并不是说项目经验不重要,更多的经验在HR眼中可能意味着更积极的态度与更出色的能力,因此拥有几个好的项目经验,会大大增加成功的机会。
项目如何准备
在正式求职之前,我们除了学习基础能力之外,是需要通过做不同的项目对技术进行打磨,积累经验的,而在求职前应该如何更好地准备项目呢?
社招同学
项目的准备对于社招同学应该不存在任何难度,毕竟大家已经在公司工作过一段时间了,肯定会或多或少接触过一些项目的。这里我从自己实习半年做开发的角度来讲一下自己平时如何积累经验。
- 做好积累。日常工作过程中,往往会遇到很多坑,通过不断地尝试解决问题,通过Markdown等方式记录一下,不仅可以有效避免后续遇到同样问题时束手无策,也可以积累经验。
- 在完成本职工作的同时多去了解别的技能,不断扩展自己的技术栈。像我日常开发过程中,其实只需要做好Node与Web开发就可以,数据、安全等方面的事情有专门的的同学来干,但是我在完成本职工作的同时,也会去了解一下他们的工作,这不仅让我的工作变得不那么单调,也让自己的视野更加开阔。
校招同学
对于在校的同学来说,有项目经验其实挺不容易的。本科生在学校学的往往一般比较基础,老师也不会手把手带着做项目,在疫情时代下实习又显得比较困。硕士生就更加困难了,能够完成导师的科研项目就已经不错了,更别谈实习自己搞项目了。
所以在面试的时候,往往对校招生更多的是基础的考察,如果是没有项目也不会特别在意。但是如果你有项目,并且做得比较好,往往这就是比较好的闪光点。所以校招生该如何准备项目呢?
- 实习,实习,实习。重要的实行说三遍,如果有时间的话并且你真的想找一个好工作,那么就去实习吧。实习不仅能让你的技术得到快速的提高,也可以让你了解真正的开发。并且在校招的过程中,公司往往更加青睐有实习经验的同学。
- 自己在学校做。自己做项目的途径其实蛮多的,不过对于掌握程度不同的同学还是有不同的方案。
- 如果你的基础已经比较扎实,并且可以自己动手实现一个简单的界面/系统,那么你可以去GitHub上找一些好的开源项目,去学习别人的代码思想与代码风格。
- 如果你的基础一般,动手能力比较差。我的建议是找一个免费的视频项目,跟着老师一点点做,一点点敲代码。这个过程其实只需要你认认真真做一次,因为如果是纯前端的项目,你认真的完成一个项目,就可以积累到很多经验。大部分其他的项目界面都是类似的,只要你可以跟着老师完整的敲下来一个,就肯定会有很大的收获。
- 做好笔记与记录。大家在日常学习的过程中,一定要做好笔记,可以通过博客的形式来记录。记录自己的学习笔记、在平时动手过程中遇到的坑与解决方案、做项目的记录、做项目遇到的坑等等。这不仅可以便于自己进行回顾复习,也可以让自己再次遇到某个问题的时候有地方回忆,同时,在简历上的优质博客,会让面试官对你更加的了解。(像我在研一零基础开始学习的时候就在CSDN做笔记,大家有兴趣可以看一下。)
项目怎么聊
众所周知,在我们求职的简历上,往往都会写上自己的项目/实习/工作经验,这往往就是告诉面试官自己有过一定的经验,而不完全是一个新手小白。但是往往一些同学在简历上写了一定的内容,但是在面试过程中却讲不出来自己的东西,往往会产生不好的影响。
-
会让面试官产生怀疑,这个同学的项目经历是真实的吗?他真的曾经干过这些工作吗?
-
通过一面基础的考察,往往在二面、三面会对项目进行考察,而如果没有合适的项目支撑并适度对面试官进行引导,相当于将后面的面试控制权完全交给面试官了。他可以随意地提问,而问什么就不是我们自己可以掌控的了。
同样,如果可以更好地准备好项目方面的考察,会大大提高自己面试的成功率。而如何才可以更加优雅,高质量地介绍自己的项目,让自己在面试中脱颖而出呢?面试的时候除了体现自己的能力与潜力外,如何更好地引导面试官,也是软实力的一种。
提前做好准备
对于大多数同学的大多数项目来说,面试官都是不了解的,当看到我们的简历的时候,他只能通过文字和我们的描述来了解项目,而这往往就是你的优势。当你真正的做好一个项目的时候,往往是需要耗费一定时间的,而你也是真正了解你做的项目的,两者相比之下,你完全不用惊慌,只需要提前做好准备就可以了。
考察项目 | 面试者 | 面试官 |
所需内容 | 项目名称、担任角色、技术栈、技术难点、相关产出 | 简单了解 |
了解项目途径 | 实际开发1个月以上,非常了解项目 | 通过简历与和求职者的对话做出判断 |
面试过程中要做的 | 适当引导,做好防守反击 | 针对简历进行提问,深挖项目 |
交流 | 表达清晰,减少关键性错误 | 掌控难易,往往不会特别难 |
技巧 | 写简历的技巧、问答技巧等等 | 往往是针对题目做一些有规律的问答 |
成功关键 | 只要是简历上的内容都要了解,并做一定程度的原理了解 | 只要面试者没有重大纰漏就没什么问题 |
写简历的时候,项目经历要写明以下几点:
- 项目名称、项目角色、时间:让面试官直截了当了解你在什么时间内做了什么事情。
- 项目简介:一句话讲清楚项目的功能与产生的价值,比如:“通过基于WebGIS的管道地质灾害系统,可以对地质灾害信息进行妥善管理,并可以提前感知预警,目前已在4个国有部门进行使用。”
- 技术栈:写清楚用开发中用到了那些技术栈,按照重要程度进行排序。
- 技术难点与解决方案。比如性能优化方面:“通过Redis、Storage等缓存技术降低服务器压力,提高数据请求速度;通过路由懒加载提高页面加载速度”,或者说比较复杂的问题:“在处理多部门协同作业的方案上,如何解决部门层级处理是关键,为了解决该问题,我调研了xxx方案,借鉴了xxx源码,通过xxx设计模式,实现了xxx功能,最终解决了该问题。”
- 相关产出:如果是自己的项目,可以贴出项目部署地址,或某模块开发设计方案博客地址。
妥善应对不同问题,适当引导
面试官是不如你了解你的项目的,因此只能通过你写的与问问题来了解,其中问问题往往是关键,而下面的问题是经常被问到的。
-
Q:详细介绍一下你的项目与工作。
分析:面试官让你详细介绍一下项目往往就是考察你是否真正了解项目,也就是是不是你真正实操过,只要你按照你简历上的描述,进行适当性的扩充,就没问题。
-
Q:针对在简历上写的技术难点与解决方案或应用到的技术,做一些基本的提问。
分析:问这些问题往往面试官还是在考察你对项目的熟悉程度,并了解你对项目使用的方案、技术的了解程度,为后续进一步提问做基础。
-
Q:针对某一个点,做深入的提问。比如:你在简历上写了你对界面做了一定的性能优化,通过哪些方法实现的?
分析:问这些问题时,面试官就对你的项目比较认可了。通过这些问题,会进一步考察你在项目开发中的解决方案,通过侧面提问的方式问一些关键问题的实现,这时候只要保证自己前后回答逻辑通畅,没有矛盾就可以了。
-
Q:针对某一种解决方案,提问原理。比如:你说在使用Vue的时候通过路由懒加载的方式提高性能,加快界面加载,你了解路由懒加载的原理吗?
分析:你的技术方案得到了认可,同时面试官希望对你做进一步的考察,不仅考察你应用层次,同样考察你对于原理是否了解与熟悉。这时候就看个人功力了,平时在解决问题时不仅要关注实现方案,也要关注实现原理。
Good Case✅ & Bad Case❌
不管在简历书写还是面试过程中,总会出现一些Good Case Or Bad Case。
-
情景一:小A同学平时自己开发过程中经常前后端都做,为了展示自己的能力,在前端求职岗位的简历上写了很多其他技能。
- 评价:❌。并不建议大家将非编程甚至非前端的经验放到自己的简历上(对于前端同学来说,其他方向类推)。比如我用Python搞了机器学习、用Java写了一个服务器等等。为什么不建议呢,因为大家面试的是前端工作,你的面试官未必熟悉你写的其他方向的东西,她不知道该如何考察你,因此也就直接忽略掉了。除非你有特别硬核的奖项可以给他看,比如ACM金牌🐶。因此,针对你的求职方向,写有价值的东西。
-
情景二:小B同学在本科时候有非常多的项目经验,读研后也自己写了非常多的项目,因此在简历上洋洋洒洒写了两页项目。
- 评价:❌。前端的发展真的太快了,几年前可能大家还在用JQuery,但是现在已经成了老古董。你之前做的项目可能当时看着非常棒,但是如今看可能已经过时了。因此持续关注前端发展动态,采用最近的技术栈做东西,拿一些之前的成绩说明不了什么。
-
情景三:小C同学在面试的时候介绍项目的时候,采用了以下一段话。“我在xxx公司实习的时候参与了xxx项目开发,制作了xxx界面,通过xxx和xxx模块,实现了xxx功能,最终让客户xxx非常满意,拿到了很好的评价与绩效。”
- 评价:❌。你是在应聘软件开发工程师,而不是产品经理,面试官不关心你实现了什么业务,而关心你如何实现了需求与解决了困难。
-
情景四:小D同学在回答问题时回答得过于简单、过于冗余、过于复杂、过于流利。
- 评价:❌。在回答面试官问题的时候,要挑重点,将自己了解的、熟悉的技术分门别类,有逻辑地讲清楚。当然如果你非常了解这个技术,流利一些肯定是没有问题的,不然总会让人觉得你在背一些东西- -。同时要注意不要讲的过于复杂,要留有余地,点到为止,如果面试官感兴趣,他会继续追问,如果不感兴趣,往往就会有对牛弹琴的效果。
-
情景五:小E同学在面试的时候介绍项目时候,采用了以下一段话。“我在xxx公司实习阶段参与了公司xxx平台的研发,我的开发角色是Web前端开发,业务受众主要是全公司内部的xxx人群,针对xxx需求,实现了xxx功能。主要采用React + React Hock完成开发,通过xxx方案,解决了xxx问题。”
- 评价:✅。在一分钟左右的时间,简单地介绍你的项目,说明你的角色与工作,并阐述你的主要工作、使用的技术栈有哪些、遇到的问题、解决方案、项目时间、项目规模等。着重介绍项目应用到的技术与问题和解决方案。并且这些技术与解决方案与求职需求、自身技术背景一致。
-
情景六:小F同学在介绍项目的时候,没有将自己所有的工作托盘而出。而是选取自己认为重要的、有技术含量的、关键的模块进行介绍与分析。
- 评价:✅。宁可和面试官只讲两个你熟悉的、有技术的模块,也不要跟他扯五个毫无技术含量的东西。
-
情景七:小G同学在学校学习/公司实习之余,在完成本职工作的基础上,积极参与开源社区xxx的建设,为xxx源码做了一定优化。并在自己的Github上分享开源了自己做的xxx。
- 评价:✅。真正热爱编程,热爱Web开发的同学往往是能折腾的,不局限于日常使用与开发,而是时刻关注前端社区发展,并积极了解开源框架,结合自己的思考做出一定的优化。往往善于思考、热爱折腾的同学更加受到面试官的青睐。
适度引导、偶尔撒糖
引导可以分为两个方面,分别是简历和回答的时候。
在写简历的时候,可以在技术栈、遇到问题与解决方案处做一些针对性的引导,比如写一写你非常熟悉、同时对原理有一定了解,并且对于常见问题有一定自己的思考与认识的技术与问题。比如你看过Vue/React源码,可以写了解虚拟Dom与Diff算法、响应式原理等;或者你对JS原理非常熟悉,可以写了解JS垃圾回收机制;或者你对浏览器原理很熟悉,可以写了解渲染流程;或者你对性能优化非常熟悉,可以写了解多种前端性能优化方案等等。总之就是着重写你了解、熟悉的技术与方案。
同样在面试回答交流的过程中,也可以适度做一些引导。不过要适度,但是不要表现得太过明显。比如在问你做了哪些模块哪些功能的时候,不仅把实现的功能说出来,也可以说一些做的优化点,然后让面试官针对优化点做进一步提问。
还是那句话,适度地引导会让面试官问一些你熟悉的问题,从而让你发挥的更加得心应手,但是一定要注意度,否则就会物极必反。
同样,在介绍项目的时候,除了对面试官进行适度引导,他其实更喜欢听到你说一些关键信息,而且通过比较好的话术表达出来,如果可以,那绝对是加分项。比如:
关键信息 | 话术 | 后续 |
在进行界面开发时,考虑代码复用性、扩展性等,通过运用设计模式等方案优化代码,并积极参与框架建设 | 在项目开发过程中,采用Vue、Vuex、Vue Router等技术开发,采用Node作为中间件,开发时参与团队项目方案设计,并参与了框架的设计与搭建,通过观察者模式、单例模式、策略模式等方案优化代码。 | 针对提到的设计方案、优化方式等会进行下一步提问 |
除了完成日常开发,也会注重性能监控,有调优意识,注重代码性能优化,可以积极主动发现问题并解决 | 在项目开发过程中,通过Goole浏览器开发者工具中的Performan、memory、rendering等发现系统会出现首页白屏 / 首页渲染速度过慢 / 单个函数执行时间过长 / 内存溢出 / 静态资源请求过慢等问题,通过xxx方案进行解决 | 针对某一个问题进行深入的了解,探讨相关解决方案 |
热爱开发,了解前端生态,相关社区,拥抱开源 | 在日常工作、学习之余,我也会积极了解前端最新动态,了解最新的技术,同时也会关注xxx等多个前端社区,并积极了解相关开源技术,学习源码,结合自己的思考与经验进行优化升级 | 探讨相关前沿技术,探讨相关源码 |
干活积极主动,善于学习,团队合作精神好,责任心强,可以在高压环境下工作 | 在项目开发过程中,除了做好日常开发工作,也会对部署业务进行相应的操作,并主动在测试环境进行测试。遇到问题后会积极与相关人员沟通协调,尽快解决问题,在规定时间内解决。 |
积极主动、展现自己
避免错误、全身而退
很多同学因为简历写得太过“豪华”,或对应用的技术了解的不够深入,往往就会溃于蚁穴,下面这些问题一定要避免。
问题 | 结果 |
简历过分夸张,与实际能力不符 「千万不要尝试为你的简历注水」 | 有些同学为了可以更加保险的过简历关,于是在简历上写了很多与自身能力不符的东西,这是万万不可以的,因为面试官大部分问题都会从简历上的内容进行扩展,如果太过夸张,肯定直接Pass了。 |
答非所问,前后矛盾。比如在项目中写了熟练使用Vue、React,但是连Vue的基本使用实现都不了解,无法说出基本项目开发中的细节 「不要企图蒙混过关」 | 典型的空中楼阁,基础概念都不了解,肯定会通过更多更细致的问题进行考察。不要觉得多写一个不了解的技术可以在面试中“蒙混过关”。 |
业务开发中常见问题一问三不知 「必须了解常见开发问题」 | 在一些特定业务中,有些问题是肯定会遇到与解决的。比如界面布局、Storage缓存等问题,如果这些基础问题都不知道,大概就会被认定为技术能力差或技术不过关。 |
面试过程中谈吐不清,太过紧张、穿着随意,心浮气躁 「谈吐文雅,衣着得体,落落大方」 | 虽然互联网公司大多不大在意外在形象,但是如果你个人很浮躁,油嘴滑舌,邋里邋遢,往往也不会受到青睐。 |
总结
这里已经说了为什么聊项目、项目怎么准备、项目怎么聊三个方面,这些都是我结合自己的经验与工作过程中与Mentor和其他面试官交流得到的一点带你经验。
总的来说,以下几点:
-
项目一定要有,这是你展现自己能力的绝佳机会。
-
在简历上一定要突出你经过这个项目所提升的能力,不要泛泛而谈。
-
面试前一定要提前准备,简历上的所有点都要准备,基础和扩展,原理和实现。
- 没有什么项目适合所有人,你只需要把自己的项目真真正正的做完,解决其中所遇到的问题,就足以和面试官对线了。