㈠ Web前端面试之css高频面试题
今天小编要跟大家分享的文章是关于web前端面试之css高频面试题。想要参加web前端面试的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助。
1.什么是BFC机制
BFC(BlockFormattingContext),块级格式化上下文,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
·___シ⑻跫(以下任意一条)
§_loat的值不为none
§_verflow的值不为visible
§_isplay的值为table-cell、tabble-caption和inline-block之一
§_osition的值不为static或则releative中的任何一个
在IE下,Layout,可通过zoom:1_シ
·___FC布局与普通文档流布局区别:
BFC布局规则:
1._浮动的元素会被父级计算高度(父级元素触发了BFC)
2._非浮动元素不会覆盖浮动元素的位置(非浮动元素触发了BFC)
3._margin不会传递给父级(父级触发BFC)
4._属于同一个BFC的两个相邻元素上下margin会重叠
5._普通文档流布局:浮动的元素是不会被父级计算高度
6._非浮动元素会覆盖浮动元素的位置
7._margin会传递给父级元素
8._两个相邻元素上下的margin会重叠
·___⒅械挠τ
§_柚_argin重叠
§_梢园《亍宄诓扛《(清除浮动的原理是两个div都位于同一个BFC区域之中)
§_允视α嚼覆季
§_梢宰柚乖乇桓《馗哺
2.CSS3中新增的选择器以及属性
这里只是列出来,具体的使用,请查看我的关于css3新增选择器与属性文章
·___粜匝≡衿
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
属性选择器
含义描述
E[att^="val"]
属性att的值以"val"开头的元素
E[att$="val"]
属性att的值以"val"结尾的元素
E[att*="val"]
属性att的值包含"val"字符串的元素
·___峁刮崩嘌≡衿
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
选择器
含义描述
E:root
匹配文档的根元素,对于HTML文档,就是HTML元素
E:nth-child(n)
匹配其父元素的第n个子元素,第一个编号为1
E:nth-last-child(n)
匹配其父元素的倒数第n个子元素,第一个编号为1
E:nth-of-type(n)
与:nth-child()作用类似,但是仅匹配使用同种标签的元素
E:nth-last-of-type(n)
与:nth-last-child()作用类似,但是仅匹配使用同种标签的元素
E:last-child
匹配父元素的最后一个子元素,等同于:nth-last-child(1)
E:first-of-type
匹配父元素下使用同种标签的第一个子元素,等同于:nth-of-type(1)
E:last-of-type
匹配父元素下使用同种标签的最后一个子元素,等同于:nth-last-of-type(1)
E:only-child
匹配父元素下仅有的一个子元素,等同于:first-child:last-child或:nth-child(1):nth-last-child(1)
E:only-of-type
匹配父元素下使用同种标签的唯一一个子元素,等同于:first-of-type:last-of-type或:nth-of-type(1):nth-last-of-type(1)
E:empty
匹配一个不包含任何子元素的元素,注意,文本节点也被看作子元素
·___ss3新增属性
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
属性
含义描述
兼容
transition
设置过渡效果
transform
变换效果(移动、缩放、转动、拉长或拉伸)
animation
动画效果
box-shadow
阴影效果
FF3.5,Safari4,Chrome3
text-shadow
文本阴影
FF3.5,Opera10,Safari4,Chrome3
border-colors
为边框设置多种颜色
FF3+
boder-image
图片边框
FF3.5,Safari4,Chrome3
text-overflow
文本截断
IE6+,Safari4,Chrome3,Opera10
word-wrap
自动换行
IE6+,FF3.5,Safari4,Chrome3
border-radius
圆角边框
FF3+,Safari4,Chrome3
opacity
不透明度
all
box-sizing
控制盒模型的组成模式
FF3+,Opera10,Safari4,Chrome3
outline
外边框
FF3+,safari4,chrome3,opera10
background-size
不指定背景图片的尺寸
safari4,chrome3,opera10
background-origin
指定背景图片从哪里开始显示
safari4,chrome3,FF3+
background-clip
指定背景图片从什么位置开始裁切
safari4,chrome3
rgba
基于r,g,b三个颜色通道来设置颜色值,通过a来设置透明度
safari4,chrome3,FF3,opera10
3.居中布局
·___骄又
1._行内元素:_ext-align:center
2._块级元素:_argin:0auto
3._绝对定位和移动:_bsolute+transform
4._绝对定位和负边距:_bsolute+margin
5._flex布局:_lex+
justify-content:center
·___怪本又
1._子元素为单行文本:_ine-height:height
2._absolute+transform
3._flex+align-items:center
4._table:_isplay:table-cell;vertical-align:
middle
5._利用position和top和负margin
·___酱怪本又_HAPE*MERGEFORMAT
1.已知元素宽高:绝对定位+margin:auto:
_div{
___idth:200px;
___eight:200px;
___ackground:
green;
___osition:absolute;
___eft:0;
___op:0;
___ottom:0;
___ight:0;
___argin:
auto;
_
2.已知元素宽高:_远ㄎ+负margin
_div{
___idth:200px;
___eight:200px;
___ackground:
green;
___osition:absolute;
___eft:0;
___op:0;
___ottom:0;
___ight:0;
___argin:
auto;
_
3.absolute+transform
_div{
__width:200px;
__height:200px;
__background:
green;
__position:absolute;
__left:50%;_/*定位父级的50%*/
__top:50%;
__transform:translate(-50%,-50%);/*自己的50%*/
_}
4.flex+justify-content
+align-items
.box{
_height:600px;
_display:flex;
_justify-content:center;//子元素水平居中
_align-items:center;__//子元素垂直居中
__/*aa只要三句话就可以实现不定宽高水平垂直居中。*/
__
.box>div{
__ackground:
green;
__idth:200px;
__eight:200px;
_
4.清除浮动有哪些方法,各有什么优缺点
·___褂_lear属性的空元素
在浮动元素后使用一个空元素如
㈡ Web前端面试题汇总之JavaScript篇
今天小编要跟大家分享的文章是关于web前端面试题汇总之JavaScript篇。正在从事web前端学习和准备找工作的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助。
1,介绍js的基本数据类型。
Undefined、Null、Boolean、Number、String
2,介绍js有哪些内置对象?
Object是JavaScript中所有对象的父对象
数据封装类对象:Object、Array、Boolean、Number和String
其他对象:Function、Arguments、Math、Date、RegExp、Error
3,说几条写JavaScript的基本规范?,
1.不要在同一行声明多个变量。
2.请使用===/!==来比较true/false或者数值
3.使用对象字面量替代newArray这种形式
4.不要使用全局函数。
5.Switch语句必须带有default分支
6.函数不应该有时候有返回值,有时候没有返回值。
7.For循环必须使用大括号
8.If语句必须使用大括号
9.for-in循环中的变量应该使用var关键字明确限定作用域,从而避免作用域污染。
4,JavaScript原型,原型链?有什么特点?
每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,
如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,
于是就这样一直找下去,也就是我们平时所说的原型链的概念。
关系:instance.constructor.prototype=instance.__proto__
特点:
JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。
当我们需要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性,如果没有的话,
就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到Object内建对象。
functionFunc(){}
Func.prototype.name="Sean";
Func.prototype.getInfo=function(){returnthis.name;}
varperson=newFunc();
//现在可以参考
varperson=Object.create(oldObject);
console.log(person.getInfo());
//它拥有了Func的属性和方法//"Sean"console.log(Func.prototype);
//Func{name="Sean",getInfo=function()}复制代码
5,JavaScript有几种类型的值?,你能画一下他们的内存图吗?
栈:原始数据类型(Undefined,Null,Boolean,Number、String)
堆:引用数据类型(对象、数组和函数)
两种类型的区别是:存储位置不同;
原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其
在栈中的地址,取得地址后从堆中获得实体
6,Javascript如何实现继承?
1、构造继承
2、原型继承
3、实例继承
4、拷贝继承
原型prototype机制或apply和call方法去实现较简单,建议使用构造函数与原型混合方式。
functionParent(){this.name='wang'}functionChild(){this.age=28;}
Child.prototype=newParent();//继承了Parent,通过原型vardemo=newChild();
alert(demo.age);alert(demo.name);//得到被继承的属性复制代码
7,Javascript作用链域?
作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。
8,谈谈This对象的理解。
this总是指向函数的直接调用者(而非间接调用者);
如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;
this就是指的是当前对象
9,null,undefined的区别?
null表示一个对象被定义了,值为“空值”;
undefined表示不存在这个值。
typeofundefined//"undefined"
undefined:是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回
undefined;
例如变量被声明了,但没有赋值时,就等于undefined
typeofnull//"object"
null:是一个对象(空对象,没有任何属性和方法);
例如作为函数的参数,表示该函数的参数不是对象;
注意:
在验证null时,一定要使用===,因为==无法分别null和undefined
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null表示"没有对象",即该处不应该有值。典型用法是:
(1)作为函数的参数,表示该函数的参数不是对象。
(2)作为对象原型链的终点。
10,["1","2","3"].map(parseInt)答案是多少?
[1,NaN,NaN]因为parseInt需要两个参数(val,radix),
其中radix表示解析时用的基数。
map传了3个(element,index,array),对应的radix不合法导致解析失败。
以上就是小编今天为大家分享的关于web前端面试题汇总之JavaScript篇的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助,想要了解更多web前端知识记得关注北大青鸟web培训官网,最后祝愿小伙伴们工作顺利,成为一名优秀的web前端工程师。
㈢ 前端面试题整理
JavaScript:
1.介绍一下isNaN函数?
如果参数不是数字类型的话isNaN返回true(函数名称:isnan函数功能:判断数组的元素是否是NaN。)
2.javascript都支持哪些布尔型的操作?
&&,||和!(&&逻辑与,||逻辑或,!逻辑非)
3.“1″+2+4在javascript中得到什么?
因为“1”是String类型,所以所有的操作数都是String,结果为124
4.2+5+”8″得到的结果是什么?
因为2和5是数字类型,8是字符串,所以得到的结果是78
5.javascript有几种loop(循环)方法?
for,while,do-while,for...in语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
6.javascript如何创建一个新的对象?
varobj=newObject()或者varobj={}
7.如何为一个对象属性赋值?
obj["age"]=17或者obj.age=17
8.如何为一个数组添加一个值?
arr[arr.length]=value;
9.javascript基本数据类型/javascript中的typeof返回哪些数据类型
Number类型、Boolean类型、Object类型、String类型、Null、Undefined类型/
10.例举3种强制类型转换和2种隐式类型转换?
强制(parseInt,parseFloat,number)隐式(==_===)
11.数组方法pop()push()unshift()shift()
Push()尾部添加pop()尾部删除Unshift()头部添加shift()头部删除
12.闭包是什么,有什么特性,对页面有什么影响
闭包就是能够读取其他函数内部变量的函数。
13.添加删除替换插入到某个接点的方法
obj.appendChild()obj.innersetBefore()obj.replaceChild()obj.removeChild()
14.javascript的本地对象,内置对象和宿主对象
本地对象为arrayobjregexp等可以new实例化
内置对象为gloadMath等不可以实例化的
宿主为浏览器自带的document,window等
15.介绍一下eval()函数
eval()函数可计算某个字符串,并执行其中的的JavaScript代码。
16.介绍一下JSON
JSON:JavaScript对象表示法(JavaScriptObjectNotation)。
JSON是存储和交换文本信息的语法。类似XML。
JSON比XML更小、更快,更易解析。
17.jQueryUI与jquery的主要区别是:
(1)jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。
(2)jQueryUI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等。
(3)jQuery本身注重于后台,没有漂亮的界面,而jQueryUI则补充了前者的不足,他提供了华丽的展示界面,使人更容易接受。既有强大的后台,又有华丽的前台。
html+css:
1.对WEB标准以及W3C的理解与认识:
标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性;
2.xhtml和html有什么区别:
HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言
最主要的不同:
XHTML元素必须被正确地嵌套。
XHTML元素必须被关闭。
标签名必须用小写字母。
XHTML文档必须拥有根元素。
3.行内元素有哪些?块级元素有哪些?CSS的盒模型?
块级元素:divph1h2h3h4formul
行内元素:abbrispaninputselect
Css盒模型:内容,border,margin,padding
4.前端页面有哪三层构成,分别是什么?作用是什么?
结构层Html表示层CSS行为层js
5.写出几种IE6BUG的解决方法:
双边距BUGfloat引起的使用display
3像素问题使用float引起的使用dislpay:inline-3px
超链接hover点击后失效使用正确的书写顺序linkvisitedhoveractive
Iez-index问题给父级添加position:relative
Png透明使用js代码改
Min-height最小高度!Important解决’
select在ie6下遮盖使用iframe嵌套
为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08line-height:1px)
6.解释csssprites,如何使用。
Css精灵把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量
7.你如何对网站的文件和资源进行优化?期待的解决方案包括:
文件合并
文件最小化/文件压缩
使用CDN托管
缓存的使用
8.清除浮动的几种方式,各自的优缺点:
使用空标签清除浮动clear:both(理论上能清楚任何标签,,,增加无意义的标签)
使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)
是用afert伪元素清除浮动(用于非IE浏览器)
9.浏览器内核
1、Trident内核:IE最先开发或使用的,也称IE内核,360浏览器使用的也是IE内核;
2、Webkit内核:谷歌chrome浏览器最先开发或使用,也叫谷歌内核,枫树浏览器、太阳花使用的也是谷歌内核;
3、Gecko内核:Netscape6开始采用的内核,后来的MozillaFireFox(火狐浏览器)也采用了该内核,K-Meleon浏览器也是使用这种内核;
4、Presto内核:目前只有Opera浏览器采用该内核
㈣ Web前端面试的常见面试题汇总
今天小编要跟大家分享的文章是关于参加Web前端面试的常见面试题汇总。准备参加Web前端面试的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助。1.渐进增强与优雅降级
渐进增强
并不是一种技术,而是一种设计思想。各个浏览器的渲染能力各不相同,要做一个每个人都能看到的网页、感受到的体验都一致的网站几乎不可能。但还是得网站的可访问性,保证用户在任何环境下都能正常访问网页得核心内容或能使用基本功能(避免网页打不开、排版错误等),并为他们提供当前条件下最好的体验,这就是渐进增强得核心思想。
优雅降级也是一种设计思想,为了保证在高版本浏览器中提供最好的体验,碰到低版本浏览器再降级进行兼容处理,使其能正常浏览。
这两种思想的区别在于:
1.渐进增强是向上兼容,优雅降级是向下兼容;
2.渐进增强是从简单到复杂,优雅降级是从复杂到简单;
3.渐进增强关注的是内容(保证核心内容),优雅降级关注的是浏览体验(为了兼容低版本浏览器)
2.DOCTYPE
作用
DTD(DocumentTypeDefinition,文档类型定义)是一系列的语法规则,用来定义XML或(X)HTML
的文档类型。浏览器会使用它来判断文档类型,决定何种协议来解析,以及切换浏览模式。
DOCTYPE是用来声明文档类型和DTD
规范的,一个主要的用途便是文件的合法性验证。如果文档代码不合法,那么浏览器解析时便会出现一些差错。
HTML5的文档类型声明:
HTML4.01Strict(HTML4.01严格模式)的DTD包含所有HTML
元素和属性,但不包括展示性的和弃用的元素(如font),它的文档类型声明:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
标准模式与怪异模式
怪异模式(Quirks
Mode)用于模拟旧浏览器的行为。早期的网站并不会遵循完整的规范,随着浏览器支持越来越多的规范,在那些旧的浏览器中开发的页面在显示时会被破坏。为了向后兼容,浏览器发明了怪异模式,一行错误或无效的
DOCTYPE都会触发怪异模式。
浏览器使用文件开头的DOCTYPE来决定用怪异模式处理或标准模式处理。DOCTYPE
可以确保不同浏览器以相同的方式解析文档,以及执行相同的渲染模式。
怪异模式与标准模式的主要区别:
1.怪异模式的宽度和高度会包含padding和border。标准模式不包含,标准模式下可以通过设置box-sizing:
border-box将标准盒模型转化成怪异模式下的盒模型。
2.怪异模式下,当内容超出容器高度时,会将容器拉伸,而不是溢出。
3.怪异模式下,在表格中的字体样式(如font-size)不会继承。
4.怪异模式下颜色值必须使用十六进制标记法。
3.语义化
HTML5
中的语义化就是让元素、属性或属性值有含义,更准确地标记特定类型的内容。对元素语义化的目的是为了让元素的语义和呈现分离,元素只负责文档内容的结构与含义,而CSS
样式控制内容的呈现,像元素,没有语义但却能将字体变粗,这类元素违背了语义化的目的,将会被废弃。
优点
·使得HTML文档结构清晰、布局合理、主体突出、可读性更强。
·有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重。
·方便其他设备解析,如盲人阅读器根据语义渲染网页。
·有利于开发和维护,语义化更具可读性,代码更好维护,与CSS3关系更和谐。
语义化标签
·
·footer内容的页脚,通常包含该章节作者、版权数据或者与文档相关的链接等信息;
·article
文档、页面、应用或网站中的独立结构,是可独立分配的、可复用的结构,如在发布中,它可能是论坛帖子、杂志或新闻文章、博客、用户提交的评论、交互式组件,或者其他独立的内容项目;
·nav描述一个含有多个超链接的区域,该区域包含跳转到其他页面或页面内部其他部分的链接列表;
·section表示文档中的一个区域(或节),比如,内容中的一个专题组;
·main定义文档的主要内容,该内容在文档中应当是独一无二的,不包含任何在文档中重复的内容,比如侧边栏,导航栏链接,版权信息,网站
logo,搜索框(搜索框作为文档的主要内容);
·aside
表示一个和其余页面内容几乎无关的部分,被认为是独立于该内容的一部分且可以被单独的拆分出来而不会影响整体。通常表现为侧边栏或嵌入内容。
4.超链接伪类
:link、:visited、:active和:hover的声明顺序是怎样的?
:link表示未访问的链接状态;
:visited表示已访问状态;:active表示激活状态(鼠标按下);:hover表示悬停状态。
推荐顺序是LVHA,即:link:visited:hover:active。理由如下:
·当鼠标悬停在未访问的链接上时,:link和:hover都会命中,如果:hover在:link
之前声明,那么(:hover)就会被覆盖;
·当鼠标悬停在已访问的连接上时,:visited和:hover都会命中,如果:hover在:visited
之前声明,那么(:hover)就会被覆盖;
·当鼠标单击链接时,:active和:hover都会命中,我们大多是想让:hover只在悬停时展示样式,按下鼠标时使用:active
样式,因此:active在:hover之后声明;
·综上,:hover应在:link和:visited之后,在:active之前,因此active在最后。而:link和
:visited两者的顺序无所谓,互不影响。
5.CSS常见的长度单位
CSS中除了px长度单位之外,还有下面几个长度单位:
·pc六分之一英寸,1pc=12pt=1/6*1in=16px;
·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈1.33px;
·in一英寸,1in=2.54cm=96px;
·ex在含有“X”字母的字体中,它是该字体的小写字母的高度。对于很多字体来说,1ex≈0.5em;
·em1em等于父级元素的字体大小,2em就是父级元素字体大小的二倍;
·rem当用在根元素()的font-size上面时,它代表了它的初始值;
·ch代表元素所用字体font中“0”这一字形的宽度;
·vh1vh相当于视口高度的1%,100vh就是视口的高度;
·vw1vw相当于视口宽度的1%,100vw就是视口的宽度;
·vmax视口高度vw和宽度vh两者中的最小值
·vmin视口高度vw和宽度vh两种中的最大值;
·%相对于父级元素的大小来确定;
参考:CSS
CSSpercentage[2]
6.事件对象
冒泡与捕获
事件冒泡与捕获是事件处理的两种机制,主要描述当在一个元素上有两个相同类型的事件处理器被激活会发生什么。
在点击子元素时,浏览器运行了两种不同的阶段:捕获阶段和冒泡阶段。捕获阶段的行为:
·浏览器检查元素的最外层祖先,是否在捕获阶段中注册了一个onclick事件处理程序,如果是,则运行它;
·
然后,它移动到中单击元素的下一个祖先元素,并执行相同的操作,然后是单击元素再下一个祖先元素,依此类推,直到到达实际点击的元素;
而冒泡与捕获恰恰相反:
·浏览器检查实际点击的元素是否在冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行它;
·然后它移动到下一个直接的祖先元素,并做同样的事情,然后是下一个,等等,直到它到达元素;
而现代浏览器在默认情况下,所有事件处理程序都在冒泡阶段进行注册。因此上面代码在点击子元素时会先执行子元素绑定的事件,然后向上冒泡,触发父元素绑定的事件。
addEventListener函数的第三个参数是个布尔值。含义:
·当布尔值是false时(这也是默认值),表示向上冒泡触发事件;
·当布尔值是true时,表示向下捕获触发事件;
不能冒泡的事件
有些事件是不会冒泡的。比如:
·blur元素失去焦点时触发,focusout事件也是失去焦点时触发,但可以冒泡;
·focus元素获取焦点时触发;
·mouseenter鼠标移动到元素上时会触发该事件,与之对应的是mouseover事件,但会冒泡;
·mouseleave鼠标离开元素时触发,与之对应的是mouseout,但会冒泡;
事件冒泡可以让我们利用事件委托,尤其是处理大量子元素时,如果给每个子元素都绑定事件,这是不优雅的,可以将事件绑定到父元素上,并让子节点上发生的事件冒泡到父节点上,利用
e.target属性可以获取到当前触发事件的子元素。
事件对象中的方法
·stopPropagation()阻止事件冒泡,当设置后,点击该元素时父元素绑定的事件就不会再触发;
·preventDefault()阻止默认事件的发生;
·stopImmediatePropagation()它用来阻止监听同一事件的其他事件监听器被调用以及阻止事件冒泡,比如给同一个div
元素绑定多个click事件(使用addEventListener方法可以注册多个),当在第二个事件函数中调用
stopImmediatePropagation方法时,点击div元素时,后面注册的click将不会被触发,而且还会阻止事件冒泡;
比如下面的例子,给p绑定多个click事件,在第二个事件函数中调用stopImmediatePropagation,第三个click
事件就不会触发,因为也阻止了冒泡,因此父元素的click事件也不会触发。
paragraph
㈤ web前端经典面试题
为大家带来一些web前端的面试题,希望可以帮助到大家啊。
1.css3有哪些新特性?
选择器、圆角、动画、多重背景、背景的宽度高度flex布局响应式布局边框阴影文本阴影
2.响应式布局怎么理解的,响应式布局是通过什么实现?
根据不同的屏幕加载不同的css样式
1).移动端适配
2).一套代码适配pc端移动端多个
3.js创建对象有哪几种方式?
1).自面量
2).newObject
3).构造函数
4.es6有哪些新特性?
1).letconst
2).模板字符串
3).方法的简写属性的简写
4).三点运算符
5).解构赋值
6).箭头函数
7).setmap
8).class类
9).模块化
5.箭头函数和普通的方法有什么区别?
1).箭头函数省略了function
2).箭头函数里面的this指向上下文(可以改变this指向)
6.gulp可以干什么
gulp自动化构建工具。
压缩代码合并代码压缩图片自动处理前缀创建web服务处理sass
7.清除浮动有哪些方法。
1).浮动元素的父元素overflow:hiddenoverflow:auto
2).浮动元素的最后面加一个空div给他clear:both
3).after伪类清除浮动
.clearfix:after{
content:"";
dislpay:block;
height:0px;
clear:both;
}
4)、给父元素设置高度。
8.行内元素块元素的区别?
1)块元素默认独占一行,行内元素默认情况不独占一行,行内元素的的宽度就是内容的宽度
2)默认情况块元素可以设置宽度高度默认情况行内元素不可以设置宽度高度
3)默认可以margin上下左右,行内默认只能margin左右不能上下。
9.网站加载速度优化?
1).图片不失真尽量小
2).多个背景图片合并
3).代码压缩代码合并
4).js写到页面最底部
5).懒加载
6).不要有冗余代码
7).服务器带宽款一些
8).服务器固态硬盘
9).开启缓存
10.以前写代码什么情况会成出现乱码怎么解决?
解决乱码文件保存的编码和设置的编码必须保持一致
11.以前如何测试调试移动端页面
1).首先在浏览器自带的调试工具模拟器里面调试
2).真机的内置浏览器调试
3).真机上面的UC里面调试
4).真机上的微信里面调试。
㈥ 你遇到的前端面试题都有什么
大家好,我是王我。
随着春节的结束,各个行业也普遍开始了上班的节奏, 不过本人17号才上班。为什么?因为长得帅的都上班比较晚。 当然,每到新年结束,又迎来了一批招聘者与面试者,我来说说作为一年工作经验应该知道的面试题。
HTML篇
1.doctype是什么?有哪些类型?
2.input有哪些新类型?简要说明其8用法。
3.HTML5有哪些新特性,移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
4.bootstrap响应式的原理是什么?
5.多移动终端页面适配是如何实现的?
CSS篇
1.如何实现两列布局,左边自适应,右边固定宽度?
2.用CSS画一个三角形
3.CSS实现字体大写
4.display有哪些常用的属性值?分别是什么意思?
5.position为absolute,relative,fixed的定点位置
6.用三种方法清除浮动
7.请介绍一下margin塌陷问题
js篇
1.什么是事件冒泡和捕获?如何阻止事件冒泡?(分别用原生和jquery实现)
2.js创建对象,至少使用三种方法
3.简述一下事件穿透以及解决办法
4.用三种方式判断变量类型是否是数组
5.如何实现对象的拷贝?
6.什么是闭包?闭包的优缺点。
7.简述一下ajax请求的过程。
8.简述一下new一个人构造函数的人过程。
9.为什么会有跨域?是怎么解决跨域问题的?简述一下原理。
10.js原始数据类型有哪些?
11.学一个函数,判断一个变量是否是字符串
12.typeof有哪些结果?
13.剪头函数和普通函数有什么区别?
14.请用三种方法实现数组去重
15.href和src有什么区别?
jquery篇
1.attr()和prop()有什么区别?
2.on和bind有什么区别?js动态添加的dom元素是通过on还是bind?
3.touch和click有什么区别?
4.window.onload和jquery的ready有什么区别?
vue篇
1.简述一下vue的生命周期及其特点
2.vue双向绑定的原理是什么?
3.vue的特点有哪些?和jquery有什么区别?
4.父子组件之间传递数据的方法
5.子组件如何共享数据?
6.一般有什么工具进行数据交互?
7.webpack的原理是什么?
8.简述一下$nextTick的用法
浏览器篇
1.cookie、sessionStorage、localStorage的区别是什么?
2.有用过浏览器缓存吗?简述一下基本的缓存机制
网络篇
1.http和https之间的区别
2.从服务器的安全考虑,是使用get请求还是post请求?
3.URL请求的过程有哪些?
项目经验篇
1.项目中遇到的最大挑战以及解决办法
2.常见的网页优化有哪些?
作为一个面试一年以内工作经验的前端程序员来说,以上的问题能够倒答如流月薪6k应该不成问题啦。这些面试题也是我在很多面试中感觉经常被问到的题目。
希望大家年后找工作能够顺顺利利, 千万不要跟我一样哦,只有帅气就一无所有了。
大家好,我是王我,中国最帅的前端程序员。
前几次都是各种培训公司,各种忽悠就不提了,说说后面4次面试的经历。
第一次是面一个小公司,不过他们好像没有厉害的前端,来面我的是个后端,一来没有问我关于js的知识,直接问我以前做过什么,有没有经验,我本人不会吹牛,简历也没怎么包装,就是自己把自学的知识和做的几个小demo弄在上面,也用github挂在页面上了,不过他根本不点开看,也不问,问我会不会vue,我当时对框架还不了解,他就说他们需要能直接上手开始写的,所以我第一个就直接挂了。
第二次面试是一个国企,这个问了很多问题,都很基础,js数据类型,数组操作,事件,大概就是高程的前面几章看看就差不多都能答到,然后因为他们主要用jq,所以问了很多jq的操作,关于节点的,动画的,我看锋利的jq大概看了3遍,也练过多次,所以我答的很熟。然后问了些布局方面的,bootstrap我了解过,又看过css3,所以这方面也没啥问题,最后在现场做了个题目,主要就是布局然后通过ajax呈现数据。后面听介绍我面试的说面试官比较满意,说我jq很熟,一面就过了。可惜后面电话面试不知怎么回事可能表现的不够自信,虽然没问技术,但是我没啥自信,把没项目经验什么的也不知怎么就一五一十交代了,估计因为这个挂掉了。
第三次没问问题,直接就是一套题开做,我在那做了一个多小时。题目就是按照要求一步一步做一个页面出来,我也搞忘了我当时卡在哪个地方了,坐在那得时候就是做不出来,没有设计图,要根据他的描述自己找个设计图然后做,我第一次遇到这个有点懵,虽然当时没做出来,不过回来我自己花了几个小时把它做了。所以这个也是凉了。
第四个问的比较多,数据类型,数组操作,跨域,ajax,闭包,原型链,继承,深拷贝,浅拷贝,模块amd cmd,基本都是问的js。然后问了html5的新特性 css3 的新特性,遇到过什么浏览器的兼容性问题,怎么解决的,以后想往什么方面发展。这个时候我已经会点vue了,照着做了个小demo,不过后来知道公司用的angularjs,面试官也没看我做的,问也没问。。以前听网上说要带上自己的项目去面试感觉没起多大效果。
最后总结下如果面的比较初级的岗位,应该主要问js,原型链,继承,闭包,深浅拷贝,ajax,跨域,然后js的基础知识,对了还有apply和call也问了,html5的新特性了解下就行。主要就是看你js掌握的程度,如果稍微要求高一点的,暂时还没面过,等以后面过在来回答
1. cookie session 的用途和区别,以及有效期
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
2. vue的数据绑定原理,mvvm与mvc的区别
MVVM:
m:model数据模型层 v:view视图层 vm:ViewModel
vue中采用的是mvvm模式,这是从mvc衍生过来的
MVVM让视图与viewmodel直接的关系特别的紧密,就是为了解决mvc反馈不及时的问题
图片说明一下:
说到MVVM就要说一下双向绑定和数据劫持的原理,
MVC:
m:model数据模型层 v:view视图层 c:controller控制器
原理: c层需要控制model层的数据在view层进行显示
MVC两种方式,图片说明:
总结:
mvvm与mvc最大的区别:
MVVM实现了view与model的自动同步,也就是model属性改变的时候, 我们不需要再自己手动操作dom元素去改变view的显示,而是改变属性后该属性对应的view层会自动改变。
不懂得可以复制链接查看:
https://www.pianshen.com/article/3716256399/
3. storage 的区别 sessionStorage localStorage
localStorage 的生命周期是永久性的。假若使用localStorage存储数据,即使关闭浏览器,也不会让数据消失,除非主动的去删除数据,使用的方法如上所示。localStorage有length属性
sessionStorage 的生命周期是在浏览器关闭前。也就是说,在整个浏览器未关闭前,其数据一直都是存在的。sessionStorage也有length属性,其基本的判断和使用方法和localStorage的使用是一致的
有一个文本框 通过v-bind绑定了value属性 值为myname 是我们在vue实例中定义的属性
传统我们获取文本框值方法 可能通过getElementById找到文本框 然后获取其value属性
但是vue中直接通过v-bind绑定了value属性 所以不需要像之前那样获取值
所以在后面的按钮中获取name值 直接获取vue实例对象data里面的myname属性即可
【数据为尊 ----数据映射到浏览器 如果数据v-model后修改(肯定input)然后到数据在有数据映射到浏览器页面 ----映射关系统称】
缓存路由组件
使用的是vue的一个组件,参考vue的官方文档
使用这个东西可以保证我们在切换组件的时候,原来显示的组件不被销毁
-----【保障组件的数据不会被切换路由而销毁数据】
Home是对应的组件对象的名字,不是路由的名字
6.多维数组拍平
数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组
一红六种方法吧……
了解的请看: https://www.cnblogs.com/guan-shan/p/10165737.html
7.跨域的原因 解决方案
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。
这样就可以说同源策略----协议---端口---域名
原生的src和href可以解决跨域
代理可以解决
请求头也可以携带浏览器提示的也可以解决
一般都是后端解决跨域问题
【别的需要了解看下方链接】
https://blog.csdn.net/qq_41604383/article/details/100770100
8.uniApp兼容问题§ 如果你使用cli创建项目(即项目根目录是package.json),不管用什么ide,即便是用HBuilderX,切记cli项目的编译器是在项目下的,HBuilderX不管怎么升级都不会影响编译器版本。你需要手动npm update来升级编译器。以及如果你想要安装less、scss等预编译器,也需要自己npm安装在项目下,而不是在HBuilderX的插件管理里安装。
§ 如果你使用离线打包,请注意HBuilderX升级后,真机运行基座和云打包对应引擎跟随HBuilderX升级,而你的sdk需要手动升级。sdk的版本升级一般滞后HBuilderX正式版升级一两天。
§ 如果你使用自定义基座,之前制作的自定义基座是不会跟随HBuilderX升级的,升级HBuilderX后你应该重新制作新版自定义基座。
§ 如果你使用wgt升级,新版HBuilderX编译的wgt,运行到之前的runtime上,一定要先测试好,看有没有兼容性问题。如果有问题,就不要wgt升级,整包升级。
§ 考虑到向下兼容,uni-app编译器在升级为新的自定义组件模式后,同时保留了对老编译模式的向下兼容。
在HBuilderX alpha版中,App端一定会使用新编译器,不理会manifest配置。
在HBuilderX 正式版中,新创建的项目会使用新编译器,老项目不会强制使用,而是开发者自己在manifest里配置开启。
§ 如果你使用其他ide开发uni-app,会经常因为拼错单词而运行失败,因为经过webpack编译一道,很多错误反应的不够直观,排错时间很长,不如从开始就依赖有良好提示的HBuilderX,避免敲错单词。
§ 云打包的引擎版本说明
HBuilderX Alpha,只有1套云打包机,不管你的HBuilderX alpha版本多少,对应的打包机一定是最新的alpha版的客户端引擎。
HBuilderX正式版,有2套打包机,一个是最新正式版,一个是次新正式版。
中间的紧急更新版本没有独立打包机。
举个例子:
HBuilderX 有1.8.0、1.8.1、1.8.2、1.9.0、1.9.1这几个正式版。
那么当前可用的打包机有1.9.1和1.8.2这2台。(即每个大版本的最后一个版本)
除了这2个HBuilderX版本外,其他版本的云打包都指向最新的1.9.1版对应的打包机。(即只保留2个大版本的云打包机)
【详情请看】
https://ask.dcloud.net.cn/article/35845
一、HTML
HTML书写规范
H5新增标签
HTML渲染过程
二、CSS
css盒子模型概念
css弹性布局概念
三、JavaScript
事件模型
DOM2级事件模型
闭包
原型链
四、移动Web开发
常见的布局方案
移动端前端常见的触摸相关事件touch、tap、swipe等整理
移动端前端手势事件
移动端页面渲染优化
GPU渲染
GPU核心渲染过程
五、调试
常用的调试工具
Chrome控制台调试js使用
移动端测试
六、HTTP网络知识
常见的HTTP状态码
不同请求类型的区别
WEB缓存方案
——————————
牛客网(www.nowcoder.com)
- 专业IT笔试面试备考平台
- 最全C++JAVA前端等互联网技术求职题库
- 全面提升IT编程能力
- 程序员交友圣地
分享了一些Web前端的面试题,限时一小时,你看看自己能够答出多少道!
放心,这些面试题都是一些非常基础的知识,只要你在平时认真听课、学习了,那么这些面试题肯定不会难道你。
建议:虽然没有人监督你,但还是希望你不要去寻找答案,脱离网络,拿起纸笔,你试一下自己究竟能够答出个什么水平!有没有真本领?答案尽在这些面试题里!那么,你准备好了吗?OK!计时开始!
一、HTML常见题目01、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
02、HTML5为什么只需要写?
03、行内元素有哪些?块级元素有哪些?空(void)元素有那些?
04、页面导入样式时,使用link和@import有什么区别?
05、介绍一下你对浏览器内核的理解?
06、常见的浏览器内核有哪些?
07、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?
08、如何区分HTML和HTML5?
09、简述一下你对HTML语义化的理解?
10、HTML5的离线储存怎么使用,工作原理能不能解释一下?
二、CSS类的题目01、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?
02、CSS选择符有哪些?哪些属性可以继承?
03、CSS优先级算法如何计算?
04、CSS3新增伪类有那些?
05、如何居中p?如何居中一个浮动元素?如何让绝对定位的p居中?
06、display有哪些值?说明他们的作用。
07、position的值relative和absolute定位原点是?
08、CSS3有哪些新特性?
09、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10、用纯CSS创建一个三角形的原理是什么?
三、Java类的题目
01、介绍Java的基本数据类型。
02、说说写Java的基本规范?
03、Java原型,原型链?有什么特点?
04、Java有几种类型的值?(堆:原始数据类型和栈:引用数据类型),你能画一下他们的内存图吗?
05、Java如何实现继承?
06、Java创建对象的几种方式?
07、Java作用链域?
08、谈谈This对象的理解。
09、eval是做什么的?
10、什么是window对象?什么是document对象?
OK,一小时到了,这个时间可不算短了,那么这些面试题你答出了几道呢?你写的答案正确了吗?现在你可以去翻看答案了。
如果你答出了绝大多数的或者是全部的题,并且答案也正确了,那么恭喜你……
你这时心里是不是有点小窃喜,认为自己有能力拿高薪了?虽然我也很想这么告诉你,但事实上这只能表明你的基础扎实,毕竟这只是一些非常基础的面试题。骚年~继续努力吧!
如果你只答出了小部分或者答出了大部分题但答案不正确,那么我只想说:“骚年,你的水平还差的远呢。”连这么基础的题你都打不出来,还想拿高薪?回去再练一段时间吧!
扎实的基础是你拿高薪的重要武器,如果你连基础都不扎实,那么想要攻克“高薪”这个厚实的堡垒,那只是痴人说梦罢了。
1.前端框架类问题,问你会不会用vue react啊
2.语言类,问你一些JavaScript语言的问题
3.项目经验,让你讲讲做过的项目,遇到的问题和解决之道
㈦ WEB前端面试题
第二章 面试题基础篇
2.1 HTML面试题
面试题:行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
面试题:页面导入样式时,使用link和@import有什么区别?
面试题:title与h1的区别、b与strong的区别、i与em的区别?
面试题:img标签的title和alt有什么区别?
面试题:png、jpg、gif 这些图片格式解释一下,分别什么时候用?
2.2 CSS面试题
面试题:css背景纹路
面试题:介绍一下CSS的盒子模型
面试题:CSS选择符有哪些?哪些属性可以继承?
面试题:CSS优先级算法如何计算?
面试题:用CSS画一个三角形
面试题:一个盒子不给宽度和高度如何水平垂直居中?
面试题:display有哪些值?说明他们的作用。
面试题:对BFC规范(块级格式化上下文:block formatting context)的理解?
面试题:清除浮动有哪些方式?
面试题:在网页中的应该使用奇数还是偶数的字体?为什么呢?
面试题:写一个左中右布局占满屏幕,其中左、右俩块固定宽200,中间自适应宽,要求先加载中间块,请写出结构及样式。
面试题:什么是CSS reset?
面试题:css sprite是什么,有什么优缺点
面试题:display: none;与visibility: hidden;的区别
面试题:position有哪些值?有什么作用? 【特别多公司问】
面试题:line-height和height有什么区别?
面试题:opacity 和 rgba区别
2.3 JavaScript基础面试题
面试题:延迟加载JS有哪些方式?
面试题:JS数据类型有哪些?
面试题:null和undefined的区别
面试题:JS数据类型考题
面试题:==和===有什么不同
面试题:JS微任务和宏任务
面试题:JS作用域考题
面试题:JS对象考题
面试题:JS作用域+this指向+原型 考题
面试题:JS判断变量是不是数组,你能写出哪些方法?
面试题:slice是干嘛的、splice是否会改变原数组
面试题:JS数组去重
面试题:找出多维数组最大值
面试题:给字符串新增方法实现功能
面试题:找出字符串出现最多次数的字符以及次数
2.4 真正移动端 —— H5/C3面试题
面试题:什么是语义化标签
面试题:::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
面试题:如何关闭iOS键盘首字母自动大写
面试题:怎么让Chrome支持小于12px 的文字?
面试题:rem和em有什么样区别
面试题:ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉
面试题:webkit表单输入框placeholder的颜色值能改变吗?
面试题:禁止ios 长按时不触发系统的菜单,禁止ios&android长按时下载图片
面试题:禁止ios和android用户选中文字
面试题:自适应 [淘宝无线适配]
面试题:响应式
第三章 面试题进阶篇
3.1 JavaScript进阶面试题
面试题:new操作符具体做了什么
面试题:闭包 【必须会】
面试题:原型链 【必须会】
面试题: JS继承有哪些方式
面试题:说一下call、apply、bind区别
面试题:sort背后原理是什么?
面试题:深拷贝和浅拷贝
面试题:localstorage、sessionstorage、cookie的区别
3.2 ES6面试题
面试题:var、let、const区别
面试题:作用域考题
面试题:将下列对象进行合并
面试题:箭头函数和普通函数有什么区别?
面试题:Promise有几种状态
面试题:find和filter的区别 【大厂】
面试题:some和every的区别 【大厂】
3.3 webpack面试题
面试题:webpack插件
3.4 Git面试题
面试题:git常用命令
面试题:解决冲突
面试题:GitFlow
第四章 面试题框架篇
4.1 区分初中高级的 —— Vue面试题
面试题:Vue2.x 生命周期有哪些?
1.系统自带八个
2.当一旦进入到某个组件会执行哪些生命周期
3.$el和$data在哪个阶段有
4.如果使用keep-alive会多俩个生命周期
5.如果加入keep-alive第一次进入组件会执行哪些生命周期
6.如果加入keep-alive第二次或者第N进入该组件会执行哪些生命周期
面试题:谈谈你对keep-alive的了解
面试题:v-if和v-show区别
面试题:v-if和v-for优先级 2.x
面试题:ref是什么?
面试题:nextTick是什么?
面试题:Vue中如何做样式穿透
面试题:scoped原理
面试题:Vuex是单向数据流还是双向数据流?
面试题:讲一下MVVM
面试题:双向绑定原理
面试题:什么是虚拟DOM
面试题:key是干什么?
面试题:diff算法
面试题:Vue组件传值
面试题:props和data优先级谁高?
面试题:computed、methods、watch有什么区别?
面试题:Vuex
面试题:Vue路由
面试题:Vue项目打包后出现空白页
4.2 微信小程序面试题
面试题:如何自定义头部?
面试题:如何自定义底部?
4.3 uni-app面试题
面试题:生命周期
面试题:条件编译
第五章 面试题性能优化篇
㈧ 一份超全的Web前端工程师面试题!收藏~
今天小编为大家准备了一份超全的Web前端工程师面试题,准备换工作参加Web前端工程师面试的小伙伴们快来和小编一起看一看这些题目吧,希望能够对你的面试有所帮助!
一、HTML
§Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
§HTML5为什么只需要写?
§行内元素有哪些?块级元素有哪些?空(void)元素有那些?
§页面导入样式时,使用link和@import有什么区别?
§介绍一下你对浏览器内核的理解?
§常见的浏览器内核有哪些?
§html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
§简述一下你对HTML语义化的理解?
§HTML5的离线储存怎么使用,工作原理能不能解释一下?
§浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
§请描述一下cookies,sessionStorage和localStorage的区别?
§iframe有那些缺点?
§Label的作用是什么?是怎么用的?(加for或包裹)
§HTML5的form如何关闭自动完成功能?
§如何实现浏览器内多个标签页之间的通信?(阿里)
§webSocket如何兼容低浏览器?(阿里)
§页面可见性(PageVisibility)API可以有哪些用途?
§如何在页面上实现一个圆形的可点击区域?
§实现不使用border画出1px高的线,在不同浏览器的Quirksmode和CSSCompat模式下都能保持同一效果。
§网页验证码是干嘛的,是为了解决什么安全问题?
§tite与h1的区别、b与strong的区别、i与em的区别?
二、CSS
§介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?
§CSS选择符有哪些?哪些属性可以继承?
§CSS优先级算法如何计算?
§CSS3新增伪类有那些?
§如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
§display有哪些值?说明他们的作用。
§position的值relative和absolute定位原点是?
§CSS3有哪些新特性?
§请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
§用纯CSS创建一个三角形的原理是什么?
§一个满屏品字布局如何设计?
§常见兼容性问题?
§li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
§经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧?
§为什么要初始化CSS样式。
§absolute的containingblock计算方式跟正常流有什么不同?
§CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
§position跟display、margincollapse、overflow、float这些特性相互叠加后会怎么样?
§对BFC规范(块级格式化上下文:blockformattingcontext)的理解?
§CSS权重优先级是如何计算的?
§请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式
§移动端的布局用过媒体查询吗?
§使用CSS预处理器吗?喜欢那个?
§CSS优化、提高性能的方法有哪些?
§浏览器是怎样解析CSS选择器的?
§在网页中的应该使用奇数还是偶数的字体?为什么呢?
§margin和padding分别适合什么场景使用?
§抽离样式模块怎么写,说出思路,有无实践经验?[阿里航旅的面试题]
§元素竖向的百分比设定是相对于容器的高度吗?
§全屏滚动的原理是什么?用到了CSS的那些属性?
§什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
§视差滚动效果,如何给每页做不同的动画?(回到顶部,向下滑动要再次出现,和只出现一次分别怎么做?)
§::before和:after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用。
§如何修改chrome记住密码后自动填充表单的黄色背景?
§你对line-height是如何理解的?
§设置元素浮动后,该元素的display值是多少?(自动变成display:block)
§怎么让Chrome支持小于12px的文字?
§让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing:antialiased;)
§font-style属性可以让它赋值为“oblique”oblique是什么意思?
§position:fixed;在android下无效怎么处理?
§如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
§display:inline-block什么时候会显示间隙?(携程)
§overflow:scroll时不能平滑滚动的问题怎么处理?
§有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度。
§png、jpg、gif这些图片格式解释一下,分别什么时候用。有没有了解过webp?
§什么是Cookie隔离?(或者说:请求资源的时候不要让它带cookie怎么做)
§style标签写在body后与body前有什么区别?
三、JavaScript
§介绍JavaScript的基本数据类型。
§说说写JavaScript的基本规范?
§JavaScript原型,原型链?有什么特点?
§JavaScript有几种类型的值?(堆:原始数据类型和栈:引用数据类型),你能画一下他们的内存图吗?
§Javascript如何实现继承?
§Javascript创建对象的几种方式?
§Javascript作用链域?
§谈谈This对象的理解。
§eval是做什么的?
§什么是window对象?什么是document对象?
§null,undefined的区别?
§写一个通用的事件侦听器函数(机试题)。
§[“1”,“2”,“3”].map(parseInt)答案是多少?
§关于事件,IE与火狐的事件机制有什么区别?如何阻止冒泡?
§什么是闭包(closure),为什么要用它?
§javascript代码中的”usestrict”;是什么意思?使用它区别是什么?
§如何判断一个对象是否属于某个类?
§new操作符具体干了什么呢?
§用原生JavaScript的实现过什么功能吗?
§Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
§对JSON的了解?
§[].forEach.call($$("*"),function(a){a.style.outline="1pxsolid
#"+(~~(Math.random()*(1<<24))).toString(16)})能解释一下这段代码的意思吗?
§js延迟加载的方式有哪些?
§Ajax是什么?如何创建一个Ajax?
§同步和异步的区别?
§如何解决跨域问题?
§页面编码和被请求的资源编码如果不一致如何处理?
§模块化开发怎么做?
§AMD(Moles/Asynchronous-Definition)、CMD(CommonMole
Definition)规范区别?
§requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何缓存的?)
§让你自己设计实现一个requireJS,你会怎么做?
§谈一谈你对ECMAScript6的了解?
§ECMAScript6怎么写class么,为什么会出现class这种东西?
§异步加载的方式有哪些?
§documen.write和innerHTML的区别?
§DOM操作——怎样添加、移除、移动、复制、创建和查找节点?
§.call()和.apply()的含义和区别?
§数组和对象有哪些原生方法,列举一下?
§JS怎么实现一个类。怎么实例化这个类
§JavaScript中的作用域与变量声明提升?
§如何编写高性能的Javascript?
§那些操作会造成内存泄漏?
§JQuery的源码看过吗?能不能简单概况一下它的实现原理?
§jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
§jquery中如何将数组转化为json字符串,然后再转化回来?
§jQuery的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
§jquery.extend与jquery.fn.extend的区别?
§jQuery的队列是如何实现的?队列可以用在哪些地方?
§谈一下Jquery中的bind(),live(),delegate(),on()的区别?
§JQuery一个对象可以同时绑定多个事件,这是如何实现的?
§是否知道自定义事件。jQuery里的fire函数是什么意思,什么时候用?
§jQuery是通过哪个方法和Sizzle选择器结合的?(jQuery.fn.find()进入Sizzle)
§针对jQuery性能的优化方法?
§Jquery与jQueryUI有啥区别?
§JQuery的源码看过吗?能不能简单说一下它的实现原理?
§jquery中如何将数组转化为json字符串,然后再转化回来?
§jQuery和Zepto的区别?各自的使用场景?
§针对jQuery的优化方法?
§Zepto的点透问题如何解决?
§jQueryUI如何自定义组件?
§需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案?
§如何判断当前脚本运行在浏览器还是node环境中?(阿里)
§移动端最小触控区域是多大?
§jQuery的slideUp动画,如果目标元素是被外部事件驱动,当鼠标快速地连续触发外部元素事件,
动画会滞后的反复执行,该如何处理呢?
§把Script标签放在页面的最底部的body封闭之前和封闭之后有什么区别?浏览器会如何解析它们?
§移动端的点击事件的有延迟,时间是多久,为什么会有?怎么解决这个延时?(click有300ms
延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
§知道各种JS框架(Angular,Backbone,Ember,React,Meteor,Knockout)么?
能讲出他们各自的优点和缺点么?
§Underscore对哪些JS原生对象进行了扩展以及提供了哪些好用的函数方法?
§解释JavaScript中的作用域与变量声明提升?
§那些操作会造成内存泄漏?
§JQuery一个对象可以同时绑定多个事件,这是如何实现的?
§Node.js的适用场景?
§(如果会用node)知道route,middleware,cluster,nodemon,pm2,server-side
rendering么?
§解释一下Backbone的MVC实现方式?
§什么是“前端路由”?什么时候适合使用“前端路由”?“前端路由”有哪些优点和缺点?
§知道什么是webkit么?知道怎么用浏览器的各种工具来调试和debug代码么?
§如何测试前端代码么?知道BDD,TDD,UnitTest么?知道怎么测试你的前端工程么(mocha,sinon,jasmin,
qUnit..)?
§前端templating(Mustache,underscore,handlebars)是干嘛的,怎么用?
§简述一下Handlebars的基本用法?
§简述一下Handlerbars的对模板的基本处理流程,如何编译的?如何缓存的?
§用js实现千位分隔符?(来源:前端农民工,提示:正则+replace)
§检测浏览器版本版本有哪些方式?
§我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获。
四、其他问题
§原来公司工作流程是怎么样的,如何与其他人协作的?如何夸部门合作的?
§你遇到过比较难的技术问题是?你是如何解决的?
§设计模式知道什么是singleton,factory,strategy,decrator么?
§常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
§页面重构怎么操作?
§列举IE与其他浏览器不一样的特性?
§99%的网站都需要被重构是那本书上写的?
§什么叫优雅降级和渐进增强?
§是否了解公钥加密和私钥加密。
§WEB应用从服务器主动推送Data到客户端有那些方式?
§对Node的优点和缺点提出了自己的看法?
§你有用过哪些前端性能优化的方法?
§http状态码有那些?分别代表是什么意思?
§一个页面从输入URL到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)
§部分地区用户反应网站很卡,请问有哪些可能性的原因,以及解决方法?
§从打开app到刷新出内容,整个过程中都发生了什么,如果感觉慢,怎么定位问题,怎么解决?
§除了前端以外还了解什么其它技术么?你最最厉害的技能是什么?
§你用的得心应手用的熟练地编辑器&开发环境是什么样子?
§对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
§你怎么看待WebApp、hybridApp、NativeApp?
§你移动端前端开发的理解?(和Web前端开发的主要区别是什么?)
§你对加班的看法?
§平时如何管理你的项目?
§说说最近最流行的一些东西吧?常去哪些网站?
§如何设计突发大规模并发架构?
§说说最近最流行的一些东西吧?常去哪些网站?
§是否了解开源的工具bower、npm、yeoman、grunt、gulp,一个npm的包里的package.json
具备的必要的字段都有哪些?(名称、版本号,依赖)
§每个模块的代码结构都应该比较简单,且每个模块之间的关系也应该非常清晰,随着功能和迭代次数越来越多,你会如何去保持这个状态的?
§Git知道branch,diff,merge么?
§如何设计突发大规模并发架构?
§当团队人手不足,把功能代码写完已经需要加班的情况下,你会做前端代码的测试吗?
§说说最近最流行的一些东西吧?平时常去哪些网站?
§知道什么是SEO并且怎么优化么?知道各种metadata的含义么?
§移动端(AndroidIOS)怎么做好用户体验?
§简单描述一下你做过的移动APP项目研发流程?
§你在现在的团队处于什么样的角色,起到了什么明显的作用?
§你认为怎样才是全端工程师(FullStackdeveloper)?
§介绍一个你最得意的作品吧?
§你有自己的技术博客吗,用了哪些技术?
§对前端安全有什么看法?
§是否了解Web注入攻击,说下原理,最常见的两种攻击(XSS和CSRF)了解到什么程度?
§项目中遇到国哪些印象深刻的技术难题,具体是什么问题,怎么解决?。
§最近在学什么东西?
§你的优点是什么?缺点是什么?
§如何管理前端团队?
§最近在学什么?能谈谈你未来3,5年给自己的规划吗?
§
以上就是小编今天为大家分享的关于web前端工程师面试题的文章,希望本篇文章能够对正准备学习编程技术的小伙伴们有所帮助。想要了解更多web前端相关知识记得关注北大青鸟web前端培训官网哦!最后希望小伙伴们能够好好准备这些问题的答案,在面试中取得好成绩,成为一名优秀的web前端工程师!
§
㈨ web前端面试十大总结,不了解一下吗
在互联网时代,浏览器几乎主宰着一切,而前端开发人员决定着浏览器的内容展现形式和信息的提供,是不可或缺的一部分。前端开发实际上具有很明显的时代特征,它在很大程度上决定着大众的信息摄入,以及用户读取信息的有效方式。那么今天小编为大家总结了一些web前端的面试题,希望对大家有帮助哦!
一:字体高亮函数
题目:请你完成highlight函数,可以把模版字符串中的插入内容替换掉,并且插入文档以后显示红色。例如:
constyourName='ScriptOJ'
constmyName='Jerry'
document.body.innerHTML=highlight`Hello,${yourName}.Iam
${myName}.`
上面例子的页面显示如下:
0_1498033735172_upload-2abd65b1-1e98-46ba-b46f-df4188a036a5
请你完成highlight函数的编写。
答案:
css:
.highlight{
color:red;
}
js:
//考察的是Taggedtemplateliterals的使用
//
#/en-US/docs/Web/JavaScript/Reference/Template_literals
consthighlight=(strings,...args)=>{
returnstrings.rece((str,cur,i)=>{
return`${str}${cur}${args[i]?`class="highlight">${args[i]}`:''}`
},'')
}
二:数组去重
题目:编写一个函数unique(arr),返回一个去除数组内重复的元素的数组。例如:
unique([0,1,2,2,3,3,4])//=>[0,1,2,3,4]
unique([0,1,Ƈ',Ƈ',2])//=>[0,1,Ƈ',2]
答案:
constunique=(arr)=>[...newSet(arr)]
三:解析字串
题目:完成一个extractStr函数,可以把一个字符串中所有的:到.的子串解析出来并且存放到一个数组当中,例如:
extractStr('Mynameis:Jerry.Myageis:12.')//=>['Jerry',']
注意,:和.之间不包含:和.。也即是说,如果::abc..,则返回['abc']。
(本题来源:《JavaScriptCookbook》)
答案:·
constextractStr=(str)=>{
constret=str.match(/:([^:.])*?./g)||[]
returnret.map((subStr)=>subStr.replace(/[:.]/g,''))
}
四:spacify题目:
请你给字符串都添加上原型方法spacify,可以让一个字符串的每个字母都多出一个空格的间隔:"ScriptOJ".spacify()//=>
"ScriptO
J"(本题来源:#/interview-questions)答案:String.prototype.spacify
=function(){
returnthis.split('').join('')
}
五:safeGet
题目:有时候我们需要访问一个对象较深的层次,但是如果这个对象某个属性不存在的话就会报错,例如:
vardata={a:{b:{c:'ScriptOJ'}}}
data.a.b.c//=>scriptoj
data.a.b.c.d//=>报错,代码停止执行
console.log('ScriptOJ')//=>不会被执行
请你完成一个safeGet函数,可以安全的获取无限多层次的数据,一旦数据不存在不会报错,会返回undefined,例如:
vardata={a:{b:{c:'ScriptOJ'}}}
safeGet(data,'a.b.c')//=>scriptoj
safeGet(data,'a.b.c.d')//=>返回undefined
safeGet(data,'a.b.c.d.e.f.g')//=>返回undefined
console.log('ScriptOJ')//=>打印ScriptOJ
答案:
constsafeGet=(o,path)=>{
try{
returnpath.split('.').rece((o,k)=>o[k],o)
}catch(e){
returnvoid666
}
}
六:判断两个矩形是否重叠
题目:用一个对象的数据来表示一个矩形的位置和大小:
{
x:100,
y:100,
width:150,
height:250
}
它表示一个宽为150高为250的矩形在页面上的(100,100)的位置。
请你完成一个函数isOverlap可以接受两个矩形作为参数,判断这两个矩形在页面上是否重叠。例如:
constrect1={x:100,y:100,width:100,height:100}
constrect2={x:150,y:150,width:100,height:100}
isOverlap(rect1,rect2)//=>true
答案:
//原理:#/find-two-rectangles-overlap/
constisOverlap=(rect1,rect2)=>{
constl1={x:rect1.x,y:rect1.y}
constr1={x:rect1.x+rect1.width,y:rect1.y+rect1.height}
constl2={x:rect2.x,y:rect2.y}
constr2={x:rect2.x+rect2.width,y:rect2.y+rect2.height}
if(
l1.x>r2.x||
l2.x>r1.x||
l1.y>r2.y||
l2.y>r1.y
)returnfalse
returntrue
}
七:按下标插入
题目:现在有一个数组存放字符串数据:
['item1','item2','item3','item4','item5']
有另外一个数组存放一组对象:
[
{content:'section1',index:0},
{content:'section2',index:2}
]
它每个对象表示的是会往原来的数组的index坐标插入content数据(index不会重复):
01234
item1itme2item3item4item5
^^
||
section1section2
最后结果是:['section1','item1','item2','section2','item3','item4',
'item5']
请你完成injectSections函数,可以达到上述的功能:
injectSections(
['item1','item2','item3','item4','item5'],
[
{content:'section1',index:0},
{content:'section2',index:2}
]
)//=>['section1','item1','item2','section2','item3','item4',
'item5']
答案:
constinjectSections=(items,sections)=>{
/*需要插入坐标对应数据存放到map里面*/
constsectionsMap=newMap(sections.map(({index,content})=>[index,
content]))
/*新建一个数组,然后往里面push原来数组的数据*/
returnitems.rece((ret,item,index)=>{
/*push的时候先检查map里面有没有,有的话先pushmap里面的数据*/
if(sectionsMap.has(index))ret.push(sectionsMap.get(index))
/*再push原来的数据*/
ret.push(item)
returnret
},[])
}
八:数组拍平(二)
题目:编写一个JavaScriptgenerator函数,接受一个仅包含数字的多维数组
,返回一个迭代器,可以遍历得到它拍平以后的结果。例如:
constnumbers=flatten2([1,[[2],3,4],5])
numbers.next().value//=>1
numbers.next().value//=>2
numbers.next().value//=>3
numbers.next().value//=>4
numbers.next().value//=>5
答案:
function*flatten2(arr){
for(leti=0;i
constitem=arr[i]
/*yield*的使用可以大大简化程序编写*/
Array.isArray(item)?yield*flatten2(item):yielditem;
}
}
/*用flatten2来完成flatten也是很方便的*/
//constflatten=(arr)=>[...flatten2(arr)]
九:判断两个Set是否相同
题目:完成isSameSet函数,它接受了两个Set对象作为参数,请你返回true/false来表明这两个set
的内容是否完全一致,例如:
consta={}
constb=1
constc='ScriptOJ'
constset1=newSet([a,b,c])
constset2=newSet([a,c,b])
isSameSet(set1,set2)//=>true
答案:
//codefrom#/js-example.html
/*这道题不能简单地使用sort,使用sort并不靠谱。因为Set里面的内容可能有很多种类
*字符串、对象、数字,不同类型之间是不可对比的,所以排序结果并不会一致
*
*最好的方式是按照数学上集合相等的定义:
*A=B当且仅当A是B的子集并且B是A的子集。
*
*这种判断方式还可以用在对象、map等其他数据类型的判断当中。
*/
constisSameSet=(s1,s2)=>{
/*获取一个集合所有的值,判断另外一个集合是否全部包含该这些值*/
constisSame=(a,b)=>{
constvalues=[...a]
for(letvalofvalues){
/*及时跳出循环,可以降低算法复杂度*/
if(!b.has(val))returnfalse
}
returntrue
}
/*a包含b,b包含a,那么两个集合相同*/
returnisSame(s1,s2)&&isSame(s2,s1)
}
/*By陈小俊*/
//constisSameSet=(set1,set2)=>
//[...set1].every((o)=>set2.has(o))&&
//[...set2].every((o)=>set1.has(o))
十:记忆化斐波那契函数(Memoization)
题目:斐波那契数列指的是类似于以下的数列:
1,1,2,3,5,8,13,....
也就是,第n个数由数列的前两个相加而来:f(n)=f(n-1)+f(n-2)
请你完成fibonacci函数,接受n作为参数,可以获取数列中第n个数,例如:
fibonacci(1)//=>1
fibonacci(2)//=>1
fibonacci(3)//=>2
...
测试程序会从按顺序依次获取斐波那契数列中的数,请注意程序不要超时,也不要添加额外的全局变量。
本题来源:《JavaScript语言精髓》
答案:
constfibonacci=((memo=[0,1])=>{
constfib=(n)=>{
letresult=memo[n]
if(typeofresult!=="number"){
result=fib(n-1)+fib(n-2)
memo[n]=result
}
returnresult
}
returnfib
})()
最后就是反应能力,临场出现意外什么的了,这就看你自己了,万一自己一不留神说错话了,大神给你指出来,请记得谢谢一定要谦虚!在这里小编也希望每一位web培训班毕业的学员都能顺利找到称心的工作!
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容
在互联网时代,浏览器几乎主宰着一切,而前端开发人员决定着浏览器的内容展现形式和信息的提供,是不可或缺的一部分。前端开发实际上具有很明显的时代特征,它在很大程度上决定着大众的信息摄入,以及用户读取信息的有效方式。那么今天小编为大家总结了一些web前端的面试题,希望对大家有帮助哦!
一:字体高亮函数
题目:请你完成highlight函数,可以把模版字符串中的插入内容替换掉,并且插入文档以后显示红色。例如:
constyourName='ScriptOJ'
constmyName='Jerry'
document.body.innerHTML=highlight`Hello,${yourName}.Iam
${myName}.`
上面例子的页面显示如下:
0_1498033735172_upload-2abd65b1-1e98-46ba-b46f-df4188a036a5
请你完成highlight函数的编写。
答案:
css:
.highlight{
color:red;
}
js:
//考察的是Taggedtemplateliterals的使用
//
#/en-US/docs/Web/JavaScript/Reference/Template_literals
consthighlight=(strings,...args)=>{
returnstrings.rece((str,cur,i)=>{
return`${str}${cur}${args[i]?`class="highlight">${args[i]}`:''}`
},'')
}
二:数组去重
题目:编写一个函数unique(arr),返回一个去除数组内重复的元素的数组。例如:
unique([0,1,2,2,3,3,4])//=>[0,1,2,3,4]
unique([0,1,Ƈ',Ƈ',2])//=>[0,1,Ƈ',2]
答案:
constunique=(arr)=>[...newSet(arr)]
三:解析字串
题目:完成一个extractStr函数,可以把一个字符串中所有的:到.的子串解析出来并且存放到一个数组当中,例如:
extractStr('Mynameis:Jerry.Myageis:12.')//=>['Jerry',']
注意,:和.之间不包含:和.。也即是说,如果::abc..,则返回['abc']。
(本题来源:《JavaScriptCookbook》)
答案:·
constextractStr=(str)=>{
constret=str.match(/:([^:.])*?./g)||[]
returnret.map((subStr)=>subStr.replace(/[:.]/g,''))
}
四:spacify题目:
请你给字符串都添加上原型方法spacify,可以让一个字符串的每个字母
㈩ 阿里巴巴web前端开发面试题
第一部分:用CSS实现布局
让我们一起来做一个页面
首先,我们需要一个布局。
请使用CSS控制3个div,实现如下图的布局。
第二部分:用javascript优化布局
由于我们的用户群喜欢放大看页面
于是我们给上一题的布局做一次优化。
当鼠标略过某个区块的时候,该区块会放大25%,
并且其他的区块仍然固定不动。
提示:
也许,我们其他的布局也会用到这个放大的效果哦。
可以使用任何开源代码,包括曾经你自己写的。
关键字:
javascript、封装、复用
第三部分:处理紧急情况
好了,我们的页面完成了。
于是我们将页面发布上网。
突然,晴天霹雳,页面无法访问了,这时候,你会怎么做?
第一题个人实现:
___
______body,_iv{margin:0;padding:0;}
______.fl{float:_eft;_isplay:_nline;}
______.bc_C{background-color:#CCC;}
______.h120{height:120px;}
______.h250{height:250px;}
______.w120{width:120px;}
______.w220{width:220px;}
______.t130{top:130px;}
______.pa{position:_bsolute;}
______.mr10{margin-right:10px;}
______.mb10{margin-bottom:10px;}
___
___
______