# 面试准备
面试环节有哪些
面试过程是严肃的,知道了基础,会做项目,不一定会拿到Offer。面试过程中,如何进行表述,把自己学习到的知识能展现出来是很重要的。
所以,对于面试者来说,如何写好简历是很重要的。因为面试官会从你的简历去挑一些他感兴趣的内容去问,去挖掘你的潜在可能,去了解你的知识与解决问题的能力。一份好的简历往往是走入职场的敲门砖!
对于应聘生,积累一些解决问题的经验,加强基础知识的掌握(这也是更容易被考察的);
对于社招,实际解决问题的能力+对应的业务/相似的业务背景+技能抽象/发展前景。
面试环节的设置:
- 基础知识测试
- 基础知识(HTML语义话、CSS等)
- 能力测试(在基础上的延伸)
- 基本的原理(缓存、原型链等)
- 简历的引导,自我介绍引导
- 负责人沟通(校招不会有,原因:人太多)
- 特色业务
- 项目背景
- 团队能力
- HR面试
- 沟通
- 性格
- 潜力(技术生涯)
# 职位描述分析
阅读职位描述,这是一个知己知彼的过程。
京东金融——前端工程师:
职位描述:
负责京东金融企业业务PC端与移动端相关的前端开发工作
解析:本岗位,PC+移动端相互交叉,对技术栈的要求是不一样的。
负责企业金融App H5开发,完成前端界面与后端交互开发
解析:是不是需要了解一下Hybird开发?JSbridge?
负责与后端工程师沟通协作,调试数据接口
解析:Mock数据开发
负责京东金融前端组件库的建立(相比与前3条,最重要的一条)
解析:1.原生js/css的理解;2.前端组件库的经验;3.通读/了解其他的UI库的组件,读过源码;
负责对现有系统 的优化与重构
解析:对现有工作与业务的需求;可以拿自己公司的系统或者项目作为例子,有哪些问题?是否需要重构?为什么需要重构?怎么去重构?这里去考查思考与判断能力。
面试准备的第一个初衷:判断该职位适合不适合自己,判断自己喜欢不喜欢,能不能Hold住;第二初衷, 技术准备需要做哪些?了解该企业需要什么样的人才?准备到一个什么样的程度?
任职要求:
3年以上相关工作经验,精通HTML5我,了解HTML5最新规范,能够熟练去用HTML5特性构建移动端的WebApp;
解析:首先,对于3年的经验,这个不重要,如果说没有3年的经验,但是有足够好的项目或者能力的展示,是可以破格录取的。然后,对于H5的描述,再次说明了H5的重要性;隐藏的意思:看看这个人是否对新知识有学习的劲头,看看是否是对新技术是否有追求。
如何考察自己是否达到?很简单,问自己几个问题,看自己能不能答上来;
熟悉当前流行的JavaScript类库,熟悉JavaScript面向对象编程方法;
解析:面向对象编程,包括原型链也要比较熟悉。
熟悉Web标准,对表现与数据分离,HTML语义化等有一定的理解,至少熟悉一种前端MVC框架并且有实际经验(不限React,Vue,Angular等);
解析:熟悉对新的web标准;理解表现与数据分离;准备一个自己做过的项目进行演示;语义话要避免DIV DIV DIV这样的全是DIV的写法;至少熟悉一种 + 实际经验,学习不等于实战经验。可能会问,遇到过什么开发问题,怎么解决的,这种问题。
具有前端架构分析与设计能力,一贯坚持编写易读、易维护、高质量、高效率的代码,习惯于OOP开发方式;
解析:对于架构分析针对的是高级的工程师,所以不面向初级的开发人员。因为刚刚入门的人,刚刚开始做的基本是业务。怎么去考虑?拿一个项目来进行分析:(1)目录结构怎么设计;(2)复用性怎么设计;(3)模块化怎么设计;(4)自动化测试怎么测;(5)上线的流程是什么?这些基础的东西都要想的非常清楚,非常周到。 写易读、易维护、高质量、高效率:很容易考察出来,这个可能会让你自己写代码,要学习代码规范。能抽象的尽量抽象,函数名不要写在一堆。
对用户可用性、用户体验,用户研究等相关知识有深入的了解和实践经验;
解析:不是考察技术的本身,是考察的完成这些功能,还是说考虑了这个功能是否好用、卡不卡?回答的思路:以往的项目怎么完成了任务,在完成的过程中,进行了什么样的思考,为了增强用户的体验。
对Web前端技术有强烈兴趣,能对Web前沿技术研究和新技术调研,有良好的学习能力和团队合作精神;
解析:注意“强烈”两个字,对团队的一种认可,对企业文化、公司文化的一种要求。去github上去看看排名靠前的github的项目,去看看用了哪些技术与工具。
了解Css预编译语言如Sass、less等;
解析:这个简单,也是基础。
熟悉Web构建工具Grunt\Gulp,能够自己搭建前端构建环境;
解析:这个要一定好好准备,了解/熟悉/精通是三个概念。可以准备一下这些构建工具的区别在哪里,技术特点在哪里。
有服务端(不限语言)开发经验者优先。
解析:可以忽略,有时间也可以去看看。这里是对Nodejs的考察。不要轻易说自己精通,除非是自己真的擅长。
总结:
- 快速识别是否自己喜欢的。
- 能不能Hold住这个岗位,或者短期的准备能否达到要求。
- 职位描述,是强调对工作的工作职责,职位要求对技术深度的要求。
艺龙——前端工程师:
岗位描述:
负责艺龙酒店业务前端开发、使用系统化设计提高开发效率;
分析:说的很笼统;系统化设计:模块化设计、前后端分离;
负责推广运营活动的HTML5,采用canvas、css3、JS相关前端技术;
分析:这里的HTML5没有具体PC、移动端;明确canvas、css3、JS技术,如果做广告,可能是对做动画的技术的一些要求。普通的动画是DOM+CSS,或者是SVG做动画,第三种就是Canvas,可以做2D或者3D效果,用webGL的不多。 去了解一下GPU加速,Canvas的API,常用的一些动画的设计。
负责艺龙微信项目;
分析:去看看艺龙的微信小程序、微信公众号,了解微信自定义标签,对微信支付去了解一下。微信开发中遇到的一些坑。
艺龙前端框架的开发与维护、协助业务方解决应用问题。
分析:与京东的第4条类似。开发与维护说明,已经有一套内部的框架,需要升级维护。
岗位要求:
精通各种Web前端技术、包括HTML/CSS/Javascript等,3年以上工作经验;
分析:这点有一点点扯,不可能做到样样精通。
深刻理解Web标准,对可用性、可访问性等相关知识实际的了解和实践经验;
分析:同样是Web标准,主要是ES6。可用性、可访问性是指性能方面的准备,如何反馈给前端错误码,如何捕获异常。通常是JS运行异常,资源加载错误。
熟练使用工程化工具,熟悉webpack\grunt\sass优先;
分析:这里一样需要准备gulp。关于前端工程化,是前端开发人员必会的基础知识。
具有良好的代码风格、接口设计与程序架构;
分析:比较虚。
至少熟悉一门非web前端脚本的语言(如Java/Python)或Node.js,有实践经验;
分析:对后端的要求,说的是熟悉,所以要准备Node.js,不需要去准备如PHP。有教程可以快速过一下!认识有艺龙的同事,可以去问问里面的同事。这一条说明是全栈开发。
个性乐观开朗,逻辑性强,善于和各种背景的人合作。
分析:有深意的一点,对表述能力的要求。比如:在以往与哪些人怎么合作的,你们有没有通力解决什么问题?
目的:通过职位描述去了解你不了解的公司的工作职责和技术要求,有针对性的面试,可以快速过滤自己不相关的岗位。
# 业务分析或实战模拟
职位分析更偏向于方向与知识面,这一块,更加具体的分析公司的技术栈,业务特色,知识点的侧重。
下面看一下京东金融。
轮播,导航,页面布局,鼠标Hover效果(css3效果)
内容列表:理财,股票,购物(懒加载),保险,优惠券
技术细节从Chrome中的DevTools来看:
视频录制时间可以看到如下内容:
- webpack(source map没有关)
- vue
- jquery
- ES6语法
而笔者看到的:
- Source: JSONP
- Webpack
- Vue的Sourcemap已经关闭
看一下Element:
- Header部分,webkit渲染
- Link: dns-prefetch,DNS预解析,网站性能优化。
Application:
- 字体图标,字体文件,字体自定义
- LocalStorage/Session/Cookie
艺龙:
微信扫一扫:小程序,公众号
手机版就是H5
组件:日期控件、轮播图、鼠标Hover效果(background相关的知识),去了解一下如何实现(transition属性);
看一下DevTools:
看一下Elements, network, sources
- Header
- 页面中JS全放在页面的Header中,关系到渲染机制,async属性。
- JQuery版本是1.11版本与新版本有什么区别,与新/旧版有什么新增/删减的功能,兼容性的角度。
- 模块化:Require.js相关的配置
- 模板引擎:ejs, swig
- webpack打包相关
# 技术栈准备
目标:
- 准备哪些技术栈
- 如何准备
角度:1.从框架;2.从自动化工具
框架的角度
首先是JQuery还是需要准备一下,了解一下源码。看核心的架构,事件委托,事件机制,兼容性。
不需要看所有的源码,看看博客与文章,浏览量比较高的。
前端框架:Vue, React, Angular,了解其中之一就行了。原理基本一样!!不用给自己挖坑,说自己都懂。
怎么准备?
- 源码角度;
- 实战准备;
然后是Nodejs,Nodejs需要了解一些基本的,如果没有Nodejs相关的经验就不用写在简历之中。
前端工程(自动化)的角度
简单的说就是在工程上线之前,对JS,css进行处理。
- Sass/less预编译
- 构建:Gulp/Webpack
- npm常用命令,打包发布
# 自我介绍
简历:
- 基本信息,姓名-年龄-手机-邮箱-籍贯
- 学历,博士 > 硕士 > 本科 > 大专
- 工作经历,时间-公司-岗位-职责-技术栈-业绩
- 开源项目,Github和说明
解析:
招聘中对年龄与工作经历来判断,是否达到了年龄段相应的技术要求,判断是否对技术有沉淀与追求。
手机与邮箱这个是联系方式。
绝大数公司对学历还是有要求的,从大写到小,只保留最高的学历。
工作经历很重要。总结一下业绩,HR比较习惯看,有技巧。举例:在某个岗位上做了什么,如果没有做出什么业绩,现在去回想,如果有一些缺点,自己有没有新的解决方案,如何去构思,如何去实现。
开源项目:亮点项目,可以沉淀。同样,可以与开源项目去做一些贡献,不能作假。
自我陈述:
- 把握面试的沟通方向
- 豁达、自信的适度发挥
解析:
举例:校招中,面试者说:“我做过什么什么样的项目”,从面试的角度,心中有准备了如下问题:
- 负责什么项目
- 有什么人参与
- 与前端的结合点是什么
- 角色是什么
- 项目中承担的责任
- 做出了什么成绩
“我是负责人”:
- 有几个人参与
- 项目管理?技术负责?
- 落脚点:做出了什么成绩
头衔越大,问得越多。
所以要针对性的准备,比如对于艺龙:我平时喜欢看一些网站,学习一些新的技术知识,也会去尝试。话不用多说,传递一种对技术有热爱、有追求/思考的人的感觉。引导面试官去问:(1)你平时喜欢去哪些网站;(2)研究哪些代码; 不能直接去说艺龙,然后,等面试官问了之后,自己就可以去回答自己准备了的内容。
- 豁达指说话要声音要洪亮,不能自卑,要有自己的气场,因为面试官也很紧张。
关于适度发挥:不能骄傲,目的是让面试官来欣赏你。
关于照片是否要准备,视频中的老师的意思是不需要,也不重要。而笔者看来,非常重要。
下面来看看反例:
- 关于教育背景,不要写学习的课程,不要写高中。
- 个人技能不要写的琐碎:比如不要写Linux到工具类里面,写的比较大了。
- 去繁化简,把握“了解/熟悉/精通”
- 兴趣:写对技术的追求,不要写爬山之类的。
- 不要太放自我评价
- 写业务的业绩,而不提技术上的业绩。
总结一下:在简历中,要简洁,注意排版;突出重点要传达的个人信息(技术的、能力上的),引导面试官针对性的发问。
# 实例与实战环节
实例:
- 自如谈兴趣、巧妙示实例、适时讨疑问
- 节奏要适宜、切忌小聪明
解析:
切忌不能说XXX我没有准备,我来给你讲讲这个。聪明的求职者,不要“我不知道”“我不懂”“我要回去看看”,要说“面试官,这里能不能指点一下?”“给点建议?”“给点资料,我想回去看看”
不要对简单的问题很不屑。
耐心的写/说一些对问题的答案,而不是对实现/回答了就行了的心态。
实战:
- 方向要对,过程要细
- 胆子要大、心态要和
解析:
可能有一些公司的项目,没有做过所有的模块,但是要了解细节。
对于有一些公司考察一些比较难的算法题,要去尝试。根据自己的经验去做方案,就怕没有想就放弃。勇于承担负责,敢于挑战未知。
无论是否自己能否答完,都不要自傲;无论是否自己是否了解,都不要自卑。
如果自己不清楚,不要轻易放弃,可以去多请教一下面试官。要感谢这次面试,可以找到知识体系中,薄弱的地方。