前端面试题

1.css内容溢出元素出现省略号

text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;

如果不行添加:display: block;  overflow: hidden;

2.css制作出一个三角形,鼠标悬浮时转动

<!DOCTYPE html>
<html>
<head>
	<title>旋转的三角形</title>
</head>
<style type="text/css">
	.triangle{
		height: 0px;
		width: 0px;
		border: 40px solid #000;
		border-left: 40px solid #fff; 
		border-bottom: 40px solid #fff; 
		transition: 1s; 
	}
	.triangle:hover {
		transform: rotateZ(180deg);
	}
</style>
<body>
	<div class="triangle"></div>
</body>
</html>

3.css元素居中

由于方法较多,另写了一篇博客

https://mp.csdn.net/postedit/83315697

4.css属性animation的用法

animation:box 30s linear infinite ;  //加在父元素上

@keyframes box{

    0%{ transform:rotateY(0deg) rotateX(0deg); }

    100%{ transform:rotate(360deg) rotateX(0deg) }

}

5.position有那几个类型:

static:默认   静态定位,普通流定位

relative:相对定位(不脱离文档流)

absolute:绝对定位(脱离文档流)

fixed:固定定位

6.什么是盒子模型?

在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或区域。4个部分一起构成了css中元素的盒模型。

7、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

行内元素:a、b、span、img、input、strong、select、label、em、button、textarea
           块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote
           空元素:即系没有内容的HTML元素,例如:br、meta、hr、link、input、img

8.简短叙述一下同步和异步?

 同步是阻塞模式,异步是非阻塞模式。
            同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
            异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

9.浏览器内核有?

  1. IE: trident内核

  2. Firefox:gecko内核
  3. Safari:webkit内核
  4. Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核
  5. Chrome:Blink(基于webkit,Google与Opera Software共同开发)

10.sessionStorage 、localStorage 和 cookie 之间的区别

           共同点:都是浏览器端缓存数据用的

           不同点: cookie会每次随请求发送到服务器端,造成带宽浪费。Cookie数据不能超过4K,适用于会话标识;

                          web storage 不会浪费带宽,存储大小能达5M,h5新加的特性,可能版本低浏览器不支持;

                          作用域不同:cookie和localStorage是在同源同窗口中都是共享的;sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;

  1. sessionStorage,仅在关闭浏览器之前有效
  2. localStorage,数据存储永久有效;
  3. cookie只在设置了Cookid过期时间之前一直有效,即使关闭窗口或者浏览器;

11.px和em的区别?

异同点:px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。
浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。

12.src和href的区别?

  1. href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。

  2. src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。

  3. 当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

13.document load和document ready的区别?

  1. 共同点:这两种事件都代表的是页面文档加载时触发。
  2. ready 事件的触发,表示文档结构已经加载完成(不包含图片等非文字媒体文件)。
  3. onload 事件的触发,表示页面包含图片等文件在内的所有元素都加载完成。

14.清除浮动的方法:

  1. 给父元素添加height
  2. 给父元素添加overflow:hidden;必须定义width或zoom:1,同时不能定义height,
  3. 结尾处加空div标签 clear:both;添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度 

15.如何给用js方法给一个元素添加两个onclick事件?

步骤:1获取DOM元素      2.用addEventListener

var _div = document.getElementById("btn4");

_div.addEventListener("click",method1);

_div.addEventListener("click",method2);

16.拖拽会用到那几个事件?他们分别是怎么触发的?

  1.   dragstart:拖拽开始时在被拖拽元素上触发此事件,监听器需要设置拖拽所需数据,从操作系统拖拽文件到浏览器时不触发此事件.
  2. · dragenter:拖拽鼠标进入元素时在该元素上触发,用于给拖放元素设置视觉反馈,如高亮
  3. · dragover:拖拽时鼠标在目标元素上移动时触发.监听器通过阻止浏览器默认行为设置元素为可拖放元素.
  4. · dragleave:拖拽时鼠标移出目标元素时在目标元素上触发.此时监听器可以取消掉前面设置的视觉效果.
  5. · drag:拖拽期间在被拖拽元素上连续触发
  6. · drop:鼠标在拖放目标上释放时,在拖放目标上触发.此时监听器需要收集数据并且执行所需操作.如果是从操作系统拖放文件到浏览器,需要取消浏览器默认行为.
  7. · dragend:鼠标在拖放目标上释放时,在拖拽元素上触发.将元素从浏览器拖放到操作系统时不会触发此事件.

17.去除数组中重复的元素?

1.新建数组s    

2.s.indexOf(arr[i]) == -1     为true     ==>   s.push(arr[i])

18.xml和json的区别?

xml:对数据描述性好

json:传送速率快

19.box-sizing常用的属性有哪些?分别有什么作用?

不多说,直接W3C

20.css选择器有哪些,按选择器的权重优先级依次为?

