前端面经整理-蚂蚁金服(持续更新手动整理答案)

面试题目汇总及社交知识点

    • 1. 为什么要用Backbone.js
    • 2. 不同模块规范的区别
    • 3. Webpack的工作原理
    • 4. 为什么各大项目纷纷转成Webpack构建
    • 5. Cookie & Session的区别
    • 6. Session 的实现原理
    • 7.HTTP请求方法中那些事幂等性的
    • 8. 跨域处理方案
    • 9. JSONP的缺点以及安全隐患
    • 10. 为什么要做单元测试
    • 11. 黑盒测试与白盒测试的区别
    • 12. 怎样实现测试覆盖率
    • 13. Async & Await 的使用
    • 14. 块级元素、行内元素、inline-block的区别
    • 15. 水平居中的办法
    • 16. String、Array常用的方法
    • 17. 输入一个URL到呈现页面的过程
    • 18.Vue.js组件的生命周期
    • 19. Git怎么合并提交记录
    • 20. Linux常用的命令
    • 21. HTTP2新特性

1. 为什么要用Backbone.js

答:Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful JSON接口连接到应用程序。

主要组成:
1.model:创建数据,进行数据验证,销毁或者保存到服务器上
2.collection:可以增加元素,删除元素,获取长度,排序,比较等一系列工具方法,说白了就是一个保存 models的集合类
3.view:绑定html模板,绑定界面元素的事件,初始的渲染,模型值改变后的重新渲染和界面元素的销毁等

优势:

  1. 将数据和界面很好的分离开来。
  2. 将事件的绑定很好的剥离出来,便于管理和迭代。
  3. 使得Javascript程序的模块化更加清晰、明了。

应用场景:
最适合的应用场景是单页面应用,并且页面上有大量数据模型,模型之间需要进行复杂的信息沟通。

2. 不同模块规范的区别

前端模块规范有: AMD,CMD,CommonJs,UMD

1.浏览器端
AMD是requireJs在推广过程中对模块定义的规范(异步模块规范)
CMD是seaJs在推广过程中对模块定义的规范(普通模块规范)

2.node端
commonJs(同步模块规范)

3.浏览器和node兼容端
UMD(通用模块规范)

4.ES6内置模块化module
import引入一个模块
export [default] 对外暴露一个对象

1.AMD
提前执行(异步加载:依赖先执行)–依赖前置

2.CMD
延迟执行(按需加载)–依赖就近

3.commonJs
加载模块是同步的,只有加载完成后才能执行后面的操作
模块分为:
(1)模块引用(require)
(2)模块定义(exports)
(3)模块标识(module)

ps:AMD和CMD的区别

1、AMD推崇依赖前置,CMD推崇就近依赖
2、执行时机不同:AMD是加载完立即执行,CMD是延迟执行(二者的最大区别)
3、两种规范都可以实现按需加载,但是实现的API不同

3. Webpack的工作原理

webpack 是一个打包工具(module bundler 模块打包器),把脚本开发语言“编译”成浏览器能识别 Javascript 和 CSS。

不同项目在定义脚本模块时使用的规范不同。有的项目会使用CommonJS规范(参考Node.js);有的项目会使用ES6 Modules的模块规范;有的还会使用AMD模块规范(参考RequireJS)。Webpack对这三种都支持。还支持混合使用。

4. 为什么各大项目纷纷转成Webpack构建

假如有3个js文件,浏览器需要发送三次htttp请求获取这三个文件,然后依次执行,如果其中一个文件因为网络问题而延迟时间,那么整个页面的显示也会被延迟,那么针对大项目里有几十个或者上百个js文件,问题更严重,不但有延迟问题,还会遇到很难维护上百个文件的依赖关系。

打包时webpack最核心的功能,其他的功能都是为了让打包这个功能更好,通过webpack对模块打包,既保留了单个模块的可维护性,又减少了页面的HTTP请求,减少了页面加载时间,从而增加了页面的显示速度,让整个应用的体验更好

5. Cookie & Session的区别

6. Session 的实现原理

7.HTTP请求方法中那些事幂等性的

8. 跨域处理方案

9. JSONP的缺点以及安全隐患

10. 为什么要做单元测试

11. 黑盒测试与白盒测试的区别

12. 怎样实现测试覆盖率

13. Async & Await 的使用

14. 块级元素、行内元素、inline-block的区别

15. 水平居中的办法

16. String、Array常用的方法

17. 输入一个URL到呈现页面的过程

18.Vue.js组件的生命周期

19. Git怎么合并提交记录

20. Linux常用的命令

21. HTTP2新特性

你可能感兴趣的:(前端面经,题库)