前端知识小总结1

前端工程师:最贴近用户的程序员,完成产品基本功能,并进一步优化,实现界面交互,提升用户体验,借助nodejs还可实现服务器端的一些事情。前端性能优化可以使产品从90分优化到100分。前端工程师参与项目,快速有效地完成效果图,与团队成员合作,与UI、产品经理等都需要沟通协作,做好页面结构、页面重构及用户体验,处理hack,兼容写出高效简洁的代码,针对服务器端优化,随时补充新技术,拥抱最新技术更新。

1  对web标准的理解

Web标准是一系列标准的组合,包含结构、表现、行为的标准,具体有:web标准要求书写标签必须闭合、标签小写、合理嵌套标签,提高搜索几率;建议使用外联js和css,实现结构、表现和行为的分离,提高页面渲染速度及页面加载速度;样式与标签的分离、更合理地语义化,使内容能被更多用户访问,降低后期维护成本;不需要变动页面内容即可打印版本而不需要复制内容,提高网站易用性。

link和@import区别

link:属于XHTML标签;加载页面时同时被加载;无兼容性问题;可以控制dom操作

@import:属于CSS;页面加载完毕再加载;ie5以上可识别;不能控制dom操作

3  html5新特性

canvas、video、audio、article、footer、header、nav、section、date、webworker、websocket、

4  标签语义化

   页面内容结构化,比较直观,便于对浏览器、搜索引擎解析,容易阅读。

   根据内容的结构化(内容语义化),选择合适的标签(代码语义化)

   在没有css的情况下也能表现很好的结构(内容结构和代码结构);有利于用户体验;有利于seo和搜索引擎建立良好的沟通;方便其他设备解析,以有意义的方式渲染页面;便于团队开发和维护,增加可读性。

5  html5离线存储

   将一些源代码文件保存在本地,这样后续的页面重新加载将使用本地资源文件,在离线的情况下也可以访问web应用,同时通过一定的方法可以更新、删除离线存储等操作

6  cookie、sessionStorage、localstorage区别

   Cookie:为持久保存客户端数据提供了方便,且分担了服务器存储负担,但也有不足,如存储空间小,每个域名下最多有20条cookie,每个cookie长度不超过4kB,否则会被截掉;安全性差,如果cookie被人拦截,将导致所有的session信息泄露,在浏览器和服务器之间来回传递。Cookie作用是与服务器进行交互,作为http规范的一部分存在。

   sessionStorage:会话级别的存储,数据在浏览器关闭之后消失,localStorage:持久化的本地存储,长期存储数据,浏览器关闭后数据不丢失;二者存储空间更大,有更多可用接口,有各自独立的存储空间。Web Storage(包括sessionStorage和localStorage)仅仅是为了在本地存储数据而生。

7  display属性值

   None:此元素不会显示

   Inline:内联元素,前后没有换行符

   Inline-block:行内块元素

   Block:块级元素,前后有换行符

8  position属性值

   Static:元素在正常流中

   Relative:相对定位,相对于其正常位置进行定位。还在文档流中。

   Absolute:绝对定位,相对于static定位以外的第一个父元素进行定位。Left、top、right、bottom。脱离文档流,不占据空间。

   Fixed:固定定位,相对于浏览器窗口进行定位。Left、top、right、bottom。脱离文档流。

9  css3新特性

   Border-radius、box-shadow、text-shadow、gradient、transform:rotate() scale() translate() skew()

10  css初始化

不同浏览器对不同标签的默认属性值是有差距的,如果不对css初始化将导致不同浏览器上的显示效果不一致,因此考虑到浏览器的兼容性问题,需要css初始化。

11  tcp、udp区别

   Tcp:面向连接、传输可靠、速度慢、开销大、用于传输大量数据

   Udp:面向非连接、传输不可靠、速度快、用于传输少量数据

12  css样式优先级

   内联样式 》》 ID选择器 》》 类、伪类和属性选择器 》》 类型选择器和伪元素选择器 》》 通配符选择器(*)、子选择器(>)、相邻同胞选择器(+)

13  浮动及清除浮动

  浮动:脱离文档流,不占据文档空间。浮动元素碰到包含它的边框或者浮动元素的边框则停留。

浮动引起的问题:父元素的高度无法被撑开,影响与父元素同级的元素;与浮动元素同级的非浮动元素会紧跟其后;若非第一个元素浮动,该元素之前的元素也需要浮动,否则会影响页面显示的结构。

  清除浮动: 使用空标签,在所有浮动元素标签后面添加一个空标签,定义css为clear:both; 使用overflow,给包含浮动元素的父元素定义css为overflow:auto;zoom:1; 使用after伪对象,#layout:after{display:block;clear:both;content:” ”;visibility:hidden;height:0;}

   