看一下选择器有哪些:

 

  1.标签选择器(如:body,div,p,ul,li)

  2.类选择器(如:class="head",class="head_logo")

  3.ID选择器(如:id="name",id="name_txt")

  4.全局选择器(如:*号)

  5.组合选择器(如:.head .head_logo,注意两选择器用空格键分开)

  6.后代选择器 (如:#head .nav ul li 从父集到子孙集的选择器)

  7.群组选择器 div,span,img {color:Red} 即具有相同样式的标签分组显示

  8.继承选择器(如:div p,注意两选择器用空格键分开)

  9.伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、active、hover。)

  10.字符串匹配的属性选择符(^ $ *三种,分别对应开始、结尾、包含)

  11.子选择器 (如:div>p ,带大于号>)

  12.CSS 相邻兄弟选择器器 (如:h1+p,带加号+)

再看一下,优先级:

  1. 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。

  2. 作为style属性写在元素内的样式

  3. id选择器

  4. 类选择器

  5. 标签选择器

  6. 通配符选择器

  7. 浏览器自定义或继承

21.js中的基本数据类型有哪些?有几种数据类型?

  1. 基本数据类型有五种:undefined、null、number、string、Boolean

  2. 其中object复杂数据类型,Object本质上是由一组无序的名值对组成的。

  3. Function、Array、Object是引用数据类型。

22.undefined和null的区别?

  1. null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。

  2. undefined: Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。

  3. null是javascript的关键字,可以认为是对象类型,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是javascript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined

23.http和https的区别?如何使用?

  1. http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

  2. https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份

24.常见状态码有哪些?代表什么意思?

关于这个问题,不多说,附上链接,要么死记硬背赶面试,要么项目中出现情况好好想想为什么会出现这个情况,去理解,按号入座  杠杠的

链接地址:http://tool.oschina.net/commons?type=5

25.闭包?在什么时候使用?

  1. 包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。

  2. 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

使用闭包的注意点:

  1. · 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

  2. · 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);
//add5 和 add10 都是闭包。它们共享相同的函数定义,但是保存了不同的词法环境。在 add5 的环境中,x 为 5。而在 add10 中,x 则为 10

console.log(add5(2));  // 7
console.log(add10(2)); // 12

详细推荐地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

26.怎么添加、移除、移动、创建、查找、复制节点?老生常谈的问题但很常用。

  1. 创建新节点

    createDocumentFragment() //创建一个DOM片段
    createElement() //创建一个具体的元素
    createTextNode() //创建一个文本节点

  2. 添加、移除、替换、插入
    appendChild() //添加
    removeChild() //移除
    replaceChild() //替换
    insertBefore() //插入

  3. 查找

getElementByclassName() //class类型获取;

getElementsByTagName() //通过标签名称;

getElementsByName() //通过元素的Name属性的值;

getElementById() //通过元素Id,唯一性

27.从浏览器输入URL到页面展示都经历了什么?简单描述

一般会经历以下几个过程:

1、首先,在浏览器地址栏中输入url

2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。

3、在发送http请求前,需要域名解析(DNS解析)(DNS(域名系统,Domain Name System)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住IP地址。),解析获取相应的IP地址。

4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。(TCP即传输控制协议。TCP连接是互联网连接协议集的一种。)

5、握手成功后,浏览器向服务器发送http请求,请求数据包。

6、服务器处理收到的请求,将数据返回至浏览器

7、浏览器收到HTTP响应

8、读取页面内容,浏览器渲染,解析html源码

9、生成Dom树、解析css样式、js交互

10、客户端和服务器交互

11、ajax查询

28.display:none 和 visibility : hidden的区别?

1.display:none是彻底消失,不在文档流中占位,浏览器也不会解析该元素;visibility:hidden是视觉上消失了,可以理解为透明度为0的效果,在文档流中占位,浏览器会解析该元素;

2.使用visibility:hidden比display:none性能上要好,display:none切换显示时visibility,页面产生回流(当页面中的一部分元素需要改变规模尺寸、布局、显示隐藏等,页面重新构建,此时就是回流。所有页面第一次加载时需要产生一次回流),而visibility切换是否显示时则不会引起回流。

29.如何判断一个字符串中出现次数最多的字符?出现了几次?

var str = 'asdfssaaasasasasaa';

var json = {};

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

    if(!json[str.charAt(i)]){

       json[str.charAt(i)] = 1;

    }else{

       json[str.charAt(i)]++;

    }

};var iMax = 0;var iIndex = '';for(var i in json){

    if(json[i]>iMax){

         iMax = json[i];

         iIndex = i;

    }

}        
console.log('出现次数最多的是:'+iIndex+'出现'+iMax+'次');

30.get和post都是异步的请求方式,有什么区别?

1、请求方式不同:$.get() 方法使用GET方法来进行异步请求的。$.post() 方法使用POST方法来进行异步请求的。

2、参数传递方式不同:get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器的,这种传递是对用户不可见的。

3、数据传输大小不同:get方式传输的数据大小不能超过2KB 而POST要大的多

4、安全问题: GET 方式请求的数据会被浏览器缓存起来,因此有安全问题。


31.冒泡排序和冒泡排序的优化?

关于这个问题我单独写了一篇博文:

https://blog.csdn.net/zeng092210/article/details/84590837

32.js循环中跳出循环的方法(或者break,continue,return三个的作用以及区别)?

同上:

https://blog.csdn.net/zeng092210/article/details/84590837

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值