web前端理论拓展面试题

前端扩展题

1.http状态码。

  • 200 - 请求成功

  • 301 - 资源(网页等)被永久转移到其它URL

  • 404 - 请求的资源(网页等)不存在

  • 500 - 内部服务器错误

2.输入url到显示页面的步骤。

浏览器根据请求的 URL 交给 DNS 域名解析,找到真实 IP ,向服务器发起请求;

服务器交给后台处理完成后返回数据,浏览器接收⽂件( HTML、JS、CSS 、图象等);

浏览器对加载到的资源( HTML、JS、CSS 等)进⾏语法解析,建立相应的内部数据结构 (如 HTML 的 DOM);

载⼊解析到的资源⽂件,渲染页面,完成。

3.前端优化

1、 减少http请求

2、 减少资源体积

3、 缓存(dns缓存、cdn部署与缓存、http缓存)

4、 优化网页渲染

5、 dom操作优化

6、 异步请求优化

7、图片 懒加载 图片精灵 base64

减少 代码体积 避免重回重排 少用闭包 少用全局变量 少用iframe 触底加载

4.浏览器内核。

渲染器引擎 js引擎

5.a标签的target的取值,以及锚点。

_black:点击一次打开一个新窗口 _new:始终在同一个新窗口中打开 _self:默认,在当前窗口打开 _parent:在父级窗口打开 _top:在当前的整个浏览器中打开所链接文档,即在顶级窗口打开

href="id值"

6.html的离线存储怎么使用。

HTML5提出了两大离线存储技术:localstorage与Application Cache,两者各有应用场景;传统还有离线存储技术为Cookie。

7.iframe框架的优缺点。

框架的优点

重载页面时不需要重载整个页面,只需要重载页面中的一个框架页(减少了数据的传输,加快了网页下载速度)

  • 技术易于掌握,使用方便,使用者众多,可主要应用于不需搜索引擎来搜索的页面

  • 方便制作导航栏

    框架的缺点(iframe的缺点与frame类似)

  • 会产生很多页面,不容易管理

  • 不容易打印(目前只能实现分框架页面的打印,不能实现对frameset的打印)

  • 浏览器的后退按钮无效(只能针对实现当前光标所在页面的前进与后退,无法实现frameset整个页面的前进与后退)

  • 代码复杂,无法被一些搜索引擎索引到(框架结构(帧结构)的不能为每个网页都设置一个标题(TITLE),更为糟糕的是,有些搜索引擎对框架结构的页面不能正确处理,会影响到搜索结果的排列名次)

  • 多数小型的移动设备(PDA 手机)无法完全显示框架

  • 多框架的页面会增加服务器的http请求

  • 由于上面诸多缺点,因此不符合标准网页设计的理念,已经被标准网页设计抛弃,目前的html5已不再支持此标签

8.canvas和svg的区别。

  1. svg 是一种矢量图,而 canvas 依赖于分辨率。所以 svg 放大不会失真,但是 canvas 绘制的图形会失真。

  2. svg 支持事件处理器,而 canvas 不支持事件处理器。

  3. svg 中的文字独立于图像,文字可保留,可编辑和可搜索,canvas 的文本渲染能力弱。

  4. canvas 适合图像密集型的游戏,频繁地重绘图像,svg 绘制的复杂度高时减慢渲染的速度。

  5. canvas 绘制的图形可以多种格式 (jpg、png) 保存图片,但是 svg 绘制的只能以 .svg 格式保存,使用时可以引入 html 文件。

  6. canvas 适合开发游戏,svg 不适合游戏应用。

9.css图片精灵sprite.

雪碧图,就是将网页制作中使用的多个小图片合并成一个图片,使用css技术将这张合成的图片应用在网页不同的地方,雪碧图可以减少网页加载时的http请求数,优化网页性能。

2、jpg 网页制作及日常使用最普遍的图像格式。 优点:图像压缩效率高,图像容量相对最小。 缺点:有损压缩,图像会丢失数据而失真,不支持透明背景,不能制作成动画。

3、gif 制作网页小动画的常用图像格式。 优点:无损压缩,图像容量小、可以制作成动画、支持透明背景。 缺点:图像色彩范围最多只有256色,不能保存色彩丰富的图像,不支持半透明,透明图像边缘有锯齿。

4、png 网页制作及日常使用比较普遍的图像格式。 优点:无损压缩,图像容量小、支持透明背景和半透明色彩、透明图像的边缘光滑。 缺点:不能制作成动画