14  浏览器内核

   Trident内核:IE、360、搜狗浏览器

   Gecko内核:firefox、netscape6

   Presto内核:Opera7

   Webkit内核:Chrome

15  盒子模型

网页中的一个元素被描述成盒子模型,由元素内容、元素内边距、元素边框、元素外边界四部分组成。盒子模型分两种:IE盒子模型(border-box)、W3C盒子模型(content-box)。Css3中的box-sizing可以控制盒子的模型的解析模式,默认为content-box。其中,conten-box盒子模型,padding和border不被包含在定义的width和height之内,元素实际宽度为width+padding+border;而border-box盒子模型padding和border包含在定义的width之内,元素的实际宽度即为width。

16  行内元素、块元素、空元素

   行内元素:a、b、span、img、input、strong、select、label、em、button、textarea

   块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote

   空元素:br、meta、hr、link、input、img

17  src、href区别

  Src:指向外部链接的位置,指向的内容将会嵌入到文档中当前标签所在位置。在请求src资源时会将其指向的资源下载并应用到文档内,如js脚本,当浏览器解析到该元素时会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕。

  Href:指向网络资源所在位置,建立和当前元素或当前文档之间的链接,用于超链接。

18  css hack

   针对不同浏览器写的不同的css,目的是为了浏览器的兼容

19  px、em

   共同点:都是长度单位

   不同点:px是固定的,指定多少就是多少;em不是固定的,且em会继承父级元素的字体大小。

Ps:浏览器的默认字体高为16px,未经调整的浏览器都符合1em=16px

20 优雅降级、渐进增强

   优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

   渐进增强:针对低版本浏览器进行构建页面,保证基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

21  i、em、b、strong标签,img的alt和title

   <i>标签将呈现斜体的文本;<em>把文本定义为斜体强调的内容。

   <b>标签定义粗体的文本;<strong>把文本定义为粗体语气更强的强调的内容。

   <em>表示强调,strong表示更强烈的强调;em用于局部强调,strong则全局强调;em是有顺序的、阅读到某处才会注意到,而strong强调是一种随意无序的、某个文字或界面突然凸显;

   Alt:在不能显示图片的时候,alt用来指定替换文字;title为设置该属性的元素提供建议性的信息。

22 大量图片加载缓慢的处理方法

  图片懒加载,滚到相应位置才加载图片;图片预加载,将当前展示图片的前一张和后一张优先下载;使用css sprite;图片过大可以使用特殊的编码方式,加载时先加载一张压缩的特别厉害的缩略图。

23  css中margin、padding

  Margin:外边界,元素之外,属于元素跟元素之间的距离,相邻元素的margin可以融合;

  Padding:内边距,元素之内,相邻元素的padding不可以融合。

24  label

   Label标签定义表单控制间的关系,当用户选择该标签时,浏览器会自动聚焦到和标签相关的表单控件上。

<label>Date:<input type=”text” /></label>

