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

1. 说说你对作用域链的理解? 作用域链的作用是保证执行环境里 有权访问的变量和函数是有序的, 作用域链的变量只能向上访问, 变量访问到window对象即被终止, 作用域链向下访问变量是不被允许的; 作用域就是变量与函数的可访问范围, 即作用域控制着变量与函数的可见性 和生命周期. 2. 请说说JavaScript原型,原型链 ? 原型: 当我们访问一个对象的属性时, 每个对象都会在其内部初始化一个属性, 就是prototype(原型); 原型链: 如果这个对象内部不存在这个属性, 那么他就会去…
1.前端需要注意哪些SEO? 合理的title.description.keywords: 搜索对着三项的权重逐个减小, title值强调重点即可, 重要关键词出现不要超过2次, 而且要靠前, 不同页面title要有所不同:description把页面内容高度概括, 长度合适, 不可过分堆砌关键词, 不同页面description有所不同:keywords列举出重要关键词即可 语义化的HTML代码,符合W3C规范: 语义化代码让搜索引擎容易理解网页重要内容HTML代码放在最前: 搜索引擎抓取HT…
1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressive enhancement): 一开始只构建站点的最少特性, 然后不断针对各浏览器追加功能. 优雅降级和渐进增强都关注于同一网站 在不同设备里不同浏览器下的表现程度. 区别: “优雅降级”观点认为应该针对那些最高级. 最完善的浏览器来设计网站. 而将那些被认为“过时”或有功能缺失的浏览器下 的测试…
1.请说明ECMAScript, JavaScript, Jscript之间的关系? ECMAScript提供脚本语言必须遵守的规则. 细节和准则,是脚本语言的规范. 比如:ES5,ES6就是具体的一js版本. JavaScript是ECMAScript的一个分支版本, JavaScript 实现了多数 ECMA-262 中 描述的 ECMAScript 规范,但存在少数差异. JScript是微软公司对ECMA-262语言规范的 一种实现,除了少数例外(这是为了保持向后兼容 ), 微软公司宣称…
1. 如何实现瀑布流? 瀑布流布局的原理:1) 瀑布流布局要求要进行布置的元素等宽,   然后计算元素的宽度,   与浏览器宽度之比,得到需要布置的列数;2) 创建一个数组,长度为列数,   里面的值为已布置元素的总高度(最开始为0);3) 然后将未布置的元素依次布置到高度最小的那一列,   就得到了瀑布流布局;4) 滚动加载, scroll事件得到scrollTop,     与最后盒子的offsetTop对比,   符合条件就不断滚动加载. 瀑布流布局核心代码: /** * 实现瀑布流的布局…
86.如何获得高效的数据库逻辑结构? 从关系数据库的表中 删除冗余信息的过程 称为数据规范化, 是得到高效的关系型数据库表的逻辑结构 最好和最容易的方法. 规范化数据时应执行以下操作: 1.将数据库的结构精简为最简单的形式 2.从表中删除冗余值 3.标识所有依赖与其他数据的数据 规范化过程有几个阶段, 分别称作第一范式(1NF). 第二范式(2NF). 第三范式(3NF). 第四范式(4NF) 以及第五范式(5NF). 对于所有的实际应用, 3NF已经足够了. 87.数据库三范式是什么? 第一范…
1. px和em的区别? px和em都是长度单位; 区别是: px的值是固定的,指定是多少就是多少, 计算比较容易. em得值不是固定的,并且em会继承父级元素的字体大小. 浏览器的默认字体高都是16px; 所以未经调整的浏览器都符合: 1em=16px; 那么12px=0.75em, 10px=0.625em 2. CSS 去掉inline-block元素间隙的几种方法? 间隙是怎么来的: 间隙是由换行或者回车导致的; 只要把标签写成一行或者 标签直接没有空格,就不会出现间隙; 怎么去除? 方…
1. var的变量提升的底层原理是什么? JS引擎的工作方式是:1) 先解析代码,获取所有被声明的变量:2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到代码头部. 但是变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升. js里的function也可看做变量,也存在变量提升情况. 2. JS如何计算浏览器的渲染时间? 浏览器的渲染过程主要包括以下几步: 1) 解析HTML生成DOM树. 2) 解析CSS生成CS…
1. 请用至少3中方式实现数组去重? 方法一: indexOfvar arr1=[1,2,3,4,5,4,3,2,1];  function repeat1(arr){    for(var i=0,arr2=[];i<arr.length;i++){      if(arr2.indexOf(arr[i])==-1){        arr2.push(arr[i]);      }    }    return arr2; } 方法二: hashfunction repeat2(arr){…
1.写一个深度克隆方法(es5)? /** *  深拷贝 * @param {object}fromObj 拷贝的对象 * @param {object}toObj  目标对象 */ function deepCopyObj2NewObj(fromObj, toObj) {   for(var key in fromObj){       // 1. 取出键值对        var fromValue = fromObj[key];       // 2. 检查当前的属性值是什么类型    i…