10.js如何实现异步编程。

JavaScript中实现异步编程模式的方法:1、回调函数,这是异步编程最基本的方法;2、事件监听;3、发布或订阅;4、Promises对象。

11.js如何实现继承。

1.原型链继承

2.构造函数继承

3.组合继承

4.原型式继承

5.寄生式继承

6.寄生组合式继承

12.new操作符具体干了什么?

  • 创建一个新的对象obj

  • 将对象与构建函数通过原型链连接起来

  • 将构建函数中的this绑定到新建的对象obj

  • 根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理

13.怎么跨域?

jsonp window.name iframe 中继服务器 利用script标签能引入不同源的资源来跨域 反向代理

14.设计模式介绍?工厂模式、构造函数模式。

15.css预解析SaaS less

CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题。例如你可以在 CSS 中使用变量、简单的逻辑程序、函数等等在编程语言中的一些基本特性,可以让你的 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。

less是通过客户端处理,sass是通过服务端处理;

sass的功能比less强大,less则相对简单易于上手,对编译环境要求比较宽松;

less定义变量使用@ sass定义变量使用$

16.meta的作用

meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言,自动刷新并指向新的页面,实现网页转换时的动态效果,控制页面缓冲,网页定级评价,控制网页显示的窗口等!

17.utf-8

万国符

18.datalist标签

定义input标签可能的值 在input中用list:"datalist的id"

19.w3c 万维网联盟

20.css层叠样式表

21.transform

transition rotate scale skew 3d none

22.math 对象 date对象 时间戳

23.==和===的区别 ===会判断数据类型

24.es由ecma欧洲计算机协会提出

25.浏览器的两个页面如何交互

本地存储 postmessage websocket 轮训

26.hash 哈希值

你可以把哈希值简单地理解成是一段数据(某个文件,或者是字符串)的DNA,或者身份证。 通过一定的哈希算法(典型的有MD5,SHA-1等),将一段较长的数据映射为较短小的数据,这段小数据就是大数据的哈希值。他有这样一个特点,他是唯一的,一旦大数据发生了变化,哪怕是一个微小的变化,他的哈希值也会发生变化。另外一方面,既然是DNA,那就保证了没有两个数据的哈希值是完全相同的。

27.数组去重

28.jquery的4种绑定事件的方法有何区别?on live bind delegate

bind 不支持事件委托 不能给未来的元素绑定事件

其他都可以

但是推荐用on

live delegate 在高版本已被废弃

29.表达式

表达式一般需要一个返回值

而一般一行代码就是一个语句 他是为了某种操作 一般不需要返回值

30.雪碧图

31.base64

将图片转为加密格式字符串

主要用于图片加密传输

也可以用于前端优化

把容量少于10kb的图片转为base64格式 减少http请求

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

32.响应式和自适应

都是用媒体查询

自适应是根据不同的屏幕 选择选用哪一套css代码

响应式是根据不同的屏幕分辨率做后续js代码是处理

33.输入url到渲染页面的步骤

34.websocket轮训

因为 HTTP 协议有一个缺陷:通信只能由客户端发起

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

35、浏览器内核

36、如何进行深拷贝?

1.递归 2.json.parse() json.stringify 3.构造函数

37、canvas画布和svg矢量图形的区别?

38、readonly和disabled的区别。

disabled属性可以作用于所有的表单元素。 readonly属性只对<input type="text">、<input type="number">、<textarea>和<input type="password">等可以输入的表单元素有效。

39、数组的方法。

join 数组转字符串

sort

reverse

slice

shift

unshift

pop

push

40、rgba的范围

0-255 16进制 15*15=255

41、面向对象

封装性 继承性 多态性

es6 class类

42、三元表达式

 var b = a >= 3 ? true : false

43、promiss

Promise 是 ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数,用来封装异步操作 并可以获取其成功或失败的结果;

  1. Promise 构造函数: new Promise (function(resolve,reject) { });

  2. Promise.prototype.then 方法;

  3. Promise.prototype.catch 方法;

44、css最好在head中用link引入?

css在head标签中引入时,会阻塞HTML的渲染,因此页面只有等到css下载并解析完成之后才会进行渲染,所以最终出现的页面是带有完整样式的;这个过程只发生一次解析渲染HTML解析生成DOM树+CSS解析生成CSSOM树+结合生成Layout树+计算布局+绘制;但也存在缺点:在css文件下载比较慢时,会出现长时间白屏,但与出现“裸奔”页面相比,白屏似乎在体验上显得更加友好**。