25  css选择器

   ID选择器(#myid)、类选择器(.myclassname)、标签选择器(div、h1)、相邻选择器(h1-p)、子选择器(ul>li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel=”external”])、伪类选择器(a:hover,li:nth-child)、

26  浮动、绝对定位、固定定位将导致脱离文档流。

27  css层叠

   Css样式之间可能会有交叉的部分,这就会涉及到样式的优先级问题,样式的权重问题,内联样式》》内部样式》》外部样式》》浏览器用户自定义样式》》浏览器默认样式

   ID选择器》》class选择器》》元素选择器

28  display:none; visibility:hidden;

display:none;隐藏对应的元素,在文档布局中不再分配空间,它各边的元素会靠拢,就当它不存在;引发回流和重绘。其内的标签元素全部隐藏。

visibility:hidden;隐藏对应的元素,但是在文档布局中仍然保留原有的空间;无回流和重绘。其元素若添加visibility:visible;则会显示出来。

29  position的fixed和absolute

   共同点:改变行内元素的呈现方式,display设置为block;让元素脱离文档流,不再占据空间;默认会覆盖到非定位元素上。

   不同点:absolute的根元素是可以设置的,而fixed的根元素固定为浏览器窗口,当滚到页面时,fixed元素与浏览器窗口之间的距离是不变的。

30  doctype文档类型

   HTML4.01规定三种:strict、Transitional、Frameset

   XHTML1.0规定三种:Strict、Transitional、Frameset

  

31  h5文档头只需要写<!Doctype>原因

   H5不基于SGML(标准通用标记语言),因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(即让浏览器按照他们应该的方式来运行);而HTML4.01基于SGML,因此需要DTD进行引用,才能告知浏览器文档所使用的文档类型。

32  css可以通过哪些属性定义使得一个dom元素不显示在浏览器可视范围内

  Display:none;visibility:hidden;

  设置宽高为0,设置透明度为0,设置z-index位置为-1000

33  被点击访问过的hover样式不再出现的问题及解决方法

  被点击访问过的超链接样式不再具有hover和active。可以更改css属性的排列顺序:(L-V-H-A)

34  居中

  Margin:0 auto;

  Position:absolute;left:50%;transfrom:translateX(-50%);

  Position:absolute;left:50%;width:200px;margin-left:-100px;

Position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;

Position:relative;left:50%;width:300px;margin-left:-150px;background-color:pink;

35  cookie、session

  Cookie数据存放在客户的服务器上,session数据放在服务器上;cookie没有session安全;session会在一定时间内保存在服务器上,当访问增多时可能导致服务器性能下降,应当使用cookie;单个cookie保存的数据不能超过4k。

36  性能优化问题

  代码层面:避免使用css表达式,避免使用高级选择器、通配符选择器

  缓存利用:缓存ajax,使用CDN,使用外部js和css以便缓存,添加expires头,服务端配置Etag,减少dns查找

  请求数量:合并样式和脚本,使用css精灵,图片懒加载。静态资源延迟加载

  请求带宽:压缩文件,开启GZIP

  面向内容的优化:减少http请求;减少DNS查找;避免重定向;使用ajax缓存;延迟载入组件;预先载入组件;减少DOM元素数量;切分组件到多个域;最小化iframe数量。

  面向servlet:缩小cookie;针对web组件使用域无关性。

  减少http请求优点:减少DNS请求所耗费的时间、减少服务器压力、减少http请求头

减少http请求方法:图片映射;css精灵;合并样式和脚本;静态文件资源缓存

37 栈、队列

  栈:插入和删除都在一端进行;栈先进后出;

  队列:插入删除在两端进行;队列先进先出;

38 栈、堆

  栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值;一种先进后出的数据结构;

  堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收;堆可以看成一棵树;

39  闭包

  使用闭包目的:为了设计私有变量和方法。

  优点:可以避免全局变量的污染。

  缺点:闭包会常占内存,增大内存使用量,使用不当很容易造成内存泄露。

  特性:函数嵌套函数;函数内部可以引用外部的参数和变量;参数和变量不会被垃圾回收机制回收。

40  JavaScript中每一个构造函数都有一个prototype属性,指向另一个对象,这个对象的所有属性和方法,都会被构造函数的实例继承。这意味着,我们可以把那些不变的属性和方法直接定义在prototype对象上。

41  HTTPS、http

   http是超文本传输协议,用来在网络上传输超文本的传送协议,信息是明文传输;而HTTPS是具有安全性的ssl加密传输协议,安全超文本传输协议,对数据进行压缩和解压操作并返回网络上传回的结果。

  http端口号是80,而HTTPS端口号是443.

  http是面向无连接的,无状态的,不安全的;而HTTPS由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  http是由http://开头,而HTTPS则以https://开头

  OSI模型中,http工作在应用层,HTTPS工作在传输层。

  http无需证书;而HTTPS需要CA机构颁发的ssl证书。

42  GET、POST

   GET一般用于信息获取,使用URL传递参数,,对所发送信息的数量有限制,一般在2000个字符;而POST一般用于修改服务器上的资源,对所发送的信息没有限制。

  Get需要使用Request.QueryString获取变量的值,而POST方式通过Request.Form获取变量的值。即get通过地址栏来传值,而POST通过提交表单来传值。

  Ps:以下情况请使用POST》无法使用缓存文件;向服务器发送大量数据;发送包含未知字符的用户输入时候(POST比get更稳定可靠)

43  事件

  可以被JavaScript侦测到的行为称为事件。

  事件处理机制:IE是时间冒泡;Firefox是事件捕获和事件冒泡。

  阻止冒泡:ev.stopPropagation(); 旧IE方法:ev.cancelBubble=true;||ev.stopPropagation();

44  重构

   在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。即在不改变UI的前提下对网站进行优化,在扩展的同时保持一致的UI。

   重构方法:表格布局改为div+css;网站前端兼容于现代浏览器;对于移动平台的优化;针对SEO优化(搜索引擎优化);减少代码间的耦合;让代码保持弹性;规范编码;设计可扩展的API;压缩js、css、image等前端资源;使用cdn加速资源加载;http服务器的文件缓存;

45  http状态码

   100  继续;200  ok; 201 请求成功且服务器创建了新的资源;202 服务器已接受请求但尚未处理;301 请求的网页永久移动到新的位置;302 临时重定向;303 临时重定向且总是使用get请求新的URI; 304 自从上次请求后,请求的网页未修改过;400 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求;401 请求未授权; 403 禁止访问; 404 找不到与URI匹配的资源; 500 最常见的服务器端错误; 503 服务器端暂时无法处理请求;

46  删除一个cookie

  首先,将时间设为当前时间往前一点:

Var  date=new Date();

Date.setDate(date.getDate()-1);

setDate()方法用于设置一个月的一天

然后,expires的设置:

Document.cookie=’user=’+encodeURIComponent(‘name’)+’;expires=’+new Date(0)

47  document.write()

   document.write()方法可以用在两个方面:页面载入过程中用实时脚本创建页面内容,以及用延时脚本创建本窗口或新窗口的内容。

   document.write()只能重绘整个页面,而innerHTML可以重绘页面的一部分。

48  git fetch、git pull

   git fetch:从远程获取最新版本到本地,不会自动merge

git pull:从远程获取最新版本并merge到本地

49  事件代理

   又名事件委托,是JavaScript中常用绑定事件的技巧,即把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是dom元素的事件冒泡。使用事件代理可以提高性能。

50  attribute、property

Attribute:dom元素在文档中作为html标签拥有的属性

Property:dom元素在js中作为对象拥有的属性

51  网络七层模型(从下到上)

物理层:通过媒介传输比特,确定机械及电气规范;(比特Bit)

数据链路层:将比特组装成帧和点到点的传递;(帧Frame)

网络层:负责数据包从源到宿的传递和网际互联;(包Packet)

传输层:提供端到端的可靠报文传递和错误恢复;(段Segment)

会话层:建立、管理和终止会话;(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩;(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段;(应用协议数据单元APDU)

52  dom操作

  创建新节点:

createDocumentFragment()//创建一个dom片段

  createElement()//创建一个具体的元素

  createTextNode()//创建一个文本节点

  添加、移除、替换、插入

  appendChild()、removeChild()、replaceChild()、insertBefore()

 查找

 getElementById()、getElementsByTagName()、getElementsByName()

53  null、undefined

   Null表示无的对象,转化为数值时为0;undefined是一个表示无的原始值,转化为数值时为NaN。当声明的变量还未被初始化时,变量的默认值为undefined。Null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。Undefined表示缺少值,表示此处应该有一个值,只是还没有定义。(变量被声明了,但还没赋值;调用函数时应该提供的参数没有提供,该参数属于undefined;对象没有赋值的属性,则属性的值为undefined;函数没有返回值时,默认返回undefined。)null表示没有对象,即在此处不该有值。( 作为函数的参数表示该函数的参数不是对象;作为对象原型链的终点。)

54  new操作符具体做了什么

   首先,创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型;然后属性和方法被加入到this引用的对象中;接着,新创建的对象由this所引用,且最后隐式地返回this。

55  内存泄露

   内存泄漏:指任何对象在你不再拥有或需要它之后仍然存在。垃圾回收器会定期扫描对象,并计算引用了每个对象的其他对象的数量,如果一个对象的引用数量为0,或该对象的唯一引用是循环的,则该对象的内存即可回收。

   setTimeout的第一个参数使用字符串而非函数时会引发内存泄露;闭包、控制台日志、循环都可能引起内存泄露。

56  JavaScript对象的创建方式

  工厂模式:

  构造函数模式:

  原型模式:

  混合构造函数和原型模式:

  动态原型模式:

  寄生构造函数模式:

  稳妥构造函数模式:

  

57  JavaScript继承方法

  原型链继承:

  借用构造函数继承:

   

  组合继承(原型+构造函数):

  原型式继承:

  寄生式继承:

  寄生组合式继承:

58  同源策略

     协议、域名、端口相同,是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性。

59  原型、原型链

60

未完待续。。。。。。

宝剑锋从磨砺出,梅花香自苦寒来。
原文地址:https://www.cnblogs.com/haimengqingyuan/p/6390216.html