面试前的准备

闭包!作用域,ajax,问的都是基础,很细的。

原型链一直往上访问最后会是什么。

就是prototype的问题,最后要么是一个object,要么就是undefined。

实现一个闭包

简单地用匿名函数实现了一个

实现一个长度和高度相等的div

应该使用before元素实现吧

问的比较细!比较专业!

包括数据结构等!css布局!

算法居多,不太容易。

总结了清除浮动、居中的方法

flex布局

mvc

小米面经


css如何设置透明度(兼容ie,firefox)

ss设置透明度,首先需要知道的是在浏览器中的不同使用,一般在ie中用的是filter:alpha(opacity=0);这个属性来设置div或者是块级元素的透明度,而在firefox中,一般就是直接使用opacity:0,对于兼容的,一般的做法就是在书写css样式的将2个都写上就行,就能实现兼容,具体看代码:
<html>
<head>
#div1{
width:200px;
height:600px;
margin:0 auto;
opacity:0;
filter:alpha(opacity=0);
//0 代表的是隐藏,就是透明度最低。
}

</head>
<body>
<div id='div1'>
<p>测试文字。</p>
</div>
</body>
</html>

为什么要把图片和css等静态资源放在单独的域名下

主要是为了减轻服务器的压力,从而网站上的图片调用图片的服务器,css调用css的服务器,大的网站架构都是这样子做的


flex

 实现div的水平居中和垂直居中

居中


1、幻灯效果页面。。。

<!document  html>

<html>

<head>

<style>

#cont{

position:relative;

height:100px;

}

img{

height:100px;

width:100px;

z-index:1;

}

img:firstChild,

img:target{  //:target 选择器可用于选取当前活动的目标元素

z-index:2;

}

</style>

</head>

<body>

<div  id=cont>

<img id="img1"  src="tfs1.jpg">

<img id="img2"  src="tfs2.jpg">

</div>

<div>

<a  src="tfs1.jpg">one</a>

<a  src="tfs2.jpg">two</a>

</div>

</body>

</html>


2、css hack

3、css预处理

可以在 CSS 中使用变量、简单的逻辑程序、函数(如右侧代码编辑器中就使用了变量$color)等等在编程语言中的一些基本特性,可以让你的 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。

优点: 

  • 结构清晰, 便于扩展
  • 可以方便屏幕浏览器私有语法差异
  • 可以轻松实现多重继承
  • 完全兼容css代码
4、设计中如何实现使用非标准字体。

非标准字体

5、

sessionStorage和页面js数据对象的区别

  • 页面中一般的 js 对象或数据的生存期是仅在当前页面有效,因此刷新页面或转到另一页面这样的重新加载页面的情况,数据就不存在了。
  • 而sessionStorage 只要同源的同窗口(或tab)中,刷新页面或进入同源的不同页面,数据始终存在。也就是说只要这个浏览器窗口没有关闭,加载新页面或重新加载,数据仍然存在。
6、

 canvas和svg的区别?

答: 

  • svg: 
    • SVG是一种使用XML描述2D图形的语言
    • SVG基于XML, 这意味着SVG DOM中的每个元素都是可用的. 所以可以为每个元素附加JavaScript事件处理器
    • 在SVG中, 每个被绘制的图像均被视为对象. 如果SVG对象的属性发生变化, 那么浏览器能够自动重现图像
  • Canvas
    • Canvas通过js来绘制2D图形
    • Canvas是逐像素进行渲染的
    • 在Canvas中, 一旦图形被绘制完成, 它就不会继续得到浏览器的关注. 如果其位置发生变化, 那么整个场景也需要重新绘制, 包括任何或许已被图形覆盖的对象.
  • 区别
    • Canvas支持分辨率, SVG不支持
    • Canvas不支持事件处理器, SVG支持
    • Canvas只有弱的文本渲染能力, 而SVG最适合带有大型渲染区域的应用程序(比如谷歌地图)
    • Canvas能够以.png或.jpg格式保存结果图像
    • SVG的复杂度过高的话会减慢渲染速度(任何过度使用DOM的应用都不快)
    • Canvas最适合图像密集型的游戏, 其中的许多对象会被频繁重绘. 而SVG不适合游戏应用
    • Canvas是基于位图的图像,它不能够改变大小, 只能缩放显示; SVG是基于矢量的, 所以它能够很好地处理图形大小的改变    
    • Canvas提供的功能更原始, 适合像素处理, 动态渲染和大数据量绘制; SVG功能更完善, 适合静态图片显示, 高保真文档查看和打印的应用场景
    • 绘制Canvas对象后, 不能使用脚本和CSS对它进行修改; 而SVG对象是文档对象模型的一部分, 所以可以随时使用脚本和CSS修改它们
    • 7、 解释下事件代理
    • 事件委托利用了事件冒泡, 只指定一个事件处理程序, 就可以管理某一类型的所有事件
    • 8、

