龙空技术网

day12:前端面试题(基础)

程序员库里 100

前言:

目前朋友们对“ie11cssexpression”大致比较重视,咱们都需要知道一些“ie11cssexpression”的相关知识。那么小编在网摘上汇集了一些对于“ie11cssexpression””的相关内容,希望我们能喜欢,我们快快来学习一下吧!

1 前端需要注意哪些SEO合理的titledescriptionkeywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有所不同;description把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面description有所不同;keywords列举出重要关键词即可语义化的HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页重要内容HTML代码放在最前:搜索引擎抓取HTML顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取重要内容不要用js输出:爬虫不会执行js获取内容少用iframe:搜索引擎不会抓取iframe中的内容非装饰性图片必须加alt提高网站速度:网站速度是搜索引擎排序的一个重要指标2 <img>的title和alt有什么区别通常当鼠标滑动到元素上的时候显示alt<img>的特有属性,是图片内容的等价描述,用于图片无法加载时显示、读屏器阅读图片。可提图片高可访问性,除了纯装饰图片外都必须设置有意义的值,搜索引擎会重点分析。3 HTTP的几种请求方法用途GET方法发送一个请求来取得服务器上的某一资源POST方法向URL指定的资源提交数据或附加新的数据PUT方法跟POST方法很像,也是想服务器提交数据。但是,它们之间有不同。PUT指定了资源在服务器上的位置,而POST没有HEAD方法只请求页面的首部DELETE方法删除服务器上的某资源OPTIONS方法它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息TRACE方法TRACE方法被用于激发一个远程的,应用层的请求消息回路CONNECT方法把请求连接转换到透明的TCP/IP通道4 从浏览器地址栏输入url到显示页面的步骤

基础版本

浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTMLDOM);载入解析到的资源文件,渲染页面,完成。

详细版

在浏览器地址栏输入URL浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤如果资源未缓存,发起新请求如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证。检验新鲜通常有两个HTTP头进行控制ExpiresCache-Control:HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期HTTP1.1增加了Cache-Control: max-age=,值为以秒为单位的最大新鲜时间浏览器解析URL获取协议,主机,端口,path浏览器组装一个HTTP(GET)请求报文浏览器获取主机ip地址,过程如下:浏览器缓存本机缓存hosts文件路由器缓存ISP DNS缓存DNS递归查询(可能存在负载均衡导致每次IP不一样)打开一个socket与目标IP地址,端口建立TCP链接,三次握手如下:客户端发送一个TCP的SYN=1,Seq=X的包到服务器端口服务器发回SYN=1, ACK=X+1, Seq=Y的响应包客户端发送ACK=Y+1, Seq=ZTCP链接建立后发送HTTP请求服务器接受请求并解析,将请求转发到服务程序,如虚拟主机使用HTTP Host头部判断请求的服务程序服务器检查HTTP请求头是否包含缓存验证信息如果验证缓存新鲜,返回304等对应状态码处理程序读取完整请求并准备HTTP响应,可能需要查询数据库等操作服务器将响应报文通过TCP连接发送回浏览器浏览器接收HTTP响应,然后根据情况选择关闭TCP连接或者保留重用,关闭TCP连接的四次握手如下:主动方发送Fin=1, Ack=Z, Seq= X报文被动方发送ACK=X+1, Seq=Z报文被动方发送Fin=1, ACK=X, Seq=Y报文主动方发送ACK=Y, Seq=X报文浏览器检查响应状态吗:是否为1XX,3XX, 4XX, 5XX,这些情况处理与2XX不同如果资源可缓存,进行缓存对响应进行解码(例如gzip压缩)根据资源类型决定如何处理(假设资源为HTML文档)解析HTML文档,构件DOM树,下载资源,构造CSSOM树,执行js脚本,这些操作没有严格的先后顺序,以下分别解释构建DOM树:Tokenizing:根据HTML规范将字符流解析为标记Lexing:词法分析将标记转换为对象并定义属性和规则DOM construction:根据HTML标记关系将对象组成DOM树解析过程中遇到图片、样式表、js文件,启动下载构建CSSOM树:Tokenizing:字符流转换为标记流Node:根据标记创建节点CSSOM:节点创建CSSOM树根据DOM树和CSSOM树构建渲染树:从DOM树的根节点遍历所有可见节点,不可见节点包括:1)script,meta这样本身不可见的标签。2)被css隐藏的节点,如display: none对每一个可见节点,找到恰当的CSSOM规则并应用发布可视节点的内容和计算样式js解析如下:浏览器创建Document对象并解析HTML,将解析到的元素和文本节点添加到文档中,此时document.readystate为loadingHTML解析器遇到没有async和defer的script时,将他们添加到文档中,然后执行行内或外部脚本。这些脚本会同步执行,并且在脚本下载和执行时解析器会暂停。这样就可以用document.write()把文本插入到输入流中。同步脚本经常简单定义函数和注册事件处理程序,他们可以遍历和操作script和他们之前的文档内容当解析器遇到设置了async属性的script时,开始下载脚本并继续解析文档。脚本会在它下载完成后尽快执行,但是解析器不会停下来等它下载。异步脚本禁止使用document.write(),它们可以访问自己script和之前的文档元素当文档完成解析,document.readState变成interactive所有defer脚本会按照在文档出现的顺序执行,延迟脚本能访问完整文档树,禁止使用document.write()浏览器在Document对象上触发DOMContentLoaded事件此时文档完全解析完成,浏览器可能还在等待如图片等内容加载,等这些内容完成载入并且所有异步脚本完成载入和执行,document.readState变为complete,window触发load事件显示页面(HTML解析过程中会逐步显示页面)

详细简版

