分类
日记 笔记

面试之WEB前端开发

公司需招WEB前端开发者,我本不是做前端开发的,只因以前项目中没有专业WEB前端开发,做过一些工作,所以被老大拉去和他一起面试了。做过J2EE的人多少都会一些,虽不敢说专业,至少能解决80%的问题吧。以下是老大和我整理出的面试问题:

1、JavaScript事件代理(委托)的实现方法和原理

事件代理的原理这里有参考,就不详细说了。
http://segmentfault.com/a/1190000002613617
http://blog.csdn.net/weinideai/article/details/3835839
http://blog.csdn.net/majian_1987/article/details/8591385
JavaScript事件代理带来的好处有:
那些需要创建的以及驻留在内存中的事件处理器少了。这是很重要的一点,这样我们就提高了性能,并降低了崩溃的风险。
在DOM更新后无须重新绑定事件处理器了。如果页面是动态生成的,比如说通过Ajax,便不再需要在元素被载入或者卸载的时候来添加或者删除事件处理器了。

潜在的问题也许并不那么明显,但是一旦注意到这些问题,可以轻松地避免它们:
事件管理代码有成为性能瓶颈的风险,所以尽量使它能够短小精悍。
不是所有的事件都能冒泡的。blur、focus、load和unload不能像其它事件一样冒泡。事实上blur和focus可以用事件捕获而非事件冒泡的方法获得(在IE之外的其它浏览器中)。
在管理鼠标事件的时候有些需要注意的地方。如果代码处理mousemove事件的话你遇上性能瓶颈的风险可就大了,因为mousemove事件触发非常频繁。而mouseout则因为其怪异的表现而变得很难用事件代理来管理。

2、JavaScript的闭包和常用的闭包场景

弄清这个问题,首先要了解什么是闭包。简单的说,闭包是指在JavaScript中,内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。一般回答这个问题最好写出一个例子。提出这个问题还可能会问到JavaScript中的prototype属性及如何重写jquery函数。

3、什么情况下会产生内存泄露

在以前的项目中,没有遇到过内存泄露,所以关注的比较少。一般使用懒加载吧,在写js方法时尽量少声名一些全局变量。学会使用浏览器的debug工具查看网络和内存使用的状态也是很重要的。

4、XSS原理和CSRF原理

非常经典的攻击方式就不详细描述了,随便都能搜到。另外还可能会问到sql注入问题。

5、跨域问题

这个问题在前端面试被问到的概率极高。解决跨域问题我只用过domain,这里有一篇文章讲得很详细。
http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

6、网站优化

主要有几个优化的地方,一个是网页载入速度,二个是减轻服务器的压力。
1.多张小图合成一张图,用CSS控制显示部分。这样能把多次请求减少到一次,减轻服务器压力。
2.设置缓存时间,可以把静态资源的缓存时间设置久一些,可以是一周,一月。如果要及时更新,可以在访问链接后面加一个参数,如?version=1。
3.使用gzip压缩传输,对于文本文件,效果是很显著的,不过这样会提搞服务器端CPU使用率。

7、表单提交密码加密

这个问题是我加上去的。因为以前玩arp攻击和嗅探时发现同是http协议的网站,有些网站密码能获取到,有些却获取不到。我想应该是通过js加密后再提交的表单。查过相关资料,确实有这么一说,只是当时没有深入研究,在开发工作中也没有使用到。所以这个问题也是我想从面试者的回答中学习的。

8、响应式设计和瀑布流

这个问题也是我加上去的。响应式设计是去年下半年开始认真学习的一个地方。主要是为了兼容手机。meta中viewport,还有CSS3中的Media Queries,都是做响应式设计不可却少的元素。我用手机测过,现在大一些的网站都改成这种设计了。响应式设计的原理和做法本身是不难的,只是要把它做好不简单,这方面我也没有实战经验。
瀑布流布局的难点是滚动条不断下拉刷新,内存占用会成为问题。google的g+使用的是标准瀑布流,一直下接没有问题。我想可能是浏览器控制了吧。不过如果面试者能说出一二,也是很好的。

以上就是面试的主要问题了,如有分析的不够精准的欢迎指出。老大注重基础,而我比较注重实践和对行业信息的了解。比如最近在看google的Material Design Lite设计。Material Design Lite本是android 5.0的原生设置,google把它的风格做成了WEB前端的框架,使其能开发出和原生一样的网页,并兼容手机。

另外我觉得做为一个WEB前端开发者,对于网络的风格和颜色搭配也是要比较熟悉的。我见过一些WEB前端开发者之前是学美术的,这应该是专业做前端的一个优势吧。如果能设计UI和切图,那便是企业难求的人才。

发表评论

电子邮件地址不会被公开。