@yacent
2016-10-20T16:21:54.000000Z
字数 2161
阅读 1023
面试题目
2016.08.12
隔了挺久的,才回想起要来总结一下,面试的一些东西,总的来说吧,自己在这次的校招过程中还是比较幸运的。
一面是隔了挺久时间的了,现在要重新回想一下面试的内容,这次的一面,总体来说,是比较基础的,主要是询问一些基础。不过看各个面试官的爱好,这个面试官真的一点项目都没有问我,当时我还准备了很多关于项目的一些总结、问题等等,不过他基本上都是问语言的特性,基础等等。
先做个自我介绍
这里还好,比以前多的地方就是把自己的实习经历放进去了,讲了一些。
JS方面
问:请你说一下闭包以及为什么要使用它
首先说一下什么是闭包,最容易的解释就是 function return function
,即函数里面包含另外一个函数,那么具体来说,就是由于作用域链的原因,内层函数能够访问外层函数的变量,这就是通常我们所说的闭包。
那么闭包主要是有以下的两个用途
1. 可以读取函数内部的变量
2. 可以使这些变量始终保持在内存当中
那么,使用闭包,我们应该要注意以下的一些问题
1. 闭包会使函数中的变量保存在内存当中,内存的消耗很大,所以我们不要滥用闭包,在适当的时候才去用
2. 由于作用域链的原因,内层函数永远只能访问到外层函数执行完成后的变量的值,所以在需要实时获取外层函数变量的时候,我们需要使用立即执行函数
模块化
问:你说一下什么是模块化
模块化这个东西,可以看我这篇文章当中写的对于模块化的一些理解
https://www.zybuluo.com/yacent/note/464168
问:你说一下你知道的一些模块化的标准
AMD和CMD
问:他们的区别是什么?
在目前前端模块化标准当中,主要是两种标准,
一种是从requireJS延伸出来的AMD规范,
另外一种是从seaJS延伸出来的CMD规范,
二者主要的不同点在于引入模块和执行模块的时机,AMD是推崇依赖前置,提前执行,就是在定义模块的时候,就引入了其他的模块,在模块当中,就已经是出于可用状态了。而CMD的话,提倡依赖就近,在需要使用到某个模块的时候,才进行引入。
组件化
问:你说一下你所了解的组件化
对于组件化的理解,比如一个电视机的构成,是由显示器、音响、电路板等各个部件构成,每一个组件之间相互连接,而最终构成一台完整的电视机,组件化,我认为就是将网页的各个部件都拆分成一个个的组件,比如将页面拆分成header、nav、container等的组件,组件与组件之间,只有是组合与包含,各自的逻辑、样式都保持独立,相互不影响,每个组件单独开发,在组件化开发过程中,要构成一个完整的页面,只需要将各个组件都拼接在一起,就完成了一个页面。这是我认为的组件化。
在实习的过程当中,也是运用组件的思想,在做七夕活动表白日活动的时候,使用freemarker的宏定义,将页面当中的header、奖赏功能等都分离为一个个的组件,其他页面由共用到这一部分的,只需要使用freemarker的模块引入,将组件加入到页面当中。
问:组件化有什么好处呢?
组件化的好处,在我看来,像刚才所说的,因为每一个部分都划分一个个的组件,首先
第一,就是降低了整个系统的耦合度,比如,某天,需求突然改动,要将原来某个地方的输入框换为日历或者其他东西,那么只需要更换一个组件就OK了
第二,便于单元测试和调试,因为当出现问题时,可以根据报错或者其他方式快速定位到出问题的地方,由于组件化而形成的低耦合的,每个组件的职责更为单一。
第三,提高了可维护性,首先是出错后的后期维护,只需要对一个组件进行修改,另外,如果需要对组件进行相对应的优化,那么只需要修改单单一个组件,这个系统相对应的部分都会得到相应的提升。
都说,代码应该要有可维护性、可拓展性,我认为组件化都做到了这些。
问:你认为组件化和模块化 有什么区别吗?
我觉得二者如果从广义上来说,所描述的思想是差不多,都是说为了分治,但是抠细来讲的话,二者其实还是有不同的
二者在粗粒细度上也是不同,组件通常是页面上的一个区域,把他统称为一个组件,但是组件下面还有其他组件,组件不是最小细粒度的,组件下面还可以有别的小组件组成。但是模块,一个模块就已经是一个最小的粒度,不可以再去将他分割了,他就是一个整体。
实习方面的问题
问:你们平时的开发流程是怎么样的
这个我就大概说了一下在实习的时候,公司里面的一些主要的开发流程。
产品策划 → 交互 → 需求评审会议 → 组长领取需求 → 分发需求给实习生 → 根据交互稿来进行开发 → 自测完毕 → 提测 → 后台进行分支合并 → 提交到测试机 → 测试对其进行功能测试等 → 反馈bug → 修复bug → 测试无误 → 上线
大致的流程是这样子
问:那产品和策划如果要体验你写的东西,你们是怎么做的呢?
我们一般就是开代理,让他们连上wifi直接体验就OK,然后再看看哪里有问题,自测的时候也是这样子。
问:恩,好了,你还有什么问题要问我的吗?
我的天啊,怎么这么突然,突然就结束了面试,好吧,我问了一两个问题,然后就结束了一面的面试。
面试官挺好人的,还和我闲聊了一会,加了个QQ,然后鼓励了我一下。然后之后就挺少联系,问了一些问题。
因为等待太久了二面,中间骚扰过别人两次,询问别人面试过了没有,自己也是有点担心,不过后来,是收到通知了,去TST面试呀。