1、什么是mvc、mvp、mvvm?什么是前后端分离,前后端分离的优缺点?
mvc是model-view-control
2、什么是单页面应用?为什么使用单页面应用?单页面应用路由实现的方法和原理?
单页面应用可以叫做单页面多片段切换应用。通过控制页面的删除或者隐藏来实现单页面应用。单页面在移动端使用比较广泛。可以带来极致的体验。
3、什么是单线程?单线程与多线程的区别?什么是进程?进程和线程的区别和联系?
单线程:就是同一时间只能做一件事情。JavaScript是单线程的。
多线程:就是同一时间可以同时做好几件事情。
进程中包含多个线程,单线程,多线程都是相对于同一个进程来说的。
一个浏览器tab页面就是一个进程。进程中包含js引擎线程,GUI线程、事件触发线程等。
进程是CPU资源分配的最小单位。
线程是CPU的最小调度单位。
4、异步调用的常用方法?什么是异步调用?
回调函数、promise、async/await、generate。
异步调用主要是通过状态来管理的,到了这个时间点,或者任务完成后,就开始着手工作。例如:
setTimeout(function(){},100),这个也可以看成是异步调用,100ms后开始执行函数内的代码。
5、对webpack的理解?为什么需要webpck?对构建、打包、编译的理解?
webpack它是代码编译工具,有入口,出口、loader和插件。其天生就代码分割、模块化,webpack2.0中加入tree shaking,用来提取公共代码,去掉死亡代码。
构建、打包、编译他们都是为了提高开发效率,让前端朝着标准化的路上继续迈进
git的全部工作都是在这三个区之间工作。三个区是工作区,暂存区、远程仓库区。
建立一个git仓库:git init
clone 远程仓库:git clone +git仓库地址
本地仓库和远程仓库建立连接:git remote add origin +git地址
拉去远程仓库 git pull origin master(master分支)
提交到暂存区:git add +文件
提交到master,此时Header指针指到这里:git commit -m '文件描述’
推送到远程仓库:git push origin master
新建分支:git branch dev
删除本地分支:git branch -d dev (删除分支时,必须切换到另一个分支,才能删除想要删除的分支)
删除远程分支:git push origin -d dev
版本回退:git reset --hard HEAD^。
github是全球最大的代码托管平台。npm是全球最大的包管理工具。
github使用git clone +代码 ,可以下载代码。
npm通过npm install 安装,可以直接使用。
7、什么是构造函数?什么是原型链?原型链的用途?什么是对象?对象的用途?
构造函数也是函数,无非让其具有扩展性功能,它使用扩展性功能又用了原型链的原理,原型链又用了计算机中核心局部性原理,你自身没有往上级找,上级没有继续往外找,这其中其实闭包也用了这种原理。
对象:万物皆是对象,就是先总体看待事情,然后再局部。对象中又有key和value。也可能包含方法。
8、对http的认识?从输入url到页面展现都发生了什么?
这个参考链接:
9、什么是BFC?如何实现BFC?盒子模型认识?如何实现标准盒模型?
这个是css中的块级格式化上下文。
盒子模型有标准盒模型和IE盒模型,
10、什么是栈,什么是堆?栈用来存储什么,堆用来存储什么?
栈用来存储基本变量类型(numberstringBoolean耯eind ull)和指针地址。
堆用来存储对象(key和val)或者函数大括号里面的代码。
栈和堆有下面的连接关系
11、什么是组件?什么是插件?组件和插件的区别和联系?
组件是模版和UI逻辑的结合。而插件可以是一堆组件的结合,它是框架在功能上的扩展,如vue.prototype.add=function(){}
他们都是在封装、继承、多态思想上产生而来。
区别:
12、对nodejs的认识?什么是事件驱动?什么是非阻塞I/O?
nodejs是基于chrome V8引擎,以事件驱动,非阻塞I/O模型。他是一个可以在服务端运行js的环境。
事件驱动:就是触发一个事件,然后回调,再执行的过程。
非阻塞I/O:以异步来执行函数,先执行同步任务,耗时任务放在事件队列中,以此轮询执行
13、什么是hybrid?为什么使用hybrid?hybrid为什么可以不用审核直接发布?hybrid如何使用?
hybrid:H5与原生端交互混合技术方案
web、native两个人交流,要么web主动,要么native主动,要么web、native都主动。
hybrid本质是在原生的App中,使用webview作为容器承载web页面。这样就需要h5与native实现双向通信,这里我们就需要翻译员,保证我们两者的正常通信---跨语言通讯方案。native使用Java,object-c,h5使用jsbridge。两者通信翻译员就是jsBridge。是要有翻译员就要给他提供最优质的环境webview。一切的翻译也是通过webview的翻译机制。
基于webview的机制和开发的api,有三种方案
14、什么是浅拷贝?什么是深拷贝?如何实现深拷贝?
浅拷贝可以看做是一个快捷方式,实际共用一个内存地址。es6中的Object.assign({target},{obj})就是浅拷贝。
深拷贝相对于新开辟一块内存地址。使用JSON.stringify()可以实现深拷贝。
15、什么是缓存?缓存的分类?cache、localStorage和sessionStorage和理解?
缓存是为了更快的进行磁盘I/O而存在的。有浏览器缓存、CDN缓存、路由缓存、服务器缓存等。
cache中会有http响应头和响应行的信息,如cache-control:max-age:20000。
还有就是cookie。cookie一般浏览器不超过4k ,主要是用来保存用户登陆信息。当发送请求时,会自动把其带上。
而localStorage和sessionStorage是浏览器本地storage中用来存取值的,sessionStorage浏览器关闭了就不存在了,localStorage浏览器关闭依然存在。
16、什么是闭包?闭包的用途?什么是递归?递归调用的用途?
闭包就是有权访问另一个函数作用域内的变量函数都是闭包。
闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗!另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样
下面的就是闭包
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/35529.html