从浏览器接收url到开启网络请求线程(这一部分可以展开浏览器的机制以及进程与线程之间的关系)开启网络线程到发出一个完整的HTTP请求(这一部分涉及到dns查询,TCP/IP请求,五层因特网协议栈等知识)从服务器接收到请求到对应后台接收到请求(这一部分可能涉及到负载均衡,安全拦截以及后台内部的处理等等)后台和前台的HTTP交互(这一部分包括HTTP头部、响应码、报文结构、cookie等知识,可以提下静态资源的cookie优化,以及编码解码,如gzip压缩等)单独拎出来的缓存问题,HTTP的缓存(这部分包括http缓存头部,ETagcatch-control等)浏览器接收到HTTP数据包后的解析流程(解析html-词法分析然后解析成dom树、解析css生成css规则树、合并成render树,然后layoutpainting渲染、复合图层的合成、GPU绘制、外链资源的处理、loadedDOMContentLoaded等)CSS的可视化格式模型(元素的渲染规则,如包含块,控制框,BFCIFC等概念)JS引擎解析过程(JS的解释阶段,预处理阶段,执行阶段生成执行上下文,VO,作用域链、回收机制等等)其它(可以拓展不同的知识模块,如跨域,web安全,hybrid模式等等内容)#5 如何进行网站性能优化content方面减少HTTP请求:合并文件、CSS精灵、inline Image减少DNS查询:DNS缓存、将资源分布到恰当数量的主机名减少DOM元素数量Server方面使用CDN配置ETag对组件使用Gzip压缩Cookie方面减小cookie大小css方面将样式表放到页面顶部不使用CSS表达式使用<link>不使用@importJavascript方面将脚本放到页面底部将javascriptcss从外部引入压缩javascriptcss删除不需要的脚本减少DOM访问图片方面优化图片:根据实际颜色需要选择色深、压缩优化css精灵不要在HTML中拉伸图片

你有用过哪些前端性能优化的方法?

减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。当需要设置的样式很多时设置className而不是直接操作style少用全局变量、缓存DOM节点查找的结果。减少IO读取操作避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢

谈谈性能优化问题

代码层面:避免使用css表达式,避免使用高级选择器,通配选择器缓存利用:缓存Ajax,使用CDN,使用外部js和css文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等请求数量:合并样式和脚本,使用css图片精灵,初始首屏之外的图片资源按需加载,静态资源延迟加载请求带宽:压缩文件,开启GZIP

前端性能优化最佳实践?

性能评级工具(PageSpeed 或 YSlow)合理设置 HTTP 缓存:Expires 与 Cache-control静态资源打包,开启 Gzip 压缩(节省响应流量)CSS3 模拟图像,图标base64(降低请求数)模块延迟(defer)加载/异步(async)加载Cookie 隔离(节省请求流量)localStorage(本地存储)使用 CDN 加速(访问最近服务器)启用 HTTP/2(多路复用,并行加载)前端自动化(gulp/webpack)6 HTTP状态码及其含义1XX:信息状态码100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息2XX:成功状态码200 OK 正常返回信息201 Created 请求成功并且服务器创建了新的资源202 Accepted 服务器已接受请求,但尚未处理3XX:重定向301 Moved Permanently 请求的网页已永久移动到新位置。302 Found 临时性重定向。303 See Other 临时性重定向,且总是使用 GET 请求新的 URI304 Not Modified 自从上次请求后,请求的网页未修改过。4XX:客户端错误400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。401 Unauthorized 请求未授权。403 Forbidden 禁止访问。404 Not Found 找不到如何与 URI 相匹配的资源。5XX: 服务器错误500 Internal Server Error 最常见的服务器端错误。503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。7 语义化的理解用正确的标签做正确的事情!HTML语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO。使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解8 介绍一下你对浏览器内核的理解?主要分成两部分:渲染引擎(layout engineerRendering Engine)和JS引擎渲染引擎:负责取得网页的内容(HTMLXML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核JS引擎则:解析和执行javascript来实现网页的动态效果最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎

常见的浏览器内核有哪些

Trident内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称MSHTML]Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkeyPresto内核:Opera7及以上。 [Opera内核原为:Presto,现为:Blink;]Webkit内核:Safari,Chrome等。 [ ChromeBlinkWebKit的分支)]9 html5有哪些新特性、移除了那些元素?HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加新增选择器 document.querySelectordocument.querySelectorAll拖拽释放(Drag and drop) API媒体播放的 videoaudio本地存储 localStoragesessionStorage离线应用 manifest桌面通知 Notifications语意化标签 articlefooterheadernavsection增强表单控件 calendardatetimeemailurlsearch地理位置 Geolocation多任务 webworker全双工通信协议 websocket历史管理 history跨域资源共享(CORS) Access-Control-Allow-Origin页面可见性改变事件 visibilitychange跨窗口通信 PostMessageForm Data 对象绘画 canvas移除的元素:纯表现的元素:basefontbigcenterfontsstrikettu对可用性产生负面影响的元素:frameframesetnoframes支持HTML5新标签:IE8/IE7/IE6支持通过document.createElement方法产生的标签可以利用这一特性让这些浏览器支持HTML5新标签浏览器支持新标签后,还需要添加标签默认的样式当然也可以直接使用成熟的框架、比如html5shim

如何区分 HTML 和 HTML5

DOCTYPE声明、新增的结构元素、功能元素10 HTML5的离线储存怎么使用,工作原理能不能解释一下?在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示如何使用:页面头部像下面一样加入一个manifest的属性;在cache.manifest文件的编写离线存储的资源在离线状态时,操作window.applicationCache进行需求实现

CACHE MANIFEST#v0.11CACHE:js/app.jscss/style.cssNETWORK:resourse/logo.pngFALLBACK:/offline.html

标签: #ie11cssexpression #js启动下载