[关闭]
@yacent 2016-10-20T16:21:54.000000Z 字数 2161 阅读 1023

SNG QQ空间 一面

面试题目


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面试呀。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注