面试题总结

1.说说你对盒子模型的理解
盒子模型分为border边距,content内容,margin外边距,padding内边距
盒子模型分为俩种模式一种标准模式,一种IE模式
标准模式计算方式:box-zing:content-box
IE模式计算方式:box-zing:border-box
2.css选择器有哪些?优先级?哪些属性可以继承?
ID选择器-类选择器-标签选择器-相邻选择器-子选择器-后代选择器-通配符选择器-属性选择器-伪类选择器
可继承:font-size,font-fmily,color
不可继承:宽,高,边框,外边距,内边距
3.元素水平垂直居中的方法有哪些?如果元素不定宽高呢?
父元素设置display:flex,子元素margin:auto
父元素相对定位,子元素绝对定位,top:50%,left:50%,然后tansform:tanslate(-50%,-50%)
直接再父元素设置弹性盒子,然后justify-conten:center,align-items:center
使用单元格居中,直接父元素display:table-cell,text-content-center,vertical-align:middle
父元素使用display:grid,子元素align-slef:center,justify-self:center
4.怎么理解回流跟重绘?什么场景下会触发?
首先浏览器会解析html,生成dom树,解析css成cssom树,然后把dom和cssom结合起来,形成rendertree,然后根据生成的渲染树进行回流,得到节点的几何信息,然后重绘就是根据回流得到的几何信息,得到节点的绝对像素,最终将像素发生给GPU,展示再页面上
回流的触发:添加删除dom元素,元素的位置,尺寸发生变化,内容发生变化,窗口尺寸变化,都会触发回流
重绘的触发:颜色,文本,阴影发生变化,还有透明度得到
回流一定会触发重绘,重绘不会触发回流
避免减少的话就是,避免使用css的js表达式,避免多级内联样式,避免csstable布局。
5.什么是响应式设计?响应式设计的基本原理是什么?如何做?
首先响应式设计就是网络页面响应布局,就是给用户的不同的设备比如屏幕的大小,尺寸做一个响应式的调整
响应式的设计实现是通过四部分实现,分别式,媒体查询,百分比,vw/vh,rem实现的。
媒体查询就是通过媒体查询可以给不同分辨率的设备设置样式,比如给不同分辨率的设备设置不同大小的背景图片。
百分比就是根据页面的拉伸,扩大,做一个百分比的自适应,根据用户的屏幕设置响应式的自适应。
Vw就是相当于屏幕的宽度,vh设置屏幕的高度
Rem就相当于px像素,px和rem会有一个对比,一个转换
总结就是响应式设计就是面对不同分辨率的设备有一个灵活的调整,能够解决不同设备的一个自适应的问题。
6.如果要做优化,CSS提高性能的方法有哪些?
总首先都知道css是写样式的,然而css还可以提升性能,css提升性能的几种方式有
使用内联首屏加载css,即时内联css可以提升浏览器的渲染时间,然后就是资源压缩,使用webpack打包工具压缩css的体积,然后就是异步加载css,css他本身是有阻塞,解决不必要的阻塞,就得异步加载css,异步加载css的方式就是使用js把link标签追加到head尾部,还有一种方法再ref属性中添加alertnate样式表,合理使用选择器,就是避免嵌套复杂选择器,避免使用属性选择器和通配符选择器,然后就是减少重绘啊等等。
7.对前端工程师这个职位是怎么样理解的?它的前景会怎么样
前端工程师是最贴近用户的,比后端,运维,数据库,安全的程序员都接近
所以前端程序员可以更好的提升用户的体验,给用户一个满意的答卷
8.说说JavaScript中的数据类型?存储上的差别?
首先数据类型分为基本数据类型,引用数据类型
基本数据类型包括string,number,boolean,null,undefind,symbol,bigint
引用数据类型包括:数组,对象,方法等等
基本数据存储在栈中,引用数据类型存储再堆中
9.typeof 与 instanceof 区别
Typeof和instanceof都是用来判断类型的
Typeof判断的时候返回的数据的类型,而instanceof判断返回的是true或flase,它是通过对象的原型链来进行判断的
Typeof时候判断基本数据类型,判断引用类型的时候不太准确
Instanceof主要判断引用类型,判断基本类型不准确
如果相使用一个统一的判断方式,推荐使用object.protopy.tostring来进行判断。
10.说说你对闭包的理解?闭包使用场景
就是内部函数可以访问到外部函数的作用域
可以创建私有变量和私有作用域
可以延长变量的生命周期
其作用可以创建私有方法,私有属性,缺点就是变量会常驻内存,使用不当会造成内存泄漏
使用场景就是,防抖和节流,vue中的data都是使用的闭包。
11.bind、call、apply 区别?如何实现一个bind?
首先apply,call,和bind都是来改变一个函数执行上下文,改变函数的this指向
Apply第一个参数是this的指向,第二个参数是一个数组,他会自己执行,如果第一个参数为null和this会执行window
Call基本和apply一样
而bind第一个参数是this指向,第二个参数是参数列表,不会立即指向,但会返回一个永久改变this指向的函数
实现bind就是首先判断一个对象是否是函数,然后获取参数,最后根据调用方式,传入不同的绑定值
12.说说你对事件循环的理解
首先说一下js是单线程的,所以会有同步任务和异步任务,异步任务同时也会包括微任务和宏任务
然后事件循环就是所有任务进入执行栈中,先去执行同步的任务,一步步的进入callstak中执行,遇到异步任务的时候会先记录下来,等到时机到了才执行,时机一到,就是进入callback队列中执行,接下来调用eventlop轮询机制,轮询的去查询调用栈是否有任务,然后继续执行,像永动机一样。
13.DOM常见的操作有哪些
创建节点:createElemnt,createTextNode,createAttribute
查询节点:querySeletorAll,querySeletor,getElemntById,getElemntByclassName,getElemntByTagName,getElemntBysName
添加节点:innerHtml,appendChilren,innerBefore
更新节点:innerHtml,innerText
删除节点:removeChild
14.说说你对BOM的理解,常见的BOM对象你了解哪些?
BOM就是浏览器对象模型,它把浏览器视为对象模型,有一个顶级对象是window
主要的BOM对象有location,window,navgtor,screen,history
Location中有几个常用的属性,pathname,hash,port,herf等等
Navgtor主要是获取浏览器的属性,还scren获取客户端显示器的信息
History用来浏览器的前进后退,页面的跳转,跳转使用go,前进forword,后退back
15.Javascript本地存储的方式有哪些?区别及应用场景?
分别有cookie,sessionStoreage,localStoreage
cookie是存在浏览器中的,存储大小只有4k,而sessionStore和localStore有5M大小,一般用于用户登录的时候存储的标识,下次登录可以直接登录那种,可以设置过期时间,但是如果不设置https加密的话,不安全,别人可以窃取你的cookie信息模仿你登录。
SeesionStoreage也是存储到浏览器的,它的生命周期的话,会话会在浏览器关闭的情况下清楚信息,一般存储敏感账号一次性登录,使用方式获取使用getitem,修改使用setitem
Localstoreage可以长时间永久的存储在浏览器中,不手动删除的话会永久存在,一般存储长期的令牌等等。使用方式,获取getitem,修改setitem,清楚removeitem,一次性删除所有的使用clear。
16.什么是防抖和节流?有什么区别?如何实现?
防抖就是在一定的时间内执行最后一次操作,节流的话就是在一定的时间内多次请求,变为一次请求,实现方式都使用定时器,闭包进行实现。
17.如何通过JS判断一个数组
IsArray,instanceof,object.protopy.toString.call进行判断。
18.说说你对作用域链的理解
首先说说作用域,作用域分为全局作用域,和局部作用域,块级作用域
全局作用域的话就是创建scrit的时候是全局的,在创建的时候会生成一个上下文对象GO
局部作用域的话页是函数作用域,在调用函数的时候会创建一个上下文对象AO
块级作用域体现在let和const变量的作用域
作用域链的话,就是访问一个对象的变量的时候,会现在当前作用域下查找,找不到在去上一级作用域找,找到返回直到全局作用域下结束。
19.JavaScript原型,原型链 ? 有什么特点?
原型的话,每个构造函数中都有prototype也就是原型,当你构造函数new一个实例的话,这个实例有一个__proto__属性,这是属性指向的就是对象的原型。
原型链的话就是当你视图访问一个对象的属性的时候,先在自身查找,找不到才去对象的原型上去查找,以此类推,直到找到和属性名一致的话就返回,否则就会返回null,也就是原型链的顶端。
20.请解释什么是事件代理
事件代理就是事件委托,就是把子元素的事件委托个父元素,去监听事件,去触发事件,相当于事件冒泡的机制
比如有一个ul里面有100个li,给每个li一个点击事件会特别的影响性能,所以使用事件代理的形式,事件冒泡有里向外触发,委托给父元素直接去触发,节省性能。
21.谈谈This对象的理解
首先通俗来说就是谁调用的this就执行谁,这个不太全面
下面说说this的绑定规则,它主要有4中绑定规则,默认绑定,隐士绑定,new绑定,显示绑定
默认绑定就是全局有一个变量,在一个函数里去调用这个变量,就可以直接获取这个变量,应该在这个情况下this指向全 局window
隐士绑定的话就是可以直接访问对象的方法
New绑定就是this指向new出来的那个对象
显示绑定就分为apply,call,bind绑定。他们可以改变this的指向
还有一种特殊情况,箭头函数是没有this指向,它指向的是离它最近的那个作用域中的对象
22.new操作符具体干了什么
New操作符主要就是在构造函数中new一个实例,new出来的实例可以访问到构造函数中的属性和方法
底层实现就是首先创建一个空对象,然后空对象的原型链和构造函数的原型链进行连接
之后构造函数的this绑定到新建的对象上,最后判断构造函数返回的类型,如果是原始值就忽略,否则是对象的话就返回这个对象。
23.null,undefined 的区别
Null的话就是这个值定义了,但是没有赋值,是一个空值
Undefined就是这个地方应该有个变量或者属性,但是没有定义它
24.javascript 代码中的"use strict";是什么意思
它是es5的一种严格的模式,使得js运行更加规范的模式,消除js的语法的不合理,不严谨之处,减少一些怪异行为。
25.同步和异步的区别
我的理解就是,同步的话就是一步步的进行运行,任务之间是由等待的,等待上一个任务完成下一个任务才能继续
异步的话,就是不同步执行任务,任务之间不需等待,任务之间不阻塞,分别去执行任务
26.谈一谈箭头函数与普通函数的区别
首先箭头和普通函数的this指向不同,箭头函数中没有this指向,它是获取的上下文中的this
箭头函数不能当作构造函数,所以不能new实例
箭头函数中不能使用arguments,多个参数的情况是rest
箭头函数没有原型,不能当作生成器函数,所以不能使用yield
27.JS 数组和对象的遍历方式,以及几种方式的比较
for in for forEach
首先for in 的话会判断每一个array的属性,所以开发大
for 的话没循环一次都会去判断下长度,所以速度较慢
forEach的话速度较快,但是不能循环对象,也不能使用break,continue得使用return跳出循环
28.如何解决跨域问题
Jsonp的话是在发生在script中,传入src,然后获取json数据,返回个前端,之后调用回调函数,来实现跨域
Cors跨域,在后端头部信息里面设置安全域名
Nginx代理跨域
Node中间件跨域
Ifreme跨域
29.XML和JSON的区别
JSON体积小传输速度快
Json在显示信息描述方面没有xml好
Json和js能刚好的交互
Json速度远远快于xml
30.谈谈你对webpack的看法
首先webpack是前端半自动的打包器,可以把项目打包成静态文件,打包出一个单页面html,以及静态资源,css等等
主要webpack.config.js配置入口就是从哪里开始打包,比如vue项目就找到一个入口文件,因为vue的组件都是级联调用的,找到一个入口文件进行打包,然后就是配置出口output,output就是打包的资源放到哪里,打包成什么名字等,还有mode就是是否是开发模式,或者是生成模式,还有loader,loader就是编译js,css,vue等等,可以把sass编译成css把es6编程成es5的babel-loader,还有编译vue的等等,还有插件plugin就是扩展webpack功能的,主要webpack可以实现压缩css压缩js,有资源模块,还能热更新,热替换等等
常用的插件,生成html的,热更新的,压缩jscss的,把模块暴露给全局的,等等
31.webpack的打包原理
首先从配置文件获取所以的参数,然后根据参数执行compoer对象,找到所以的配置的插件,执行run开始编译,找到入口文件根据入口文件递归关联的文件进行loader的一个编译,编译完之后把所以的模块放到chuk中,最终输入一个单独文件到文件列表。
32.如何优化webpack打包速度
我所了解的就是压缩js压缩css,把css进行分离到单独文件中,压缩文件,图片,提取页面的公共资源基础包分离,启动多线程。
33.说说webpack中常见的Loader?解决了什么问题?
Style-loader把css添加到style标签中
Less-loader,sass-loader把less,sass编译成css
Babel-loader把es6代码编译成es5代码
File-loader编译文件,解析文件
Url-loader把图片转成base64格式
34.说说webpack中常见的Plugin?解决了什么问题?
Html-webpack-plugin自动生成一个html文件,打包生成的js模块引入到这个html中
Claen-webpack-plugin清除目录,就是之前dist里面有个css文件啥的就是把之前的给清楚掉
Mini-css-extrt-plugin把提取css到单独的文件中
Defineplugin创建配置的全局对象
Copy-webpack-plugin复制文件或者目录到指定的区域
35.说说你对promise的了解
首先promise是为了解决异步的
然后它里面有三种状态,一种等待pading,一种成功,一种拒绝
首先执行reslove的话会走then里面,then执行的才是异步操作,reject的话就会走catch
36.async函数是什么,有什么作用
async函数是为了声明一个函数为异步的,它是对promise的封装
有async就得有await
async执行之后会返回一个promise对象,await执行的才是异步操作
37.有使用过vue吗?说说你对vue的理解
Vue的话就是一个构建用户界面的js框架,用来创建单页应用的一个框架
它在开发者里有着百分之89的满意度,是由中国人优雨溪开发的,有着很好的开发团队,很好的生态
Vue主要有俩大核心特点,数据驱动,组件化,采用的是虚拟dom,内部使用的diff算法来操作dom,有路由配置,共享仓库vuex,从vue1.0开发到2.0在开发到3.0,使用起来非常的简单易学。
38.你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢
单页面应用就是只有一个主页面比如vue只有一个app.vue这一个主页面,其他的组件然后都互相依赖这一个主页面,这就是所理解的单页面
单页面的优点的话就是切换速度快,只组件之间切换,更改了内容可以局部刷新,不需要整个页面都刷新
缺点的话首次渲染速度比较慢,不利于搜索引擎的抓取。
实现的话主要就是通过hash,和history来实现,箭头hash url的变化来实现页面的刷新跳转,history通过pushstate在浏览历史记录添加记录,popstate在history变化触发,replatestate修改历史记录。
39.SPA首屏加载速度慢的怎么解决?
减少入口文件的体积
静态资源本地缓存
图片资源的压缩
开启Gzip压缩
组件重复打包
40.VUE路由的原理
首先vue路由是由俩种模式实现的,一种hash模式,一种history模式
Hash模式是通过url#号后面的参数进行页面的跳转,通过onhashchange这个属性来实现window的监听,
History模式是html5中的特性,可以实现页面的前进,后退,跳转,可以使用pushstate在浏览记录里添加浏览记录,使用popstate,在history发生变化时监听,使用replaeestate修改浏览记录使用。
vue理由主要就是由router-view去展示指定的页面,使用router-link去页面跳转
Url响应有onhashchangge和pushstate来监听
41.Vue中组件和插件有什么区别?
组件的话就是比如vue中的每一个.vue文件就是组件,组件可以实现组件简的解耦
插件的话就是比如在vuemian里面.use一个elemntui组件就是一个插件,可以在mian.js中引入外部的第三方插件。
42.Vue组件之间的通信方式都有哪些
父传子,子传父,兄弟传值,vuex共享传值
父传子的使用props来获取值
子传父的话使用$emit去触发自定义事件
兄弟传值,引入一个外部的bus文件来去监听这个bus来实现传值
Vuex共享仓库传值
43.你了解vue的diff算法吗?说说看
Diff算法从三个方向来说
第一就是diff算法底层会有一个patch函数,来对比新虚拟节点和旧的虚拟节点的不同之处,来实现最小量的局部的一个更新,这个key很重要,有了key才能体现出diff算法的最大效率
第二就是patch函数会判断俩个节点是否是同一个节点,是的话进行最小量更新,不是的话暴力删除旧的,插入新的
第三就是patch函数会判断俩个节点是否是同层比较,如果是跨层比较也是会暴力删除旧的,插入新的
44.为什么需要 Virtual Dom
因为操作真实的dom很麻烦,还得考虑浏览器的兼容问题,在更新dom的时候会全部覆盖影响性能,所以后续出了diff算法操作虚拟dom
首先虚拟dom就是一个个的js对象,对象里面有六种属性,分别是sel选择器,data数据,children子节点,text文本,elm属性,key,它底层是通过snabbdom库中的h函数进行创建的,h函数创建出来虚拟节点,然后通过diff算法中最核心的对象patch去更新到真实dom上。
45.Vue3.0的设计目标是什么?做了哪些优化
就是变得更小,更快,更友好
主要是把选项式api换成了组合式api,响应式由object.definepropty换成了proxy代理,
Template标签下可以有多个跟标签,新增ref,reactive,toref响应式钩子函数,可以直接修改删除对象中的属性,生命周期作了改变,新增setup语法糖。
46.Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?
之前的选项式api的话在维护起来非常的麻烦,整体的代码逻辑分开了,而组合式api就是容易维护,把所有的代码逻辑都写在了一块,程序员维护起来很方便。
47.说一下Vue数据响应式的原理
首先vue2中的数据响应式是通过object.definepropy实现的,首先获取data中的数据,然后给数据添加访问器,当获取数据时执行get方法,当修改数据时执行set方法,然后当数据发生改变时会调用whther订阅者去触发更新操作,然后vue会使用diff算法去对比来新虚拟节点和旧虚拟节点的差异,最终完成最小量的更新,更新到真实的dom上展现给用户。
48.说说对 React 的理解?有哪些特性?
React也是构建用户界面的js框架,采用的单向数据流,组件化,虚拟dom,声明式编程方式,在react中一切都可视为组件,有函数式组件和类组件,有hook钩子,有react-redux共享仓库,语法灵活,比较适合大型复杂的项目开发,采用jsx语法进行编程。
49.说说 Real DOM 和 Virtual DOM 的区别?优缺点?
真实dom在页面渲染完的每一个节点都是一个真实的dom结构
虚拟dom是一个个的js对象,形成的dom树
虚拟dom不会进行重绘和回流,而真实dom会频繁重排和重绘
真实dom解析速度慢,效率低,内存占用量高,性能差,频繁操作真实dom,导致重绘,回流
虚拟dom减少了真实dom的频繁更新,减少了重绘和回流
50.说说 React 生命周期有哪些不同阶段?每个阶段对应的方法是?
分为三个阶段,挂载前,更新时,卸载后
挂前前:compnonetDitmount,constrtor,componetwiimount
更新时:shopldcomontupdate,render,compontditupdate
卸载后:compontditunmount
51.说说 React中的setState执行机制
首先传入俩个参数第一个是要修改的数据,第二个参数是要修改成什么值
通过调用setstate,来改变组件内部数据的状态
Setstate分为同步执行,和异步执行
同步执行发生在生命周期函数中或者react合成事件中
异步执行发生在原生dom事件或者settimeout中
52.说说对React中类组件和函数组件的理解?有什么区别?
类组件顾名思义是由es6类创建的,函数组件是由函数进行创建的,比较简单
类组件需要频繁操作this,函数组件没有this执行
类组件和函数组件编写方式不同,状态管理不同,生命周期不同
函数组件里面会有hook去修改状态,创建生命周期,语法简单
53.说说对React Hooks的理解?解决了什么问题?
Hooks是react16.8新增的特性,它可以在函数式组件中使用,常用的hook有usestate,useEffect,一个是定义状态的,一个是定义生命周期的,有了hooks函数式组件就变得非常简单,方便一目了然。
54.说说你对Redux的理解?其工作原理?
Redux相当于一个共享状态的容器,和vuex差不多,它不仅仅支持react,还支持其他js框架
Redux首先需要createstore创建状态,然后引入reducer数据,然后过去状态调用getstore,使用dispath触发action,然后使用subscrble订阅store的改变,然后执行回调函数执行修改。
55.说说 React 性能优化的手段有哪些
不要使用内联函数,使用纯组件,列表渲染使用key,使用shudcomoonitdidupdate生名周期,使用路由懒加载,如果式类组件,在constoret中绑定bind改变this指向。使用reactfargment避免额外标记,优化react的条件渲染,不要在render中导出数据。
56.vue、react、angular 区别
这里说说vue和react
首先他们的相同点是,都是构建用户界面的js框架,都使用的diff算法和虚拟dom,都可以在服务端进行渲染,都是组件化开发,数据驱动视图
不同点vue是双向数据绑定,react是单向数据绑定,他们的diff算法不同,响应式不同,vue比较适合小型简单的项目,react适合大型复杂多人合作的项目,react的逻辑方面很灵活。
57.说说你对 TypeScript 的理解?与 JavaScript 的区别
Ts的话基本上和后端java开发语言差不多,面向对象的开发思想,创建变量,创建方法等待,都需要生命对应的数据类型,有class,抽象类,接口等一概念,ts只要就是对类型做了很好的判断,ts在编译是会编译成js来执行
Js的话是前端的一门脚本语言,用来和html进行交互
Js是脚本语言,ts是面向对象编程语言,js不支持模块,ts支持模块
Ts有接口,js没有接口,js比ts执行速度快
58.说说你对 TypeScript 中泛型的理解?应用场景?
泛型就是使用<>括号来表示,可以用来生命函数,类,接口
在声明函数,类,接口的时候,不需要指定类型,在编译的时候,自动编译出想要的类型。
59.说说你对微信小程序的理解?优缺点?
微信小程序是2017年推出的,可以不需要下载,扫一扫或者搜一搜即可使用,有着很好的生态,借助微信开发文档即可进行开发,开发门槛低,使用方便,降低兼容的限制,用户量大,缺点就是用户存留,内存限制只有2M大小,不可以开发大型应用,受空微信的管控。
60.说说你对发布订阅、观察者模式的理解?区别?
观察者模式就是定义对象的一对多的依赖关系,当一个对象的状态发生的改变,其他依赖于它的就会自动更新,观察者模式就是观察者和被观察者的一种通信方式。
就那个例子来说,当你订阅了一份报纸,报社就会给你发一份报纸,有多少个人订阅报纸,报社就会发多少报纸
发布订阅模式,就是消息发送者不会给把消息发送给特定的订阅者,不需要关系对方的存在,订阅者只需要关系自己感兴趣的事情,不需要关系对方的存在,只需要接收自己感兴趣的内容
61.项目做过哪些性能优化
减少http请求数
减少dns查询
图片懒加载
避免重定向
避免使用ifreme
避免图片src为空
压缩js,css,图片,字体等
Javascript放在也的底部
减少dom元素数
减少dom操作
62.描述浏览器的渲染过程,DOM树和渲染树的区别
首先浏览器会把html渲染成dom树
把css渲染成cssom树
然后结合cssom树和dom树形成renderTree
最中把渲染树渲染到页面,展示给用户

