涉及前端框架面试题
Posted JavaScript18
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了涉及前端框架面试题相关的知识,希望对你有一定的参考价值。
1、JQuery的源码看过吗?能不能简单概况一下它的实现原理?
考察学习知识的态度,是否仅仅是停留在使用层面,要知其然知其所以然
2、jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
this执行init构造函数自身,其实就是jQuery实例对象,返回this是为了实现jQuery的链式操作
1、 jquery中如何将数组转化为json字符串,然后再转化回来?
$.parseJSON('{"name":"John"}');
JSON.stringify
2、 jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
递归赋值
3、 jquery.extend 与 jquery.fn.extend的区别?
Jquery.extend用来扩展jQuery对象本身;jquery.fn.extend用来扩展jQuery实例
6、谈一下Jquery中的bind(),live(),delegate(),on()的区别?
jquery1.7以后就推荐使用on的方式来进行事件绑定了
7、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
可以同时绑定多个事件,低层实现原理是使用addEventListner与attachEvent兼容处理做事件注册
3、 Jquery与jQuery UI有啥区别?
jQuery是操作dom的框架,jQueryUI是基于jQuery做的一个UI组件库
4、 jQuery和Zepto的区别?各自的使用场景?
jQuery主要用于pc端,当然有对应的jQuerymobile用于移动端,zepto比jQuery更加小巧,主要用于移动端
jquer mobile相对于zepto功能强大,但是体积也很庞大,zepto非常的轻量
6、针对 jQuery 的优化方法?
a、优先使用ID选择器
b、jquery获取到的DOM元素如果需要多次使用,建议使用一个变量将其保存起来,因为操作DOM的过程是非常耗费性能的
c、在class前使用tag(标签名)
d、给选择器一个上下文
e、慎用 .live()方法(应该说尽量不要使用)
f、使用data()方法存储临时变量
7、Zepto的点透问题如何解决?
点透主要是由于两个div重合,例如:一个div调用show(),一个div调用hide();这个时候当点击上面的div的时候就会影响到下面的那个div;
解决办法主要有2种:
1.github上有一个叫做fastclick的库,它也能规避移动设备上click事件的延迟响应,https://github.com/ftlabs/fastclick
将它用script标签引入页面(该库支持AMD,于是你也可以按照AMD规范,用诸如require.js的模块加载器引入),并且在dom ready时初始化在body上,
2.根据分析,如果不引入其它类库,也不想自己按照上述fastclcik的思路再开发一套东西,需要1.一个优先于下面的“divClickUnder”捕获的事件;2.并且通过这个事件阻止掉默认行为(下面的“divClickUnder”对click事件的捕获,在ios的safari,click的捕获被认为和滚屏、点击输入框弹起键盘等一样,是一种浏览器默认行为,即可以被event.preventDefault()阻止的行为)。
12、知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)么? 能讲出他们各自的优点和缺点么?
知识面的宽度,流行框架要多多熟悉
angular、backbone、knockout都是完整的MV*框架
angular是双向数据绑定的,backbone、knockout是单向数据绑定的
React只是单纯地View层
13、Underscore 对哪些 JS 原生对象进行了扩展以及提供了哪些好用的函数方法?
Underscore的熟悉程度
14、使用过angular吗?angular中的过滤器是干什么用的
在表达式中转换数据<p>姓名为 {{ lastName | uppercase }}</p>
currency,是什么过滤器——格式化数字为货币格式,单位是$符。
九、移动APP开发
1、移动端最小触控区域是多大?
移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有 300ms 延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
十、NodeJs
1、对Node的优点和缺点提出了自己的看法:
*(优点)因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求,
因此构建在Node上的代理服务器相比其他技术实现(如Ruby)的服务器表现要好得多。
此外,与Node代理服务器交互的客户端代码是由javascript语言编写的,
因此客户端和服务器端都用同一种语言编写,这是非常美妙的事情。
*(缺点)Node是一个相对新的开源项目,所以不太稳定,它总是一直在变,
而且缺少足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子。
2、需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案?
至少给出自己的思路(url-hash,可以使用已有的一些框架history.js等)
3、Node.js的适用场景?
1)、实时应用:如在线聊天,实时通知推送等等(如socket.io)
2)、分布式应用:通过高效的并行I/O使用已有的数据
3)、工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
4)、游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)
5)、利用稳定接口提升Web渲染能力
6)、前后端编程语言环境统一:前端开发人员可以非常快速地切入到服务器端的开发(如著名的纯Javascript全栈式MEAN架构)
4、(如果会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
Nodejs相关概念的理解程度
5、解释一下 Backbone 的 MVC 实现方式?
流行的MVC架构模式
6、什么是“前端路由”?什么时候适合使用“前端路由”? “前端路由”有哪些优点和缺点?
熟悉前后端通信相关知识
前端路由就是在不进行后端请求的情况下对页面进行跳转
7、对Node的优点和缺点提出了自己的看法?
优点:
1. 因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求,因此构建在Node上的代理服务器相比其他技术实现(如Ruby)的服务器表现要好得多。
2. 与Node代理服务器交互的客户端代码是由javascript语言编写的,因此客户端和服务器端都用同一种语言编写,这是非常美妙的事情。
缺点:
1. Node是一个相对新的开源项目,所以不太稳定,它总是一直在变。
2. 缺少足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子(第三方库现在已经很丰富了,所以这个缺点可以说不存在了)。
以上是关于涉及前端框架面试题的主要内容,如果未能解决你的问题,请参考以下文章