. 解释下js中this是怎么工作的?

 this 在 JavaScript 中主要由以下五种使用场景。

  • 作为函数调用,this 绑定全局对象,浏览器环境全局对象为 window 。
  • 内部函数内部函数的 this 也绑定全局对象,应该绑定到其外层函数对应的对象上,这是 JavaScript的缺陷,用that替换。
  • 作为构造函数使用,this 绑定到新创建的对象。
  • 作为对象方法使用,this 绑定到该对象。
  • 使用apply或call调用 this 将会被显式设置为函数调用的第一个参数。

9、

. AMD vs. CommonJS?

答: AMD是依赖提前加载,CMD是依赖延时加载
10、哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
11、

 什么是闭包? 闭包有什么作用?

答:

  • 闭包是指有权访问另一个函数作用域中的变量的函数. 创建闭包常见方式,就是在一个函数内部创建另一个函数.
  • 作用: 
    • 匿名自执行函数  (function (){ ... })();   创建了一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。
    • 缓存, 可保留函数内部的值
    • 实现封装
    • 实现模板
12、

伪数组和真数组

/*
* 什么是伪数组
* 1、伪数组是一个对象
* 2、这个对象必须要有length属性
* 3、如果这个对象的length不为0,那么必须要有按照下标存储的数据
* */

// 不是伪数组
var obj = {};
var obj2 = { length: 3 };

// 是伪数组
var obj3 = { length: 0 };
var obj4 = { 0: '888', length: 1 };
var obj5 = { 99: 'abc', length: 100 }

/*
* 如何判断数据是不是伪数组:
* 1、不是对象直接干掉
* 2、是对象,没有length属性也干掉
* 3、有length,值必须是number类型
* 4、length值是number类型,并且值不为0,这个对象还得按照下标存储数据
* */

/*
* 如何判断数据是不是真数组:
* 1、数据 instanceof Array
* 2、Object.prototype.toString.call( 数据 ) === '[object Array]'
* */

JavaScript没有真正的数组,因此typeof运算符不能辨别数组和对象。伪数组在JavaScript中有很高的易用性,程序员不用给它设置维度,而且永远不用担心产生越界错误,但JavaScript数组的性能相比真正的数组可能更糟糕。要判断一个值是否为数组,必须使用constructor属性,例如:
if(value && typeof value === 'object' && value.constructor === Array) {
}

arguments不是一个数组,它是一个带有length成员属性的对象,很多时候会把它理解为一个伪数组。使用上面的检测方法会将arguments识别为一个数组,有时候这是希望得到的结果,尽管arguments不包含任何数组的方法。

13、

JavaScript 中 undefined 与 undeclared 之间的区别是什么?

14、

 点击一个ul的五个li元素,分别弹出他们的序号,怎么做?

 设置属性:

1
2
3
4
var  oLi = document.getElementsByTagName( 'li' );
for ( var  i=0; i<oLi.length; i++){
     oLi[i].setAttribute( "onclick" "alert(" +i+ ");" );
} 
15、

 js实现对象的深克隆

function clone(obj){
    if(typeof(obj)== 'object'){
        var result = obj instanceof Array ? [] : {};
        for(var i in obj){
            var attr = obj[i];
            result[i] = arguments.callee(attr);
        }
        return result;
    } else {
        return obj;
    }
};

16、

 js中怎么实现块级作用域?

  • let: 语法上非常类似于var, 但定义的变量只存在于当前的语句块中。使用let代替var可以更容易的定义一个只在某个语句块中存在的局部变量,而不用担心它和函数体中其他部分的同名变量有冲突.在let语句内部用var声明的变量和在let语句外部用var声明的变量没什么差别,它们都拥有函数作用域,而不是块级作用域.
  • 17、

    如果在同一个元素上绑定了两个click事件, 一个在捕获阶段执行, 一个在冒泡阶段执行. 那么当触发click条件时, 会执行几个事件? 执行顺序是什么?

  • 点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值