1.说说MVC和MVVM分别是什么?javascript
MVC全名是Model View 。是Controller模型(model)-视图(view)-控制器(controller)的缩写。MVC是比较直观的架构模式,用户操做->View(负责接收用户的输入操做)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。css
MVVM是Model-View-ViewModel的简写,MVVM是将“数据模型数据双向绑定”的思想做为核心,所以在View和Model之间没有联系,经过ViewModel进行交互,并且Model和ViewModel之间的交互是双向的,所以视图的数据的变化会同时修改数据源,而数据源数据的变化也会当即反应view。html
2.请描述你所熟悉的Web服务器框架(如Django)做为一个成熟的Web框架,须要提供哪些重要的功能模块?前端
提供了网站开发的经常使用模块:处理用户请求、操做数据库、模板渲染、配置文件管理等vue
image.pngjava
Nodenode
3.Node.js的适用场景?react
高并发、聊天、实时消息推送webpack
实时应用:如在线聊天,实时通知推送等等(如socket.io)web
分布式应用:经过高效的并行I/O使用已有的数据
工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)
利用稳定接口提高Web渲染能力
先后端编程语言环境统一:前端开发人员能够很是快速地切入到服务器端的开发(如著名的纯Javascript全栈式MEAN架构)
−g是什么?
在Node.js中-g表示全局安装模块
4.了解npm,spm,nodejs吗,请简要描述?
NPM便于JavaScript开发者共享和重用代码,它能够很容易地更新你的代码;再分享。是全球最大的开源库生态系统。
SPM是淘宝社区电商业务(xTao)为外部合做伙伴(外站)提供的一套跟踪引导成交效果数据的解决方案。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。它使咱们可以在本地运行javascript。
(若是会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
服务器Node.js和浏览器js的区别是什么?Node.js把js从客户端迁移了到服务端、主要作了哪些工做?为何说Node.js适合作高并发的互联网应用?
Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。Node.js 使用事件驱动,非阻塞I/O 模型而得以轻量和高效,很是适合在分布式设备上运行数据密集型的实时应用。
5.对Node的优势和缺点提出了本身的见解?
*(优势)由于Node是基于事件驱动和无阻塞的,因此很是适合处理并发请求,
所以构建在Node上的代理服务器相比其余技术实现(如Ruby)的服务器表现要好得多。
此外,与Node代理服务器交互的客户端代码是由javascript语言编写的,
所以客户端和服务器端都用同一种语言编写,这是很是美妙的事情。
*(缺点)Node是一个相对新的开源项目,因此不太稳定,它老是一直在变,
并且缺乏足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子。
image.png
React
6.react虚拟DOM运行机制是什么?
在React中,render执行的结果获得的并非真正的DOM节点,结果仅仅是轻量级的JavaScript对象,咱们称之为virtual DOM(虚拟dom)
7.react中prop和state的区别?
须要理解的是,props是一个父组件传递给子组件的数据流,这个数据流能够一直传递到子孙组件。而state表明的是一个组件内部自身的状态(能够是父组件、子孙组件)。
8.redux的原理?
Redux 把一个应用程序中,全部应用模块之间须要共享访问的数据,都应该放在 State 对象中。这个应用模块多是指 React Components,也多是你本身访问 AJAX API 的代理模块,具体是什么并无必定的限制。State 以 “树形” 的方式保存应用程序的不一样部分的数据。这些数据可能来自于网络调用、本地数据库查询、甚至包括当前某个 UI 组件的临时执行状态(只要是须要被不一样模块访问)
9.react和vue有哪些不一样,说说你对这两个框架的见解
相同点
都支持服务器端渲染
都有Virtual DOM,组件化开发,经过props参数进行父子组件数据的传递,都实现webComponent规范
数据驱动视图
都有支持native的方案,React的React native,Vue的weex
不一样点
React严格上只针对MVC的view层,Vue则是MVVM模式
virtual DOM不同,vue会跟踪每个组件的依赖关系,不须要从新渲染整个组件树.而对于React而言,每当应用的状态被改变时,所有组件都会从新渲染,因此react中会须要shouldComponentUpdate这个生命周期函数方法来进行控制
组件写法不同, React推荐的作法是 JSX + inline style, 也就是把HTML和CSS全都写进JavaScript了,即’all in js’; Vue推荐的作法是webpack+vue-loader的单文件组件格式,即html,css,js写在同一个文件;
数据绑定: vue实现了数据的双向绑定,react数据流动是单向的
state对象在react应用中不可变的,须要使用setState方法更新状态;在vue中,state对象不是必须的,数据由data属性在vue对象中管理
image.png
Vue
怎么定义vue-router的动态路由?怎么获取传过来的动态参数?
在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id
vue-router有哪几种导航钩子?
三种,一种是全局导航钩子:router.beforeEach(to,from,next),做用:跳转前进行判断拦截。第二种:组件内的钩子;第三种:单独路由独享组件
vuex是什么?怎么使用?哪一种功能场景使用它?
vue框架中状态管理。在main.js引入store,注入。新建了一个目录store,….. export 。场景有:单页应用中,组件之间的状态。音乐播放、登陆状态、加入购物车
Vue的双向数据绑定原理是什么?
vue.js 是采用数据劫持结合发布者-订阅者模式的方式,经过Object.defineProperty()来劫持各个属性的setter,getter,在数据变更时发布消息给订阅者,触发相应的监听回调。
请详细说下你对vue生命周期的理解?
总共分为8个阶段建立前/后,载入前/后,更新前/后,销毁前/后。
建立前/后: 在beforeCreated阶段,vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,$el尚未。
载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但仍是挂载以前为虚拟的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message成功渲染。
更新前/后:当data变化时,会触发beforeUpdate和updated方法。
销毁前/后:在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,可是dom结构依然存在
说下vue组件之间的通讯?
非父子组件间通讯,Vue 有提供 Vuex,以状态共享方式来实现同信,对于这一点,应该注意考虑平衡,从总体设计角度去考量,确保引入她的必要。
父传子: this.$refs.xxx 子传父: this.$parent.xxx
还能够经过$emit方法出发一个消息,而后$on接收这个消息
什么是RESTful API?怎么使用?
是一个api的标准,无状态请求。请求的路由地址是固定的,若是是tp5则先路由配置中把资源路由配置好。标准有:.post .put .delete
image.png
Webpack
谈谈你对webpack的见解
WebPack 是一个模块打包工具,你可使用WebPack管理你的模块依赖,并编绎输出模块们所需的静态文件。它可以很好地管理、打包Web开发中所用到的HTML、JavaScript、CSS以及各类静态文件(图片、字体等),让开发过程更加高效。对于不一样类型的资源,webpack有对应的模块加载器。webpack模块打包器会分析模块间的依赖关系,最后 生成了优化且合并后的静态资源。
webpack的两大特点:
code splitting(能够自动完成)
loader 能够处理各类类型的静态文件,而且支持串联操做
webpack 是以commonJS的形式来书写脚本滴,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。
webpack具备requireJs和browserify的功能,但仍有不少本身的新特性:
对 CommonJS 、 AMD 、ES6的语法作了兼容
对js、css、图片等资源文件都支持打包
串联式模块加载器以及插件机制,让其具备更好的灵活性和扩展性,例如提供对CoffeeScript、ES6的支持
有独立的配置文件webpack.config.js
能够将代码切割成不一样的chunk,实现按需加载,下降了初始化时间
支持 SourceUrls 和 SourceMaps,易于调试
具备强大的Plugin接口,大可能是内部插件,使用起来比较灵活
webpack 使用异步 IO 并具备多级缓存。这使得 webpack 很快且在增量编译上更加快