前端面试题

https://blog.csdn.net/phj_88/article/details/52443571

1)HTML5和CSS3有哪些新特性?

html5:

1.   用于绘画的 canvas 元素

2.   用于媒介回放的 video和 audio元素

3.   对本地离线存储的更好的支持

4.   新的特殊内容元素,比如 article、footer、header、nav、section

5.   新的表单控件,比如 calendar、date、time、email、url、search

css3:

1.   CSS3实现圆角(border-radius),阴影(box-shadow),

2.    对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)

3.    transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜

4.    增加了更多的CSS选择器  多背景 rgba 

5.    在CSS3中唯一引入的伪元素是 ::selection.

6.    媒体查询,多栏布局

7.    border-image

2)HTML的兼容性问题?

1.   双边距BUG float引起的  使用display

2.   3像素问题 使用float引起的 使用dislpay:inline -3px  

3.   超链接hover 点击后失效  使用正确的书写顺序 link visited hover active

4.   IE z-index问题 给父级添加position:relative

5.   Png 透明 使用js代码 改

6.   Min-height 最小高度 !Important 解决’

7.   select 在ie6下遮盖 使用iframe嵌套

8.   为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)

9.   IE5-8不支持opacity,解决办法:

.opacity {

    opacity: 0.4

    filter: alpha(opacity=60); /* for IE5-7 */

    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; /* for IE 8*/

}

10.    IE6不支持PNG透明背景,解决办法: IE6下使用gif图片

3)如何垂直居中一个浮动元素?

// 方法一:已知元素的高宽

#div1{

    width:200px;

    height:200px;

    position: absolute;        //父元素需要相对定位

    top: 50%;

    left: 50%;

    margin-top:-100px ;   //二分之一的height,width

    margin-left: -100px;

    }

//方法二:未知元素的高宽

  #div1{

    width: 200px;

    height: 200px;

    margin:auto;

    position: absolute;        //父元素需要相对定位

    left: 0;

    top: 0;

    right: 0;

    bottom: 0;

    }

{

    display:table-cell;

    text-align:center;

    vertical-align:middle;

}

4)call和apply的区别?

它们各自的定义:

apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。

call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。

它们的共同之处:

都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。

它们的不同之处:

apply:最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。

call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。 

实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。

5)如何编写高性能的JavaScript?

1、尽量不要用for-in 循环去访问数组,建议用 for 循环进行循环

2、建议将对象进行缓存处理,特别是DOM访问是比较消耗资源的

3、建议不要在函数内进行过深的嵌套判断

4、避免循环引用,防止内存泄漏

5、建议避免在函数内返回一个未声明的变量,会污染外部变量

6、var声明变量,建议写在多行

7)如何消除一个数组里面重复的元素?

var data = ['blue', 'red', 'green', 'blue'];

function UniqueData(data) {

    for (var i = 0; i < data.length; i++) {

        for (j = i + 1; j < data.length; j++) {

            if (data[i] === data[j]) {

                data.splice(j, 1);

            }

        }

    }

    return data;

}

UniqueData(data);

8)数组对象、字符串对象的属性和方法?

https://blog.csdn.net/xiaobing_hope/article/details/52461005

String对象的属性有: 

(1) length (返回字符串的字符长度) 

(2) prototype 

(3) constructor

String对象的方法: 

charAt(); charCodeAt(); indexOf(); match(); replace(); search(); slice(); toUpperCase(); toLowerCase(); 等方法

(1)charAt() —-返回字符串在下标index位置的字符

(2) charCodeAt() —- 返回字符串相应下标index位置的字符的unicode编码

(3) indexOf() —-返回某个指定的字符串值在字符串中首次出现的位置

(4) match() —- 在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

(7) slice() —提取字符串的某个部分,并以新的字符串返回被提取的部分

Array对象的属性有: 

(1) length (返回数组的长度) 

(2) prototype 

(3) constructor

Array对象的方法: 

shift(); unshift(); pop(); push(); concat(); reverse(); splice(); slice(); 等方法

(1)shift(); —删除数组的第一个元素

(2) unshift(); —向数组开头添加元素; 返回的是新数组的长度

(3) pop(); —-删除数组的最后一个元素

(4) push(); —向数组最后添加元素

(5) concat() — 连接多个数组

(6) reverse(); — 反转数组

9)对vue的理解,可以从指令、生命周期的钩子函数?

https://www.cnblogs.com/xkloveme/p/7435271.html

https://blog.csdn.net/u013451157/article/details/78969300

所有的生命周期钩子自动绑定this上下文到实例中,因此你可以访问数据,对属性和方法进行运算。这意味着你不能使用箭头函数来定义一个生命周期方法(例如created: () => this.fetchTodos())。这是因为箭头函数绑定了父上下文,因此this与你期待的 Vue 实例不同,this.fetchTodos的行为未定义。 

生命周期

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

activated

deactivated

beforeDestroy

destroyed

10)Node的优点和缺点?

Nodejs区别于传统应用的特点:

1. 异步事件驱动

2.非堵塞I/O

3. 单线程(这里指主线程)

4. 性能出众

优点:

   1. 采用事件驱动,异步编程,为网络服务而设计。

   2. node.js非阻塞模式的IO处理给node.js带来在相对较低的资源耗用下的高性能与出众的负载能力。

   3. node.js轻量高效,可以认为是数据密集型实时应用系统的完美解决方案。

   4. js语言适合前端工程师上手。

   5. 社区活跃发展速度快。

缺点:

   1. 单线程,单进程,只支持单核CPU,不能充分的利用多核CPU服务器。

   2. 对程序员要求高一旦进程崩溃,那么整个web服务器就崩溃了。

   3. 不适合做复杂性很高的计算。

11)输出p标签123的color值。(red)

12)x的值是多少?(6)

结果为6,是因为delete删除失败,delete只能删除通过for in访问的属性。

13)a输出多少?

666,undefined

14)ture还是false?

0 == '';    ture

NaN == NaN;    false

[] == false;    ture

[] ==![];    ture

15)i输出多少?

4    4    4

16)a输出多少?

2

你可能感兴趣的:(前端面试题)