css在body标签中引入时,会阻塞HTML的解析,但不阻塞HTML的渲染,因此页面在css下载完成之前会将link标签前的HTML先进行解析渲染,并展现在页面,但由于没有css样式,页面会出现“裸奔”现象;等到css下载解析完成之后,页面重新解析渲染,展现出带有样式的HTML,这个过程会导致reflow或是repaint;从用户体验方面看:css在body标签中引入时,虽然页面可以先展现出来,但由于“裸奔”现象,会导致极差的用户体验;从性能方面看,与css在head标签中引入相比,页面在css加载完成后需要重新解析渲染**,这个过程带来了极大的性能损耗。

45、路由替换

46、多个页面之间如何进行通信。

window.postmessage

websocket 轮训

iframes

localstrorage

47、真值和假值

数值类型转换成布尔值
undefinedfalse
nullfalse
布尔值true是true ,false是false
数字0 和NaN是false,其他是true
字符串空字符串为false,其他为true
对象true

48、undefined 和 not defined的区别

undefined是声明了 没有赋值

not defined 是没有声明

49、语句和表达式

一般情况下,在js里每一行就是一个语句。

语句是为了完成某种任务而进行的操作,比如赋值语句:

var a = 1+3;

在这条语句中,上面的1+3就是表达式。

语句和表达式的区别在于,语句是为了进行某种操作,一般情况下不需要返回值,而表达式都是为了得到返回值,一定会返回一个值(这里的值不包括undefined)。

50、数字相关方法·

.valueOf() 以数值返回数值:

toString() 以字符串返回数值。

toFixed() 返回字符串值,它包含了指定位数小数的数字:

51、math date 时间戳

52、改变this指向 call apply bind

call():将函数作为对象的方法来调用,将指定参数传递给该方法 会立即执行

apply():将函数作为对象的方法来调用,将参数以数组形式传递给该方法 会立即执行

bind(): 将函数作为对象的方法来调用,返回值为一个函数,不会立即执行。

53、解构赋值

es6引入的赋值模式。

54、模块化

模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。

模块化的好处: 模块化的优势有以下几点: 1. 防止命名冲突; 2. 代码复用; 3. 高维护性;

ES6 模块化语法: 模块功能主要由两个命令构成:export 和 import; export 命令用于规定模块的对外接口(导出模块); import 命令用于输入其他模块提供的功能(导入模块); 不能在模块外使用 import 语

55、js动画和css动画

CSS3的动画的优点:

  1. 在性能上会稍微好一些,浏览器会对CSS3的动画做一些优化(比如专门新建一个图层用来跑动画)

  2. 代码相对简单

但其缺点也很明显:

1、在动画控制上不够灵活

2、兼容性不好

3、部分动画功能无法实现(如滚动动画,视差滚动等)

56、编码集

是一个系统支持的所有抽象字符的集合。

字符是文字和符号的总称。

ascⅡ 是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,

gb2312 中文字符集

unicode 收录所有语言 的字符集 用2或4字节的数字来表达一个字符 2或4

utf-8字符编码方案 针对unicode的可变长度编码方案 1-4

用Unicode储存 用utf-8传输 减少带宽

请求头:

Accept-Charset:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);

Accept-Language:浏览器申明自己接收的语言。语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

57、css常用单位

px rem 根元素 em 父元素 vw vh % cm mm in 英寸

58、对BFC规范的理解?

块级格式化上下文,

浮动 绝对定位 固定定位 弹性盒 根元素

它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用

59、eval是做什么的? 它的功能是把对应的字符串解析成 JS 代码并运行

60、attribute和property的区别是什么?

attribute 是 dom 元素在文档中作为 html 标签拥有的属性;

property 就是 dom 元素在 js 中作为对象拥有的属性。

对于 html 的标准属性来说, attribute 和 property 是同步的,是会自动更新的

但是对于自定义的属性来说,他们是不同步的

61、什么是html? html的作用

62、布尔转数字 数字转布尔值

true=1 false=0

非0=true 0=false

63、obj增加删除属性

64、settimeout的自我调用

65、z-index只对父子父子关系管用。

66、base64的原理

将二进制数据转换成字符串

减少http请求

67、meta标签的作用

68、表单、表格中的元素

form(input textarea button label datalist)

table(thead tbody tr td th)

69、怎么去除行内块的间隙

70、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值