面试知识点总结

发布时间:2019-08-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了面试知识点总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

最近面试几家前端职位,想知道目前的前端面试题是偏向哪一块,都主要问到的是ES6语法,闭包,原型链,继承那一块。并且将面试题的知识点汇总一下。有助于下次面试。

1.HTML

HTML5新特性,语义化

HTML5新增了许多标签<header>,<;main>,<footer>,<nav><section>,<article>,<aside>,还用了<canvas>绘图,<video>视频,<audio>音频.本地储存localstorage,sessionstorage,定位,离线缓存等。
HTML5新特性
优点:

SEO(搜索引擎优化);结构更加清晰,方便维护.

浏览器的标准模式和怪异模式

在W3C还没有制定出标准之前,不同的浏览器有属于自己一套标准.不同浏览器会根据自己的规则渲染页面.那么渲染出来的页面就不同,为怪异模式。那么W3C制定出一系列标准规则之后。浏览器按这套规则渲染页面那就是标准模式

xhtml和html的区别

1.xhtml里面的标签必须闭合。
2.xhtml里面的标签必须小写。
3.xhtml里面必须嵌套元素是正确的。

使用data-的好处

1.自定义属性可以统一化。
2.以后维护更加的方便,页面结构清晰
3.element.dataset.获取信息 <element data-*="somevalue">

<div data-main="main"></div>
var main = document.querySeletor('div');
console.log(div.dataset.main); //main

meta标签

meta标签一般表述当前文档的属性.例如作者关键字等等信息。
详细了解参考https://www.cnblogs.com/reaf/...

canvas

canvas是一个HTML5提供的绘图API,通过getContent()方法获取画笔才可绘图。与svg的最大差别是svg使用一个 XML 文档来描述绘图.

HTML废弃的标签

<iframe><font><s>等等。感觉也没什么用,一般都很少用得到的标签。

IE6 bug,和一些定位写法

1.双边距bug:当元素使用float过后,使用Margin都会有两倍边距,需要明确其元素类型来解决边距问题. display:inline或display:block;
2.相对父容器绝对定位bug
ie6很多bug可以通过触发layout来解决。无论设置zoom:1或者设置高都能触发。
参考链接
IE6中的常见BUG
IE6相对父容器绝对定位的bug及其解决办法

css js放置位置和原因

一般来说css和js都是通过外部引入的。这样方便维护管理。
由于浏览器的加载顺序,css放在head标签中,js会阻塞html加载。我建议页面效果显示的js放在body之前,交互,事件的js可以放在后面。

什么是渐进式渲染

浏览器的渲染:过程与原理
What is progressive rendering?

html模板语言

一般平常的数据渲染,需要用字符串与数据一个个拼接而成,但后期维护很麻烦。于是有了html模板。不同的html模板可以写法也不同。es6有一种是叫模板字符串 数据通过#{}并接而成.

meta viewport

meta介绍参考
常用的meta

2 CSS

CSS3新特性,伪类,伪元素

css3增加了很多新的特性,但兼容的话一般在IE9+,例如box-sizing,CSS选择器,背景background-size,边框阴影,角等等.
伪类一个冒号: 伪元素两个冒号:: 权重级别不一样
:First-child :hover :active
::before ::after 兼容性不好
伪类伪元素
一般用于真正的内容用伪类,但伪元素用于比如图标之类的没有什么实质的内容。
伪类与伪元素差别

CSS实现隐藏页面的方式

display:none元素隐藏.页面宽高不显示.不占页面位置.
opactiy: 0 只是将透明度设置为0,但占页面位置.
visibilty: hidden 也是隐藏元素

link和@import引入css的区别

link标签引用在head标签里面,@import 引用于在CSS样式表中。
加载顺序问题.link是在页面加载的时候可以同时加载css ,@import需要在加载页面内容之后才加载
link兼容性比@import好些。

flexbox弹性盒子

一般使用于移动端和高级浏览器.运用了弹性布局那么float,clear,vertical-align都会失效。
有分主轴和交叉轴。

实现两栏布局有哪些方法?

1.float方法实现
2.flex布局实现

CSS优先级

一般以引用的样式来说 内联样式 > 内部样式 > 外部样式(就近原则)

权重级别
important 最高级
行内 +1000
id +100
属性选择器,类,伪类 +10
元素,伪元素 +1
通用符* 0
CSS权重

3.JS

js的基本类型有哪些?引用类型有哪些?nullundefined的区别?string包装对象和基本类型区别

基本类型: null,undefined,number,string,boolean
引用类型: object => function,(number,string,boolean)包装对象,Date等等。
基本类型属于栈
引用类型属于堆

null和undefined的区别
null是访问一个尚未存在的对象时所返回的值。 转换成数值类型为 0
undefined是访问一个未初始化的变量时返回的值。 转换数值类型为NaN.

包装对象与基本类型的区别
无法在基本类型上添加方法属性。
包装对象可以添加属性。
轻松理解JS基本包装对象

判断是否Array类型
1.通过instanceof 判断原型对象是否指向Array构造对象
arr instanceof Array // true
2.对象的constructor属性
arr.constructor = Array // true

解释一下事件冒泡和事件捕获
一般一个事件触发时候会进行事件流,而事件流有两个阶段一个就是从外到里为捕获阶段,从里到外是冒泡阶段。

阻止冒泡方法

function stop(e){
    if(e.stopPRopagation){
    e.stopPropagation();
    }else{
    e.cancelBubble = true;
    }
}

对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点
闭包是外部能访问内部变量的函数。一般来说内部定义的函数能访问到外部的变量。但外部无法访问内部函数里面定义的变量。

function a(){
var i = 0;
 function b(){
  console.log(i)
  return b;
 }
}

