1. 你能描述一下渐进增强和优雅降级之间的不同吗?

定义:
优雅降级(graceful degradation):
一开始就构建站点的完整功能,
然后针对浏览器测试和修复 渐进增强(progressive enhancement):
一开始只构建站点的最少特性,
然后不断针对各浏览器追加功能。 优雅降级和渐进增强都关注于同一网站
在不同设备里不同浏览器下的表现程度。 区别:
“优雅降级”观点认为应该针对那些最高级、
最完善的浏览器来设计网站。 而将那些被认为“过时”或有功能缺失的浏览器下
的测试工作安排在开发周期的最后阶段,并把测试
对象限定为主流浏览器(如 IE、Mozilla 等)的
前一个版本。 “渐进增强”观点则认为应关注于内容本身。 总结:"优雅降级"就是首先完整地实现整个网站,
包括其中的功能和效果. 然后再为那些无
法支持所有功能的浏览器增加候选方案,
使之在旧式浏览器上以某种形式降级体验
却不至于完全失效。"渐进增强"则是从浏览器支持的基本功能开始,
首先为所有设备准备好清晰且语义化的html及
完整内容, 然后再以无侵入的方法向页面增加无
害于基础浏览器的额外样式和功能。
当浏览器升级时, 它们会自动呈现并发挥作用。

2. 请说说浏览器内核的组成?

浏览器的结构:

用户界面(UI) - 包括菜单栏、工具栏、地址栏、
后退/前进按钮、书签目录等,也就是能看到的除
了显示页面的主窗口之外的部分; 浏览器引擎(Rendering engine)-也被称为浏览器
内核、渲染引擎,主要负责取得页面内容、整理信息
(应用CSS)、计算页面的显示方式,然后会输出到
显示器或者打印机; JS解释器 - 也可以称为JS内核,主要负责处理
javascript脚本程序,一般都会附带在浏览器
之中,例如chrome的V8引擎; 网络部分 - 主要用于网络调用,例如:HTTP请求,
其接口与平台无关,并为所有的平台提供底层实现; UI后端 - 用于绘制基本的窗口部件,比如组合框和窗口等。 数据存储 - 保存类似于cookie、storage等数据部分,
HTML5新增了web database技术,一种完整的轻量级客
户端存储技术。 主要浏览器:
IE、Firefox、Safari、Chrome、Opera。 它们的浏览器内核(渲染引擎): IE--Trident
FF(Mozilla)--Gecko
Safari--Webkit
Chrome--Blink(WebKit的分支)
Opera--原为Presto,现为Blink

3. 为什么利用多个域名来请求网络资源会更有效?

动静分离需求,使用不同的服务器处理请求。
处理动态内容的只处理动态内容,不处理别的,
提高效率。 突破浏览器并发限制, 同一时间针对同一域名
下的请求有一定数量限制。超过限制数目的请
求会被阻止。不同浏览器这个限制的数目不一样。 Cookieless, 节省带宽,尤其是上行带宽一般比下
行要慢。用户的每次访问,都会带上自己的cookie
,久而久之耗费的带宽还是挺大的。 假如weibo 的图片放在主站域名下,那么用户
每次访问图片时,request header 里就会带有
自己的cookie ,header 里的cookie 还不能压缩,
而图片是不需要知道用户的cookie 的,所以这部分带
宽就白白浪费了。 避免不必要的安全问题(比如: 上传js窃取主站cookie之类的) 节约主域名的连接数,从而提高客户端网络带宽的利用率,
优化页面响应。

4. 说说前端开发中, 如何进行性能优化?

1) 减少http请求次数:css spirit,data uri;
2) JS,CSS源码压缩;
3) 前端模板 JS+数据,减少由于HTML标签导致
  的带宽浪费,前端用变量保存AJAX请求结果,每
  次操作本地变量,不用请求,减少请求次数;
4) 用innerHTML代替DOM操作,减少DOM操作次数;
5) 用setTimeout来避免页面失去响应;
6) 用hash-table来优化查找;
7) 当需要设置的样式很多时设置className而不
  是直接操作style;
8) 少用全局变量;
9) 缓存DOM节点查找的结果;
10)避免使用CSS Expression;
11)图片预载; 12)避免在页面的主体布局中使用table,
  table要等其中的内容完全下载之后才会显示出来,
  显示比div+css布局慢; 13)控制网页在网络传输过程中的数据量;
  比如: 启用GZIP压缩或者保持良好的编程习惯,
  避免重复的CSS,JavaScript代码,
  多余的HTML标签和属性。    

5. 从前端角度出发, 谈谈做好网站seo需要考虑什么?

