WEB前端面试题目整合

1、阐述清除浮动的几种方式(常见问题)

  1. 最后一个浮动标签后,新加一个标签,给其设置clear:both(添加了无意义标签,语义化差)
  2. 父级元素添加 overflow:hidden(内容增多的时候容易造成不会自动换行导致内容被隐藏掉)
  3. 使用after伪元素清除浮动(推荐使用)

(注:css中的伪元素:before、after、first-letter、firstline)

2 Javascript中的定时器有哪些?他们的区别及用法是什么?

setTimeout 只执行一次

setInterval 会一直重复执行

3、请描述一下 cookies 、sessionStorage和localstorage区别

不同点:

1.存储大小

· cookie数据大小不能超过4k。

· sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

2.有效时间

· localStorage    存储持久数据,浏览器关闭后数据不丢失除非主动删除数据

· sessionStorage  数据在当前浏览器窗口关闭后自动删除

· cookie          设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

3. 数据与服务器之间的交互方式

· cookie的数据会自动的传递到服务器

· sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存

(注:     cookie 和session 的区别:

  1. cookie数据存放在客户的浏览器上,cookie不是很安全单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
  2. session数据放在服务器上,当访问增多,会比较占用你服务器的性能。

4、什么是ajax?

ajax(异步javascript xml) 能够刷新局部网页数据而不是重新加载整个网页。

5. 块级元素水平垂直居中的方法有哪些

让div等块级元素水平和垂直都居中,即永远处于屏幕的正中央,

1、CSS的margin设置为auto让浏览器自己帮我们水平和垂直居中

2、利用 flex 布局

.container {

    display: flex;

    align-items: center;        /* 垂直居中 */

    justify-content: center;    /* 水平居中 */

}

6、http 和 https 有何区别

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

https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份

7.常见的HTTP状态码

  • 2开头 (请求成功)表示成功处理了请求的状态代码。

     200 (成功) 服务器已成功处理了请求;

     202 (已接受) 服务器已接受请求,但尚未处理;

  • 3开头 (请求被重定向)表示要完成请求,表示要完成请求,需要进一步操作:

     301 (永久移动) 请求的网页已永久移动到新位置;

  • 4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。

     404 (未找到) 服务器找不到请求的网页

  • 5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。

     500 (服务器内部错误) 服务器遇到错误,无法完成请求;

8、px和em的区别

px表示像素 (计算机屏幕上的一个点:1px = 1/96in),是绝对单位,不会因为其他元素的尺寸变化而变化;

em表示相对于父元素的字体大小。em是相对单位 ,没有一个固定的度量值,而是由其他元素尺寸来决定的相对值。

9、CSS样式覆盖规则

  1. 继承的样式和直接指定的样式冲突时,直接指定的样式获胜
  2. !important>>内联样式的权值>>ID选择器>>类选择器>>标签选择器

10、浏览器的内核分别是什么?

IE: trident内核

Firefox:gecko内核(壁虎)

Safari:webkit内核

Opera: Blink内核 (眨眼)

Chrome:Blink

11、js的基本数据类型

JavaScript中有五种基本数据类型,它们分别是:undefined,null,boolean,number,string,还有一种复杂数据类型object。

12、h5新特性

(1)新的语义标签:headerfootersectionarticle

(2)表单新特性

(3)视频和音频:audiovideo

(4)Canvas绘图

(5)地理定位

         (6)本地存储:localStorage sessionStorage 

      (7) 新协议WebSocket:单个 TCP 连接上进行全双工通讯的协议

13、请写出你对闭包的理解,并列出简单的理解

1、定义和用法:闭包是指有权访问另一个函数内部变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,

闭包的优点是可以读取函数内部的变量,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

闭包有三个特性:

1.函数嵌套函数 

2.函数内部可以引用外部的参数和变量 

3.参数和变量不会被垃圾回收机制回收

14、什么叫优雅降级和渐进增强?

  • 渐进增强 progressive enhancement:

针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

  • 优雅降级 graceful degradation:

一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。

15、websocket和ajax轮询

websocket是html5中提出的新的协议,它允许客户端和服务器之间进行全双工通信(而HTTP协议有一个缺陷:通信只能由客户端发起,服务器主动向客户端发起消息)

ajax轮询连接需要每隔一段时间就向服务器发起请求,查询服务器是否有数据更新

缺点就是,每次都要建立HTTP连接,即使需要传输的数据非常少,浪费带宽。

16、Doctype作用?

<!DOCTYPE>声明位于文档的最前面,告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

17、CSS 选择器有哪些?哪些属性可以继承?

  • 选择器:

id选择器(#myId)

类选择器(.myClassName)

标签选择器(div,p,h1)

相邻选择器(h1 + p)

子选择器(ul > li)

后代选择器(li a)

通配符选择器(*)

属性选择器(button[disabled="true"])

伪类选择器(a:hover,li:nth-child)

  • 可继承的样式: font-size font-family color, UL LI DL DD DT;
  • 不可继承的样式:border padding margin width height ;

18.javascript的内存回收机制?

垃圾回收器会每隔一段时间找出那些不再使用的内存,然后为其释放内存

1、一般使用标记清除方法 当变量进入环境标记为进入环境,离开环境标记为离开环境

2、引用计数方法,记录每个值被使用的次数,引用次数变为0的时 候,说明没有变量在使用

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

首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。

(1)行内元素有:a b span img input select strong(强调的语气)

(2)块级元素有:div ul li h1 h2 h3

(3)常见的空元素:<br> <hr> <img> <input> <link> <meta>

20、CSS3有哪些新特性?

         1.css3选择器

         2.@Font-face 特性,可以用来加载字体样式,让客户端显示客户端所没有安装的字体。

         3.圆角(border-radius)

         4.阴影(Shadow)

         5.多列布局 (multi-column layout)

         6. CSS3 的渐变效果

         72D转换效果:Transforms

         8.动画特效:Animation

         9.flex布局

21、position的值, relative和absolute分别是相对于谁进行定位的?

  1. absolute :生成绝对定位的元素,相对于最近一级的定位
  2. fixed生成绝对定位的元素,通常相对于浏览器窗口进行定位。
  3. relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。
  4. static 默认值。没有定位,元素出现在正常的流中
  5. sticky 生成粘性定位的元素,容器的位置根据正常文档流计算得出

22、谈谈你对webpack的看法

WebPack 是一个模块打包工具,你可以使用WebPack管理你的模块依赖,并编绎输出模块们所需的静态文件。它能够很好地管理、打包Web开发中所用到的HTML、JavaScript、CSS以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源,webpack有对应的模块加载器。webpack模块打包器会分析模块间的依赖关系,最后生成了优化且合并后的静态资源。

23、说说TCP传输的三次握手四次挥手策略

         TCP建立连接需要三次握手,也就是指建立一个TCP连接的时候,客户端和服务器总共传送三个数据包,目的是客户端连接服务器的指定端口。握手过程中使用了TCP的标志:SYN和ACK。

  1. 第一次握手:首先客户端发送一个带有标志位为1的SYN标志的数据包给服务器。
  2. 第二次握手:服务器接收后,返回一个带有ACK标志的数据包应答,即SYN和ACK标志位为1,并确认序列号为+1。
  3. 第三次握手:最后客户端再次发送确认包(ACK),SYN的标志位为0,ACK标志位为1,并把服务器发送来的ACK的序号+1,代表握手结束。

  TCP断开连接需要四次挥手。也就是指断开一个TCP连接的时候,客户端和服务器总共传送四个数据包,服务器和客户端都可以主动发起挥手(断开连接)。

  1. 第一次挥手:主动关闭方发送一个标志位为1的FIN的数据包,用来关闭主动方到被动关闭方的数据传输,也就是主动关闭方告知被动关闭方,不会再给被动方发送数据。但是在FIN包发送之前发送出去的数据,如果没有收到对应的ACK确认报文,主动关闭方依然会重发这些数据,此时主动关闭方还可以接受数据。
  2. 第二次挥手:被动方收到FIN包后,发送一个标志位为1的ACK数据包,确认序号为收到的序号+1。
  3. 第三次挥手:被动方发送一个标志位为1的FIN包,用来关闭被动方到主动方的数据传输,告知主动方,数据发送完毕,不会再发送数据。
  4. 第四次挥手:主动关闭方收到FIN包后,发送一个标志位为1的ACK包,确认序号为收到的序号+1,到这里,四次挥手完成。

24、创建ajax过程

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.

(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息(即请求报文行).

(3)设置响应HTTP请求状态变化的函数.

(4)发送HTTP请求.

(5)获取异步调用返回的数据.

(6)使用JavaScript和DOM实现局部刷新

25、Web Worker

就是在js单线程执行的基础上开启一个子线程,进行程序处理,而不影响主线程的执行,当子线程执行完之后再回到主线程上,在这个过程中不影响主线程的执行。

26、谈谈性能优化问题

  •          代码级的优化:
  1. 优化DOM操作(减少dom操作,多个操作尽量合并到一),减少闭包的使用
  •          页面级的优化:
  1. 使用JSON格式(代替XML)来进行数据交互。
  2. CSS样式放在header中,JS逻辑放在关闭标签</body>之前
  3. 尽量别使用iframe标签,会消耗大量的时
  •         服务器端的优化:
  1. 合并css文件,合并js文件(webpack打包工具可以实现)
  2. 使用CDN和缓存来提高速度

27、CSS中link 和@import的区别是?

(1) link属于HTML标签,而@import是CSS提供的;

(2) 页面被加载的时,link会同时被加载,而@import被引用的CSS会等到引用它的CSS文件被加载完再加载;

(3) import只在IE5以上才能识别,而link是HTML标签,无兼容问题;

(4) link方式的样式的权重高于@import的权重.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值