这样就形成了闭包,当外部定义个变量时候,接收a函数的返回值,执行这个函数就能获取到这个变量。
优点 解决外部无法获取内部函数的值
缺点 闭包会使得这个变量一直占据内存中。

this有哪些使用场景

this 指向用于三种场景
1.在构造函数中方法使用this,这this指向实例。
2.事件中使用this,这this指向对应的dom元素
3.全局方法使用this。会执行window.如果是node环境下。指向global

call,apply,bind

call,apply 都是改变函数执行上下文。
call与apply就一个区别就是传入参数的问题。call是一个个传入,apply是以数组的形式传入。
而bind是返回一个函数副本。他不会执行函数。需要自己手动执行函数。
聊一聊call、apply、bind的区别

显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链
http://www.cnblogs.com/wangfu...

创建对象的多种方式

1.直接用字面量创建

var obj = {}

2.构造函数创建

function obj(){}
var obj1 = new obj;

3.直接通过new object()创建
4.工厂函数创建

JS创建对象几种不同方法详解

变量提升

在Javascript中,变量声明函数声明会最先执行。
函数声明大于变量声明
例如

function a(){}
var a;
console.log(a) // function a(){}

函数声明

function a(){}

函数表达式

var a = function(){} 等同于 var a = 1;

宿主对象和原生对象(内部对象)的区别
宿主对象 是浏览器提供的对象 BOM如Window和Document等 DOM对象
原生对象(内部对象)是指JS内置的对象 String Number Boolean Date
还有自己定义的对象 自定义对象。

document load和document DOMContentLoaded两个事件的区别

document DOMContentLoaded是DOM加载完毕会执行这个函数 等同于jq中的$(function(){})
document load 是JS加载完成才执行这个函数

typeof能够得到哪些值

"number"、"string"、"boolean"、"object"、"function" 和 "undefined"
注意 typeof null , array,{} 都检测出object

什么是“use strict”,好处和坏处

好处: 1.使得JS语法更加规范化。目前的ES6是严格模式。2.能早点发现代码的错误问题,提高代码的安全性。
坏处: 一般网站都会将JS代码进行压缩,但是有些JS代码有严格模式,而有些代码没有严格模式。当他们合并在一起,会浪费字节。

函数作用域是什么?js 的作用域有几种

函数作用域是函数里面有作用域,比如在函数体中定义个变量,在外部访问不到这个变量的。
JS作用域中有三种。全局作用域,函数作用域,块级作用域。es6语法才支持块级作用域。

弄懂JavaScript的作用域和闭包

数组常用API 字符串api

Array
增: arr.push() arr.unshift()
删: arr.pop() arr.shift()
改: arr.reverse() arr.sort() arr.concat() arr.join() arr.slice() arr.splice() arr.toString()
查: arr.indexOf() arr.lastIndexOf()
数组常用API

String
字符串常用API

浅拷贝和深拷贝

http://www.jb51.net/article/9...

编写一个通用的事件监听函数

https://blog.csdn.net/github_...

web端cookie的设置和获取

原生事件绑定(跨浏览器),dom0和dom2的区别?

dom0
ele.onclick = handler;ele.onclick=null;最古老的一种方式
优点:全浏览器兼容
缺点:同一事件只能绑定/解绑一个事件处理

ele.add/removeEventListener(eventType, handler, catch);
和IE方式:ele.attach/detachEvent(‘on’+eventType, handler);
优点:支持绑定/解绑多个事件处理器
缺点:需要做兼容性判断。

JS原生事件处理(跨浏览器)

如何实现图片滚动懒加载

懒加载原理是图片还没到可视区域时先用一张很小的图片来当背景,如果滚动到可视区域时,再加载图片路径。
滚动加载图片(懒加载)实现原理

cookie获取设置删除

https://blog.csdn.net/qiqingj...

DOM事件的绑定的几种方式

三种绑定事件的方式
1.直接在DOM 上面绑定
2.通过脚本里面绑定
3.通过监听事件绑定
https://www.cnblogs.com/mylov...

js的设计模式知道哪些

工厂模式 Factory Pattern,
单例模式 Singleton Pattern,
模块模式,
发布订阅模式,
中介者模式 Mediator Pattern,
代理模式 Proxy Pattern

https://www.cnblogs.com/tugen...

4.ES6

谈一谈 promise

promise对象主要处理回调函数的对象。实例化一个promise对象之后有三种状态 pending: 初始状态,既不是成功,也不是失败状态。
fulfilled: 意味着操作成功完成,rejected: 意味着操作失败。
实例化promise对象有两个参数 resolve 和 reject 。

promise实例化生成之后可以通过then() 和catch()链式调用自定义方法。
参考网站

面试题

图片过多的时候如何优化

1.图标很多的时候可以用雪碧图
2.图片过大时候可以压缩一下。
3.小图标如果不用雪碧图可以考虑用base64编码
4.图片缓存

怎么将字符串中的字符用空格隔开

function aaa(str){
return str.split("").join(" ");
}
aaa('123'); // 1 2 3

怎么获取checkbox的元素,用JS怎么写

document.getElementsByName("") 获取所有name属性的元素
其次还有document.getelementsbytagname() 获取标签元素
document.getElementById 获取ID
document.getElementsByClassName 获取类名

JS JQ 增删改查方法

JS
createElement //创建一个元素
createTextNode //创建一个文本节点

JQ
$("<div>123</div>")

添加,移除,插入
JS
insertBefore() // 被选元素的前面插入
appendChild() // 被选元素的后面插入
removeChild() // 删除

JQ
append() //被选元素插入内容
prepend()
remove()
insertAfter() //被选元素的前面插入
instetBefore()

脚本宝典总结

以上是脚本宝典为你收集整理的面试知识点总结全部内容,希望文章能够帮你解决面试知识点总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。