1) 语义化html标签;
2) 合理的title, description, keywords;
3) 重要的html代码放前面;
4) 少用iframe, 搜索引擎不会抓取iframe中的内容
5) 图片加上alt

Web大前端面试题-Day7的更多相关文章

  1. Web大前端面试题-Day12

    1.前端需要注意哪些SEO? 合理的title.description.keywords: 搜索对着三项的权重逐个减小, title值强调重点即可, 重要关键词出现不要超过2次, 而且要靠前, 不同页 ...

  2. Web大前端面试题-Day6

    1.请说明ECMAScript, JavaScript, Jscript之间的关系? ECMAScript提供脚本语言必须遵守的规则. 细节和准则,是脚本语言的规范. 比如:ES5,ES6就是具体的一 ...

  3. Web大前端面试题-Day4

    1. 如何实现瀑布流? 瀑布流布局的原理:1) 瀑布流布局要求要进行布置的元素等宽,   然后计算元素的宽度,   与浏览器宽度之比,得到需要布置的列数;2) 创建一个数组,长度为列数,   里面的值 ...

  4. Web大前端面试题-Day11

    86.如何获得高效的数据库逻辑结构? 从关系数据库的表中 删除冗余信息的过程 称为数据规范化, 是得到高效的关系型数据库表的逻辑结构 最好和最容易的方法. 规范化数据时应执行以下操作: 1.将数据库的 ...

  5. Web大前端面试题-Day10

    1. px和em的区别? px和em都是长度单位; 区别是: px的值是固定的,指定是多少就是多少, 计算比较容易. em得值不是固定的,并且em会继承父级元素的字体大小. 浏览器的默认字体高都是16 ...

  6. Web大前端面试题-Day8

    1. 说说你对作用域链的理解? 作用域链的作用是保证执行环境里 有权访问的变量和函数是有序的, 作用域链的变量只能向上访问, 变量访问到window对象即被终止, 作用域链向下访问变量是不被允许的; ...

  7. Web大前端面试题-Day1

    1. var的变量提升的底层原理是什么? JS引擎的工作方式是:1) 先解析代码,获取所有被声明的变量:2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到代码 ...

  8. Web大前端面试题-Day9

    1. 请用至少3中方式实现数组去重? 方法一: indexOfvar arr1=[1,2,3,4,5,4,3,2,1];  function repeat1(arr){    for(var i=0, ...

  9. Web大前端面试题-Day5

    1.写一个深度克隆方法(es5)? /** *  深拷贝 * @param {object}fromObj 拷贝的对象 * @param {object}toObj  目标对象 */ function ...

随机推荐

  1. shiroWeb项目-认证及MD5认证信息在页面显示(十)

    realm设置完整认证信息 // realm的认证方法,从数据库查询用户信息 @Override protected AuthenticationInfo doGetAuthenticationInf ...

  2. jvm系列五、jvm垃圾回收机制、jvm各种参数及调优

    转载自:http://yufenfei.iteye.com/blog/1746914 尊重原创. 一.GC有两种类型:Scavenge GC 和Full GC 1.Scavenge GC 一般情况下, ...

  3. 【转】C语言正确使用extern关键字

    利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下. 一.引用同一个文件中的变量 #include<stdio.h> int f ...

  4. nodejs前端开发环境安装

    1.       nodejs安装 要求:node版本6.2.0及以上,npm版本3.8.9及以上 Nodejs安装包地址: 2.    在rTools上下载并安装git 3.    在rTools上 ...

  5. JDK1.5引入的concurrent包

    并发是伴随着多核处理器的诞生而产生的,为了充分利用硬件资源,诞生了多线程技术.但是多线程又存在资源竞争的问题,引发了同步和互斥,并带来线程安全的问题.于是,从jdk1.5开始,引入了concurren ...

  6. Python-bootstrap

    1 引入 如果想要用到BootStrap提供的js插件,那么还需要引入jQuery框架,因为BootStrap提供的js插件是依赖于jQuery的 <link type="text/c ...

  7. mysql中的几种join 及 full join问题

    [注意]:Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现 初始化SQL语句:   /*join 建表语句*/   ...

  8. java util Aarrys 类

    toString方法  产生一维数组的二维版本 public static String toString(type[] a) { //type 是传入数据类型 if (a == null) retu ...

  9. (七)CXF添加拦截器

    今天开始讲下拦截器,前面大家学过servlet,struts2 都有拦截器概念,主要作用是做一些权限过滤,编码处理等: webservice也可以加上拦截器,我们可以给webservice请求加权限判 ...

  10. C/S权限系统得到拼音和五笔的自定义函数(二)

    得到五笔: CREATE FUNCTION [dbo].[fun_getWB](@Str VARCHAR(2000)) RETURNS VARCHAR(2000) AS BEGIN DECLARE @ ...