100道前端面试题系列01

来源:互联网 发布:java安装失败 卸载 编辑:程序博客网 时间:2024/06/05 05:37

第一部分

基础题:

01.常用哪几种浏览器测试?有哪些内核?

答:

浏览器

IEChromeFireFoxSafariOpera

内核
TridentGeckoPrestoWebkit

 

02.行内元素有哪些?块级元素有哪些?CSS的盒模型?
块级元素:div p h1 h2 h3 h4 form ul
行内元素: a b br i span input select
Css盒模型:内容,border ,margin,padding

 

03.行内元素和块级元素的区别?

行内元素:会在水平方向排列,设置宽高及内外边距无效,可以设置行高。不可以包含跨级元素。

块级元素:各占据一行,垂直排列,可以包含行内元素,支持上面不支持的属性。

 

04.清除浮动常用方式有哪些?

1.给父级高度。

2.结尾处添加空的div,清除其浮动clear:both

3.为父级设置伪类:after,为其添加清除浮动。

 

05.为什么h5只需要写 <!DOCTYPE HTML>?

HTML5不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

 

Js题:

01.解释一下下面代码的输出:

console.log(0.1+ 0.2); //0.30000000000000004
console.log(0.1+ 0.2 == 0.3); //false

Javascript 中的浮点数采用IEEE-754格式的规定,这是一种二进制表示法,但是,二进制浮点数表示法并不能精确的表示类似0.1这样的简单的数字,会有舍入误差。

由于采用二进制,Javascript 也不能有限表示 1/101/2等这样的分数。在二进制中,1/10(0.1)被表示为0.00110011001100110011…… 注意0011 是无限重复的,这是舍入误差造成的,所以对于0.1 + 0.2 这样的运算,操作数会先被转成二进制,然后再计算:

0.1 => 0.0001 1001 1001 1001…(无限循环)
0.2 => 0.0011 0011 0011 0011…(无限循环)
双精度浮点数的小数部分最多支持 52 位,所以两者相加之后得到这么一串 0.0100110011001100110011001100110011001100…因浮点数小数位的限制而截断的二进制数字,这时候,再把它转换为十进制,就成了0.30000000000000004

常用方法:使用内置的 toPrecision() toFixed() 方法,注意,方法的返回值字符串。

function add(x, y) {
    return x.toPrecision() + y.toPrecision()
}
console.log(add(0.1,0.2));//"0.10.2"

02.split() join() 的区别
前者是将字符串切割成数组的形式,后者是将数组所有值转换成一个字符串

 

03.”==”“===”的不同
前者会自动转换类型后者不会


04.添加 删除替换 插入到某个接点的方法
obj.appendChidl

obj.removeChild

obj.replaceChild
obj.inersetBefore

 

05.下面代码会输出什么?如何输出期望值?

for (vari = 0; i <5; i++) {
    setTimeout(function() {console.log(i); },i * 1000 );
}

输出的都是5,并不是从0输到了5,需要用立即执行解决这个问题。

for (vari = 0; i <5; i++) {
    (function (i){
        setTimeout(function() {console.log(i); }, i *1000 );
    })(i);
}

因为,如果没有外面那个括号它是声明式的函数,要等到函数运行完才会输出。详细请自行百度IIFE
更多文章请关注公众号:FE学习笔记

0 0
原创粉丝点击