1、JS+jQuery
(1)操作dom的方法
JS 说明 jQuery 说明 getElementById() id查找 getElementsByTagName() 标签名查找 getElementsByClassName() 类名查找 querySelector() css选择器(第一个)查找 querySelectorAll() css选择器(所有)查找 getElementsByName() name属性查找 document.title 设置标题 document.body 设置内容 createElement() 创建元素节点 createTextNode() 创建文本节点 appendChild() 添加结点
JS 说明 jQuery 说明 A.appendChild(B) 插入父元素末尾 A.insertBefore(B,ref) 插入父元素的某个元素之前 A.removeChild(B) 删除父元素下的子元素 obj.cloneNode(bool) 复制元素 A.replaceChlid(new,old) 替换元素
2、HTML+CSS
(1)url、href和src的区别
URL(Uniform Resource Locator)统一资源定位符
URL结构分为两部分: 模式(或称协议) + 服务器名称(IP地址)http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
ldap——轻型目录访问协议搜索
file——当地电脑或网上分享的文件
news——Usenet新闻组
gopher——Gopher协议URL的分类:绝对URL 和 相对URL
hre(Hypertext Reference)超文本参考
由当前属性定义的需要的锚点或资源之间定义一个链接或者关系
浏览器明白当前资源是一个样式表,页面解析不会暂停
src (Source)源
嵌入当前资源到当前文档元素定义的位置
在浏览器下载,编译,执行这个文件之前页面的加载和处理会被暂停
3、W3C标准
4、ES6
5、Vue
(1)MVC 和 MVVM 区别
MVC:Controller里面把Model的数据赋值给View。
MVVM:ViewModel层(数据的双向绑定)实现视图、模型相互转换
实现的方式是:DOM事件监听。View不能和Model直接通信MVVM与MVC最大的区别:实现了View和Model的自动同步
Vue没有完全遵循MVVM思想:Vue提供了$refs这个属性,让Model可以直接操作View
(2)为什么data是一个函数
数据以函数返回值形式定义,这样每复用一次组件,就会返回一分新的data
各个组件实例维护各自的数据
所有组件实例共用了一份data,就会造成一个变了全都会变的结果。
(3)vue组件有哪些通讯方式
1、props 和 e m i t ∗ ∗ 父 组 件 ∗ ∗ 通 过 ∗ ∗ p r o p s ∗ ∗ 向 ∗ ∗ 子 组 件 ∗ ∗ 传 递 数 据 ∗ ∗ 子 组 件 ∗ ∗ 通 过 ∗ ∗ emit **父组件**通过**props**向**子组件**传递数据 **子组件**通过** emit∗∗父组件∗∗通过∗∗props∗∗向∗∗子组件∗∗传递数据∗∗子组件∗∗通过∗∗emit触发事件向父组件**传递数据
2、$parent 和 $children 获取当前件的父组件和当前组件的子组件。
3、$refs 获取组件实例。
4、vuex 状态管理。
(4)Vue的生命周期方法有哪些?一般在哪一步发送请求?
beforeCreate 在实例初始化之后,在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问。
created 实例已经创建完成之后被调用,数据观测、属性和方法的运算、watch/event 事件回调,没有 e l ( 获 取 V u e 实 例 关 联 的 D O M 元 素 ) 。 如 果 非 要 想 与 D O M 进 行 交 互 , 可 以 通 过 ∗ ∗ v m . el(获取Vue实例关联的DOM元素)。 如果非要想与 DOM 进行交互,可以通过**vm. el(获取Vue实例关联的DOM元素)。如果非要想与DOM进行交互,可以通过∗∗vm.nextTick** 来访问 DOM。
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroy
activated
deactivated
qs
6、Webpack
7、Git
8、React
9、计算机网络
10、其他
(1)同步和异步的区别?
举例:
同步:对讲机
异步:QQ普通B/S(浏览器/服务器模式)(同步):提交请求->等待服务器处理->处理完成(期间浏览器不能干其他事)
AJAX技术(异步):请求通过事件触发->服务器处理(浏览器可以运作其他事)->处理完成同步是阻塞模式,两个线程运行相关,其中一个线程阻塞等待另一个线程运行。发送方付出数据后,等待接收方响应后才发下一个数据包的通讯方式。
异步是非阻塞模式,异步是两个线程毫无相关,自己运行自己的。发送方发出数据后,不等的接收方的响应,接着发送下一个数据包的通讯方式。
(2)session和cookie的区别
cookie和session都是存储信息的手段
cookie存储在客户端(浏览器),容易伪造
session存储在服务器端,基本不可能。
session id(Tomcat称为JsessionId) = session存在cookie中的keycookie因为存储在客户端,所以可能会存在cookie欺骗问题(修改session id,从而直接获取访问服务器的资格),而session通常更加安全
若信息均存储在session中,当访问增多时候,会比较占据服务器性能。
cookie因为存储在客户端,因此受到存储性能限制。单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
cookies 本质就是http协议中一个配置项,很容易在多台服务器共享;session 不能在多台服务器共享,除非专门使用了分布式的session框架处理了。
(3)并发访问下信息放session中的性能隐患
将数据放在session中,可能会造成并发访问下服务器的压力过大
找一些服务器实现实现负载均衡
导致访问的服务器可能不太一样,此时就需要保证服务器数据同步
因为要保持数据一致性,并且共享session时候不能返回用户信息,不然会出异常,
即可用性和一致性的矛盾问题。
(4)若禁用了cookie那么session能不能使用
能使用。
URL重写技术
把session id直接附加在URL路径的后面表单隐藏字段
服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。
(5)一次完整的HTTP请求过程
浏览器地址栏输入URL,7次
域名解析
发起TCP三次握手
建立TCP连接后发起http请求
服务器响应请求,返回结果
浏览器得到html标签代码
浏览器解析html代码中的资源,例如js,css,img等
浏览器对页面进行渲染并呈现给用户域名解析
浏览器首先搜索自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条数据),找到自身缓存中是否有对应的条目,并且没有过期
如果没有过期,解析结束
没找到,搜索操作系统自身的DNS缓存
操作系统的DNS缓存中也没找到,读取hosts文件
hosts文件中也没找到,浏览器会发起一个DNS(域名服务协议)系统调用
发起TCP的三次握手
User-Agent(一般是指浏览器)会以一个随机端口(1024<端口<65535)向服务器的web程序(常用的有httpd,nginx等)80端口发起TCP的连接请求
1、客服端首先发送一个连接试探。
2、服务器监听到连接请求报文后,如果同意建立连接,则向Client发送确认
3、Client收到确认后还需要再次发送确认,同时携带要发送给Server的数据
(5)get和post
get提交则提交的数据信息会在URL框中出现,因此传输数据量有限,不安全,但是传输速度快
post提交则提交的数据信息不会出现在URL框中,因此传输数据量没有限制,相对比较安全,但是传输速度相比较慢
比较
1、get在浏览器回退时是无害的,而post会再次请求。
2、get产生的URL地址可以被收藏,而post不会。
3、get请求会被浏览器主动缓存,而post不会,除非手动设置。
4、get请求只能进行URL编程,而post支持多种编码方式。
5、get请求参数会被完整保留在浏览器历史里,而post中的参数不会被保留。
6、get请求在URL中传送的参数有长度限制,而post没有。
7、对参数的数据类型,get只接受ascll字符,而post没有限制。
8、get不如post安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
9、get参数通过URL传递,post放在request body中。