dom树和渲染树的区别
Dom树和html标签一一对应,包括head和隐藏元素
渲染树就是文本中的一个个的节点,每个节点都有css属性。
63.你认为什么样的前端代码是好的
高复用低耦合,好维护,好扩展
64.从浏览器地址栏输入url到显示页面的步骤
解析url,dns解析域名得到服务ip
建立连接,三次握手tcp连接
发送请求,发送请求到目标服务器
响应请求,获取服务端响应的数据
拿到数据把html解析成dom树
把css下载下来解析成cssom树
结合dom树和cssom树形成renderTree
之后找到节点的位置,绘制页面的元素,渲染到页面
65.http 请求报文响应报文的格式
请求行,请求头,请求体
响应行,响应头,响应体
66.Token cookie session 区别
Token相当于一个令牌,客户端A访问服务器,服务器给客户端token,客户端拿着token访问服务器,服务器校验token,返回数据给客户端
Cookie客户端A访问服务器,服务器返回cookie给客户端,客户端存储cookie,下次拿着cookie访问服务器,服务器响应数据
Session客户端A访问服务器,服务器存储客户端的value中,返回key给客户端,客户端拿着key访问服务器,服务器响应数据给客户端
区别
Token就是一个令牌一个字符串,后端产生给客户端的
Cookie存储在客户端,只有4k大小,可设置过去时间,不安全
Session存储在服务器,内存根据服务器来定,相对安全。
67.CORS跨域的原理
CORS主要就是一种基于http header的机制,该机制通过除了自身服务器其他域,通过设置服务端和浏览器端的cors机制,来实现跨域资源请求
俩种模式的请求简单请求和预捡请求
简单请求
请求方法:post,get,head
Content-type值:text/plain muitpath/form-data,application/x-www
header请求字段:accecp,accecp-language,save-data,width
预捡请求,主要就是预捡请求header,预捡响应header
68.什么是MVVM
首先M代表model,也就是视图于model之间的交互,服务端进行交互逻辑的
V代表view视图,也就是显示html的地方
VM就是view和model之间的桥梁用来连接view和model,mvvm是双向绑定的,view发生数据改变model也随着改变,model改变view视图也改变
69.说说你对版本管理的理解?常用的版本管理工具有哪些?
版本管理我的理解就是管理代码的地方,是一个在线的管理代码版本的地方,可以上传代码,更新代码,拉取代码的一个管理容器
我一共使用过svn管理工具和git管理工具
70.说说你对Git的理解?
Git是一个目前非常强大的一个分布式管理代码的工具,可以在线管理我门的项目的,实时的上传代码,更新代码,拉取代码的工具
71.说说Git常用的命令有哪些
Git clone 克隆代码
Git status 查看当前代码的状态
Git add. 暂存所有代码到缓存区
Git commit -m 提交代码到本地仓库并写上注释
Git pull 更新远程代码到本地
Git push 提交本地代码到远程仓库
Git branch 查看本地所有分支
Git branch -r 查看远程所有分支
Git branch -a 查看本地和远程分支
Git merge 合并分支
Git chackout [分支名] 切换分支
Git stash 暂时把未提交的移除
Git stash pop 删除储藏的代码
72.说说 git 发生冲突的场景?如何解决?
某个文件有一个同事修改了,另一个同事之后又修改了这个地方就会发生冲突
我一般解决冲突的话,先把本地的代码提交到本地,然后在拉取线上代码,手动解决冲突,或者使用三部曲,git stash git pull git stash pop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值