前端面试题旭哥到处跑

早期前端都是比较简单,基本以页面为工作单元,内容以浏览型为主,也偶尔有简单的表单操作,基本不太需要框架。

随着AJAX的出现,Web2.0的兴起,人们可以在页面上可以做比较复杂的事情了,然后前端框架才真正出现了。

如果是页面型产品,多数确实不太需要它,因为页面中的JavaScript代码,处理交互的绝对远远超过处理模型的,但是如果是应用软件类产品,这就太需要了。

长期做某个行业软件的公司,一般都会沉淀下来一些业务组件,主要体现在数据模型、业务规则和业务流程,这些组件基本都存在于后端,在前端很少有相应的组织。

从协作关系上讲,很多前端开发团队每个成员的职责不是很清晰,有了前端的MV框架,这个状况会大有改观。

之所以感受不到MV*框架的重要性,是因为Model部分代码较少,View的相对多一些。如果主要在操作View和Controller,那当然jQuery这类库比较好用了。

1.2、请简述盒模型

IE6盒子模型与W3C盒子模型。

文档中的每个元素被描绘为矩形盒子。盒子有四个边界:外边距边界margin,边框边界border,内边距边界padding与内容边界content。

content-box:padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和。(W3C盒子模型)

border-box:padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值。(IE6盒子模型)

1.3、请你谈谈Cookie的弊端

a.每个特定的域名下最多生成的cookie个数有限制

b.IE和Opera会清理近期最少使用的cookie,Firefox会随机清理cookie

c.cookie的最大大约为4096字节,为了兼容性,一般不能超过4095字节

d.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。

1.4、浏览器本地存储

sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁,是会话级别的存储。

localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

1.5、webstorage和cookie的区别

a.Cookie的大小是受限的

b.每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽

c.cookie还需要指定作用域,不可以跨域调用

d.WebStorage拥有setItem,getItem等方法,cookie需要前端开发者自己封装setCookie,getCookie

e.Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在,而WebStorage仅仅是为了在本地“存储”数据而生

f.IE7、IE6中的UserData通过简单的代码封装可以统一到所有的浏览器都支持webstorage

1.6、对BFC规范的理解

BFC全称是BlockFormattingContext,即块格式化上下文。它是CSS2.1规范定义的,关于CSS渲染定位的一个概念。

BFC是页面CSS视觉渲染的一部分,用于决定块盒子的布局及浮动相互影响范围的一个区域。

BFC的一个最重要的效果是,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。

利用BFC可以闭合浮动,防止与浮动元素重叠。

1.7、线程与进程的区别

a.一个程序至少有一个进程,一个进程至少有一个线程

b.线程的划分尺度小于进程,使得多线程程序的并发性高

c.进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

d.每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

e.多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配

1.8、你都使用哪些工具来测试代码的性能?

1.9、你遇到过比较难的技术问题是?你是如何解决的?

1.10、常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?

1.11、列举IE与其他浏览器不一样的特性?

a.IE的排版引擎是Trident(又称为MSHTML)

b.Trident内核曾经几乎与W3C标准脱节(2005年)

c.Trident内核的大量Bug等安全性问题没有得到及时解决

d.JS方面,有很多独立的方法,例如绑定事件的attachEvent、创建事件的createEventObject等

e.CSS方面,也有自己独有的处理方式,例如设置透明,低版本IE中使用滤镜的方式

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

渐进增强progressiveenhancement:

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

优雅降级gracefuldegradation:

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

区别:

a.优雅降级是从复杂的现状开始,并试图减少用户体验的供给

b.渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要

c.降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带

1.13、WEB应用从服务器主动推送Data到客户端有那些方式?

a.html5websoket

b.WebSocket通过Flash

d.XHRMultipartStreaming

e.不可见的Iframe

1.14、对前端界面工程师这个职位是怎么样理解的?

a.前端是最贴近用户的程序员,前端的能力就是能让产品从90分进化到100分,甚至更好

b.参与项目,快速高质量完成实现效果图,精确到1px;

c.与团队成员,UI设计,产品经理的沟通;

d.做好的页面结构,页面重构和用户体验;

e.处理hack,兼容、写出优美的代码格式;

f.针对服务器的优化、拥抱最新前端技术。

1.15、你在现在的团队处于什么样的角色,起到了什么明显的作用?

1.16、你的优点是什么?缺点是什么?

1.17、如何管理前端团队

1.18、最近在学什么?能谈谈你未来3,5年给自己的规划吗?

1.19、平时如何管理你的项目?

a.先期团队必须确定好全局样式(globe.css),编码模式(utf-8)等;

b.编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);

c.标注样式编写人,各模块都及时标注(标注关键样式调用的地方);

d.页面进行标注(例如页面模块开始和结束);

e.CSS跟HTML分文件夹并行存放,命名都得统一(例如style.css);

f.JS分文件夹存放命名以该JS功能为准的英文翻译。

g.图片采用整合的images.pngpng8格式文件使用尽量整合在一起使用方便将来的管理

1.20、说说最近最流行的一些东西吧?常去哪些网站?

CSDN、SegmentFault、php.net、MDN、css参考手册、iconfont、

underscore、github、Bootstrap、W3Shool、W3Cplus、caniuse

1.21、Flash、Ajax各自的优缺点,在使用中如何取舍?

Flash:a.Flash适合处理多媒体、矢量图形、访问机器

b.对CSS、处理文本上不足,不容易被搜索

Ajax:

a.Ajax对CSS、文本支持很好,支持搜索

b.多媒体、矢量图形、机器访问不足

共同点:

a.与服务器的无刷新传递消息

b.可以检测用户离线和在线状态

c.操作DOM

1.22、请解释一下JavaScript的同源策略

同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。

1.23、AMD和CMD规范的区别?

AMD提前执行依赖-尽早执行,requireJS是它的实现

CMD按需执行依赖-懒执行,seaJS是它的实现

1.24、网站重构的理解

重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。

a.使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)

b.对于移动平台的优化,针对于SEO进行优化

c.减少代码间的耦合,让代码保持弹性

d.压缩或合并JS、CSS、image等前端资源

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

IE浏览器的内核Trident、Mozilla的Gecko、Chrome的Blink(WebKit的分支)、Opera内核原为Presto,现为Blink;

1.26、前端页面有哪三层构成,分别是什么?作用是什么?

a.结构层:由HTML或XHTML之类的标记语言负责创建,仅负责语义的表达。解决了页面“内容是什么”的问题。

b.表示层:由CSS负责创建,解决了页面“如何显示内容”的问题。

c.行为层:由脚本负责。解决了页面上“内容应该如何对事件作出反应”的问题。

1.27、知道的网页制作会用到的图片格式有哪些?

png-8,png-24,jpeg,gif,svg

Webp:谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间。FacebookEbay等知名网站已经开始测试并使用WebP格式。

Apng:全称是“AnimatedPortableNetworkGraphics”,是PNG的位图动画扩展,可以实现png格式的动态图片效果。04年诞生,但一直得不到各大浏览器厂商的支持,直到日前得到iOSsafari8的支持,有望代替GIF成为下一代动态图标准。

2.1、标签上title属性与alt属性的区别是什么?

alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的。且长度必须少于100个英文字符或者用户必须保证替换文字尽可能的短。

这包括那些使用本来就不支持图像显示或者图像显示被关闭的浏览器的用户,视觉障碍的用户和使用屏幕阅读器的用户等。

2.2、分别写出以下几个HTML标签:文字加粗、下标、居中、字体

2.3、请写出至少5个html5新增的标签,并说明其语义和应用场景

section:定义文档中的一个章节

nav:定义只包含导航链接的章节

header:定义页面或章节的头部。它经常包含logo、页面标题和导航性的目录。

aside:定义和页面内容关联度较低的内容——如果被删除,剩下的内容仍然很合理。

2.4、请说说你对标签语义化的理解?

a.去掉或者丢失样式的时候能够让页面呈现出清晰的结构

b.有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;

c.方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;

d.便于团队开发和维护,语义化更具可读性,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

2.5、Doctype作用严格模式与混杂模式如何区分?它们有何意义

严格模式的排版和JS运作模式是,以该浏览器支持的最高标准运行。

在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。

DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。

2.6、你知道多少种Doctype文档类型?

HTML4.01规定了三种文档类型:Strict、Transitional以及Frameset。

XHTML1.0规定了三种XML文档类型:Strict、Transitional以及Frameset。

Standards(标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,

Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。

2.7、HTML与XHTML——二者有什么区别

a.XHTML元素必须被正确地嵌套。

b.XHTML元素必须被关闭。

c.标签名必须用小写字母。

d.XHTML文档必须拥有根元素。

2.8、html5有哪些新特性、移除了那些元素?

a.HTML5现在已经不是SGML的子集,主要是关于图像,位置,存储,多任务等功能的增加。

b.拖拽释放(Draganddrop)API

c.语义化更好的内容标签(header,nav,footer,aside,article,section)

i.表单控件,calendar、date、time、email、url、search

移除的元素:

a.纯表现的元素:basefont,big,center,s,strike,tt,u;

b.对可用性产生负面影响的元素:frame,frameset,noframes;

2.9、iframe的优缺点?

优点:

b.iframe无刷新文件上传

c.iframe跨域通信

缺点:

a.iframe会阻塞主页面的Onload事件

b.无法被一些搜索引擎索引到

c.影响浏览器中的并行资源下载,iframe和父页面不能共享下载

d.script脚本标签写在了iframe之前,iframe中的资源会被阻塞

2.10、Quirks模式是什么?它和Standards模式有什么区别?

在写程序时我们也会经常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤其是新功能不兼容旧功能时。IE6以前的页面大家都不会去写DTD,所以IE6就假定如果写了DTD,就意味着这个页面将采用对CSS支持更好的布局,而如果没有,则采用兼容之前的布局方式。这就是Quirks模式(怪癖模式,诡异模式,怪异模式)。

区别:总体会有布局、样式解析和脚本执行三个方面的区别。

a.盒模型:在W3C标准中,如果设置一个元素的宽度和高度,指的是元素内容的宽度和高度,而在Quirks模式下,IE的宽度和高度还包含了padding和border。

b.设置行内元素的高宽:在Standards模式下,给等行内元素设置wdith和height都不会生效,而在quirks模式下,则会生效。

c.设置百分比的高度:在standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的用

d.设置水平居中:使用margin:0auto在standards模式下可以使元素水平居中,但在quirks模式下却会失效。

2.11、请阐述table的缺点

a.太深的嵌套,比如table>tr>td>h3,会导致搜索引擎读取困难,而且,最直接的损失就是大大增加了冗余代码量。

b.灵活性差,比如要将tr设置border等属性,是不行的,得通过td

c.代码臃肿,当在table中套用table的时候,阅读代码会显得异常混乱

d.混乱的colspan与rowspan,用来布局时,频繁使用他们会造成整个文档顺序混乱。

f.不够语义

src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置

3.1、谈谈你对CSS布局的理解

3.2、请列举几种可以清除浮动的方法(至少两种)

浮动会漂浮于普通流之上,像浮云一样,但是只能左右浮动。正是这种特性,导致框内部由于不存在其他普通流元素了,表现出高度为0(高度塌陷)。

a.添加额外标签,例如

b.使用br标签和其自身的html属性,例如

d.父元素设置overflow:auto属性;同样IE6需要触发hasLayout

e.父元素也设置浮动

f.父元素设置display:table

g.使用:after伪元素;由于IE6-7不支持:after,使用zoom:1触发hasLayout。

创建了BFC的元素就是一个独立的盒子,里面的子元素不会在布局上影响外面的元素,同时BFC仍然属于文档中的普通流。

IE6-7的显示引擎使用的是一个称为布局(layout)的内部概念。

3.3、请列举几种隐藏元素的方法

a.visibility:hidden;这个属性只是简单的隐藏某个元素,但是元素占用的空间任然存在。

b.opacity:0;一个CSS3属性,设置0可以使一个元素完全透明,制作出和visibility一样的效果。与visibility相比,它可以被transition和animate

c.position:absolute;使元素脱离文档流,处于普通文档之上,给它设置一个很大的left负值定位,使元素定位在可见区域之外。

d.display:none;元素会变得不可见,并且不会再占用文档的空间。

e.transform:scale(0);将一个元素设置为无限小,这个元素将不可见。这个元素原来所在的位置将被保留。

f.HTML5hiddenattribute;hidden属性的效果和display:none;相同,这个属性用于记录一个元素的状态

g.height:0;overflow:hidden;将元素在垂直方向上收缩为0,使元素消失。只要元素没有可见的边框,该技术就可以正常工作。

h.filter:blur(0);将一个元素的模糊度设置为0,从而使这个元素“消失”在页面中。

3.4、如何让一段文本中的所有英文单词的首字母大写

none|capitalize(将每个单词的第一个字母转换成大写)|uppercase(将每个单词转换成大写)|lowercase(将每个单词转换成小写)

3.5、请简述CSS样式表继承

3.6、请简述CSS的选择器

元素选择器:*、E、E#id、E.class

关系选择器:E、F、E>F、E+F、E~F

属性选择器:E[att]、E[att="val"]、E[att~="val"]、E[att^="val"]、E[att$="val"]、E[att*="val"]、E[att|="val"]

伪类选择器:E:link、E:visited、E:hover、E:active、E:focus、E:lang(fr)、E:not(s)、E:root、E:first-child、E:last-chil等

伪对象选择器:E:first-letter/E::first-letter、E:first-line/E::first-line、E:before/E::before、E:after/E::after、E::selection

3.7、CSS伪类与CSS伪对象的区别

CSS引入伪类和伪元素的概念是为了描述一些现有CSS无法描述的东西

根本区别在于:它们是否创造了新的元素(抽象)

伪类:一开始用来表示一些元素的动态状态,随后CSS2标准扩展了其概念范围,使其成为了所有逻辑上存在但在文档树中却无须标识的“幽灵”分类

伪对象:代表了某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中

3.8、请简述CSS的权重规则

一个行内样式+1000,一个id+100,一个属性选择器/class类/伪类选择器+10,一个元素名/伪对象选择器+1。

3.9、请写出多种等高布局

a.假等高列:使用背景图片,在列的父元素上使用这个背景图进行Y轴的铺放,从而实现一种等高列的假像

3.10、在CSS样式中常使用px、em,各有什么优劣,在表现上有什么区别?

px是相对长度单位,相对于显示器屏幕分辨率而言的。

em是相对长度单位,相对于当前对象内文本的字体尺寸。

px定义的字体,无法用浏览器字体放大功能。

em的值并不是固定的,会继承父级元素的字体大小,1÷父元素的font-size×需要转换的像素值=em值。

3.11、CSS中link和@import的区别是什么?

a.link属于HTML标签,而@import是CSS提供的,且只能加载CSS

b.页面被加载时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载

c.import只在IE5以上才能识别,而link是HTML标签,无兼容问题

d.link方式的样式的权重高于@import的权重

e.当使用Javascript控制DOM去改变样式的时候,只能使用link方式,因为@import眼里只有CSS,不是DOM可以控制

3.12、position的absolute与fixed共同点与不同点

相同:

a.改变行内元素的呈现方式,display被置为block

b.让元素脱离普通流,不占据空间

c.默认会覆盖到非定位元素上

absolute的”根元素“是可以设置的,而fixed的”根元素“固定为浏览器窗口。

当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。

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

absolute:生成绝对定位的元素,相对于static定位以外的第一个祖先元素进行定位

fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。(IE6不支持)

relative:生成相对定位的元素,相对于其在普通流中的位置进行定位

static:默认值。没有定位,元素出现在正常的流中

3.14、CSS3有哪些新特性?

增加了更多的CSS选择器多背景rgba,在CSS3中唯一引入的伪元素是::selection,媒体查询,多栏布局

3.15、为什么要初始化CSS样式?

因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。

当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。

3.16、解释下CSSsprites原理,优缺点

CSSSprites其实就是把网页中一些背景图片整合到一张图片文件中,

再利用CSS的“background-image”,“background-repeat”,“background-position”的组合进行背景定位,

background-position可以用数字精确的定位出背景图片的位置。

b.减少图片的字节

c.解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名

d.更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。

a.在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂

b.CSSSprites在开发的时候,要通过photoshop或其他工具测量计算每一个背景单元的精确位置

c.在维护的时候比较麻烦,如果页面背景有少许改动,一般就要改这张合并的图片

3.17、解释下浮动和它的工作原理?

a.浮动元素脱离文档流,不占据空间(引起“高度塌陷”现象)

b.浮动元素碰到包含它的边框或者浮动元素的边框停留。

3.18、浮动元素引起的问题

a.父元素的高度无法被撑开,影响与父元素同级的元素

b.与浮动元素同级的非浮动元素会跟随其后

c.若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构

3.19、什么是FOUC(无样式内容闪烁)?你如何来避免FOUC?

如果使用import方法对CSS进行导入,会导致某些页面在Windows下的IE出现一些奇怪的现象:

以无样式显示页面内容的瞬间闪烁,这种现象称之为文档样式短暂失效(FlashofUnstyledContent),简称为FOUC。

原理:当样式表晚于结构性html加载,当加载到此样式表时,页面将停止之前的渲染。此样式表被下载和解析后,将重新渲染页面,也就出现了短暂的花屏现象。

解决方法:使用LINK标签将样式表放在文档HEAD中。

3.20、line-height三种赋值方式有何区别?(带单位、纯数字、百分比)

带单位:px不用计算,em则会使元素以其父元素font-size值为参考来计算自己的行高

纯数字:把比例传递给后代,例如父级行高为1.5,子元素字体为18px,则子元素行高为1.5*18=27px

百分比:将计算后的值传递给后代

3.21、:link、:visited、:hover、:active的执行顺序是怎么样的?

L-V-H-A,l(link)ov(visited)eh(hover)a(active)te,即用喜欢和讨厌两个词来概括

3.22、经常遇到的浏览器兼容性有哪些?如何解决?

a.浏览器默认的margin和padding不同

b.IE6双边距bug

c.在ie6,ie7中元素高度超出自己设置高度。原因是IE8以前的浏览器中会给元素设置默认的行高的高度导致的

d.min-height在IE6下不起作用

e.透明性IE用filter:Alpha(Opacity=60),而其他主流浏览器用opacity:0.6

f.input边框问题,去掉input边框一般用border:none;就可以,但由于IE6在解析input样式时的BUG(优先级问题),在IE6下无效

3.23、有哪项方式可以对一个DOM设置它的CSS样式?

a.外部样式表:通过标签引入一个外部css文件

b.内部样式表:将css代码放在");

innerHTML:

a.改变HTML内容

b.输入css的style标签不能改变样式。也是能改变样式的

4.24、哪些操作会造成内存泄漏?

a.当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件,不然会存在内存泄露。

b.在IE中,如果循环引用中的任何对象是DOM节点或者ActiveX对象,垃圾收集系统则不会处理。

c.闭包可以维持函数内局部变量,使其得不到释放。

d.在销毁对象的时候,要遍历属性中属性,依次删除,否则会泄漏。

函数表达式中只会提升名称,函数体只有在执行到赋值语句时才会被赋值。

4.26、如何判断当前脚本运行在浏览器还是node环境中?

4.27、什么是"usestrict"

ECMAscript5添加了第二种运行模式:"严格模式"(strictmode)

设立"严格模式"的目的,主要有以下几个:

a.消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;

b.消除代码运行的一些不安全之处,保证代码运行的安全;

c.提高编译器效率,增加运行速度;

d.为未来新版本的Javascript做好铺垫。

注:经过测试IE6,7,8,9均不支持严格模式

4.28、eval是做什么的?

eval()是一个顶级函数并且跟任何对象无关。

4.29、JavaScript原型,原型链

原型:

a.原型是一个对象,其他对象可以通过它实现属性继承。

b.一个对象的真正原型是被对象内部的[[Prototype]]属性(property)所持有。浏览器支持非标准的访问器__proto__。

c.在javascript中,一个对象就是任何无序键值对的集合,如果它不是一个主数据类型(undefined,null,boolean,number,string),那它就是一个对象。

原型链:

a.因为每个对象和原型都有一个原型(注:原型也是一个对象),对象的原型指向对象的父,而父的原型又指向父的父,我们把这种通过原型层层连接起来的关系称为原型链。

b.这条链的末端一般总是默认的对象原型。

4.30、画出此对象的内存图

4.31、JQuery与jQueryUI有啥区别?

jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。

jQueryUI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等

4.32、jQuery的源码看过吗?能不能简单说一下它的实现原理?

jQuery给我们带来了一个简洁方便的编码模型(1>创建jQuery对象;2>直接使用jQuery对象的属性/方法/事件),

一个强悍的dom元素查找器($),插件式编程接口(jQuery.fn),以及插件初始化的”配置”对象思想

4.33、jQuery中如何将数组转化为json字符串

在jQuery1.8.3中有个方法“parseJSON”,在这个方法中会做从string转换为json。

如果没有就使用(newFunction("return"+data))();执行代码返回。

4.34、请写出console.log中的内容

a.arguments[0]被覆盖了

c.next中出现了隐式的类型转换

4.35、请说明下下面代码的执行过程

a.JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序

b.setTimeout是异步线程,需要等待js引擎处理完同步代码(while语句)之后才会执行,while语句直接是个死循环,js引擎没有空闲,不会执行下面的alert,也不会插入setTimeout。我在chrome中执行在线代码,最后浏览器是终止死循环执行alert。

c.JavaScript的工作机制是:当线程中没有执行任何同步代码的前提下才会执行异步代码,setTimeout是异步代码,所以setTimeout只能等js空闲才会执行,但死循环是永远不会空闲的,所以setTimeout也永远不会执行。

4.36、输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26

4.37、Javascript中callee和caller的作用?

4.38、函数柯里化(Currying)如何理解?

柯里化:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

柯里化其实本身是固定一个可以预期的参数,并返回一个特定的函数,处理批特定的需求。这增加了函数的适用性,但同时也降低了函数的适用范围。

4.39、JS异步编程方式有几种?

a.回调函数

b.事件监听

c.发布订阅

d.promise

4.40、请说说在JavaScript引用类型和值类型的理解

值类型:存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。即Undefined、Null、Boolean、Number和String。

引用类型:存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。即对象、数组

vara={n:1};varb=a;a.x=a={n:2};console.log(a.x);//-->undefinedconsole.log(b.x);//-->[objectObject]

4.41、请解释一下JavaScript中的作用域和作用域链

变量的作用域(scope):程序源代码中定义这个变量的区域。

作用域链:是一个对象列表或链表,这组对象定义了这段代码“作用域中”的变量。查找变量会从第一个对象开始查找,有则用,无则查找链上的下一个对象。

5.1、讲讲输入完网址按下回车,到看到网页这个过程中发生了什么

a.域名解析

b.发起TCP的3次握手

e.浏览器解析html代码,并请求html代码中的资源

f.浏览器对页面进行渲染呈现给用户

5.2、谈谈你对前端性能优化的理解

a.请求优化:

合并JS和CSS,减少DNS查找次数,避免重定向,使用GET完成AJAX请求,减小请求中的Cookie,缓存资源,使用CDN,开启GZip,压缩HTML页面,开启长连接,避免行内脚本阻塞并行下载,少用iframe(阻塞onload事件,影响并行下载)。

b.CSS优化:

样式表置于页面顶部,避免使用CSS表达式,使用外部JS和CSS,压缩JS和CSS,避免滤镜。

c.JavaScript优化:

脚本置于页面底部,减少DOM访问,减少重绘和重排,尽量使用局部变量,使用定时器分割大型任务,用合适的正则操作字符串,惰性模式减少分支,事件委托,第三方代码异步加载,节流与去抖动,使用localStorage替代cookie。

d.图片优化:

内联图使用Data:URL,压缩图片或使用WebP格式,固定图片尺寸,图片预加载,图片延迟加载,使用字体矢量图标,Sprites图片。

a.尽量减少页面中重复的HTTP请求数量

b.服务器开启gzip压缩

c.css样式的定义放置在文件头部

d.Javascript脚本放在文件末尾

e.压缩合并Javascript、CSS代码

f.使用多域名负载网页内的多个文件、图片

5.4、请介绍下cache-control

每个资源都可以通过Cache-ControlHTTP头来定义自己的缓存策略

Cache-Control指令控制谁在什么条件下可以缓存响应以及可以缓存多久

Cache-Control头在HTTP/1.1规范中定义,取代了之前用来定义响应缓存策略的头(例如Expires)。

5.5、一次js请求一般情况下有哪些地方会有缓存处理?

a.浏览器端存储

b.浏览器端文件缓存

c.HTTP缓存304

d.服务器端文件类型缓存

e.表现层&DOM缓存

5.6、一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。

a.图片懒加载,滚动到相应位置才加载图片。

b.图片预加载,如果为幻灯片、相册等,将当前展示图片的前一张和后一张优先下载。

c.使用CSSsprite,SVGsprite,Iconfont、Base64等技术,如果图片为css图片的话。

d.如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验。

5.7、谈谈以前端角度出发做好SEO需要考虑什么?

a.了解搜索引擎如何抓取网页和如何索引网页

b.meta标签优化

c.关键词分析

d.付费给搜索引擎

e.链接交换和链接广泛度(LinkPopularity)

f.合理的标签使用

5.8、HTTP2.0有哪些提升?

a.HTTP2.0中的二进制分帧层突破了限制:客户端和服务器可以把HTTP消息分解为互不依赖的帧,然后乱序发送,最后再在另一端把它们重新组合起来。

b.把HTTP消息分解为很多独立的帧之后,就可以通过优化这些帧的交错和传输顺序,进一步提升性能。

c.HTTP2.0通过让所有数据流共用同一个连接,可以更有效地使用TCP连接。

d.服务器除了对最初请求的响应外,服务器还可以额外向客户端推送资源,而无需客户端明确地请求。

e.HTTP2.0会压缩首部元数据,针对之前的数据只编码发送差异数据。

5.9、TCP与UDP的区别

a.UDP协议的头长度不到TCP头的一半,所以同样大小的包里UDP携带的净数据比TCP包多。

b.TCP会发响应,UDP不会。并且UDP没有Seq和Ack等概念,省去了建立连接的开销,DNS解析就使用UDP协议。TCP有3次握手4次挥手。

c.UDP不能分割报文段(MSS),超过MTU的时候,发送方的网络层负责分片,接收方收到分片后再组装起来,这个过程会消耗资源,降低性能。

d.UDP没有重传机制,丢包的时候就不能按需发送。TCP有超时重传、快速重传和SACK。

5.10、URI和URL

URI(UniformResourceIdentifier):统一资源标识符。

URL(UniformResoureLocator):统一资源定位符,通俗的说法是网址。

URI表示某一互联网资源,而URL表示资源地点,所以URL是URI的子集。

THE END
1.四款值得入手的小工具,每一款都携带方便,主要是非常好用手工自制创...01:54手机触屏不灵敏,我教大家一个小窍门,咱们可以试一试 02:44为了制作大小型号的卡扣,研究了一款专业工具,真的太有才了 02:21如何在家里制作石膏砖,这个简单的方法一定要学习,省钱 02:19手工制作一款钣金冲压工具,效果十分突出,适合各种黑白铁皮 03:00勤杂工的非凡想象力,小窍门绝对出彩,而且还非常实用...https://www.163.com/v/video/VL8MBT42Q.html
2.做手工工具有哪些做手工工具有:剪刀、壁纸刀、尺子、胶带、双面胶、胶棒、画笔等。手工指非机器设备批量生产,而是由人工制作生产。在工业化刚刚兴起时,手工一词一度成为生产率低下、质量参差不齐的代名词。 剪刀(jiǎndāo)是切割布、纸、钢板、绳、圆钢等片状或线状物体的双刃工具,两刃交错,可以开合。在中国,因纺织业发展,剪子...https://m.yyk.iask.sina.com.cn/q/87mRVqnjnjzD.html
3.有什么工具可以简单的构建带有vlan的数据包并发送给机器?CSDN问答为您找到有什么工具可以简单的构建带有vlan的数据包并发送给机器?相关问题答案,如果想了解更多关于有什么工具可以简单的构建带有vlan的数据包并发送给机器? 测试用例 技术问题等相关问答,请访问CSDN问答。https://ask.csdn.net/questions/1093884
4.2022年Java备战秋招,程序员求职必看的Mybatis面试题15、Mybatis动态sql有什么用?执行原理?有哪些动态sql? 16、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有什么? 18、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? 19、 一对一、一对多的关联查询 ? <mapper namespace="com.lcb.mapping.userMapper"><!--association 一对一...https://www.jianshu.com/p/0cae6fd558b1
1.十款简单易用的剪切工具排行榜手动剪切工具品牌产品推荐→买购网十款简单易用的剪切工具排行榜更新时间:2023-09-10推荐理由:十大热门剪切工具品牌产品排行榜出炉了,其中上榜的产品品牌有:田岛、捷科、钢盾、长城精工、威力狮、易尔拓、宝工工具、绿友、绿林、麦思德等,本榜单由买购网大数据平台提供产品数据支持,通过系统整理各大电商平台的产品,综合依据了产品的价格档次、人气销量、...https://m.maigoo.com/product/specs_2522.html
2.illustrator里的脚本工具有什么用?使用方法是什么?illustrator里的脚本工具有什么用?使用方法是什么? 简单地说,AdobeIllustrator脚本就是一条文本命令,它可以帮助我们有效地缩短设计时间,提高设计效率,同时还能丰富设计的表现,下面为您介绍一下如何使用AI脚本工具。 一、安装程序脚本 在弹出的对话框中选择文件-脚本-其他脚本,选择您所需的脚本文件。(在此注意脚本需要事...https://www.yutu.cn/news_21364.html
3.《工具用途大》幼儿大班主题教案(通用10篇)2.学习正确使用一些简单的工具。 活动准备: 1.与幼儿共同收集一些常用的工具。 2.和幼儿一起准备分组活动的`材料。 活动过程: 1.说说工具与人们生活的关系。 (1)请幼儿介绍自己带来的工具:它叫什么名字?有什么用? (2)讨论:人么为什么要发明工具? https://www.unjs.com/jiaoan/youer/20190220104031_1894894.html
4.Caj转PDF如何实现转换?Caj转PDF有什么好用的工具推荐吗?Caj转PDF有什么好用的工具推荐吗? 今天我要告诉你一个简单又高效的解决方案!无需繁琐的操作,只需几个简单的步骤,你就能将CAJ文件轻松转换成PDF,方便随时随地阅读。不再为复制粘贴而烦恼,不再为格式兼容问题而头疼。让我们一起揭开这个神奇的转换技巧,让你的研究生活更加便捷、高效!https://www.foxitsoftware.cn/pdf2word/jiaocheng/3695.html
5.是什么导致远程连接失败?远程连接工具让连接更简单在远程连接服务器的时候,你是否有遇到远程桌面连接不上的情况?导致服务器连接不上的原因多种多样,是什么导致远程连接失败呢?远程连接工具让连接更简单了,靠谱的远程连接工具哪个好呢? 是什么导致远程连接失败? 导致服务器连接不上可能的原因有以下几种常见的原因: ...https://sunlogin.oray.com/zh_CN/news/14257.html
6.没有财务软件用什么做账好用1. 简单工具的智慧选择 对于那些预算有限但又需要专业财务管理的企业,可以考虑使用像**好会计**这样的免费在线工具。它提供了基础的记账、报表生成和预算控制等功能,足以满足小企业的基本需求。重要的是,这些工具通常操作简单,无需专业知识,就能快速上手。 https://h.chanjet.com/ask/988ddae0055c2a10f3.html
7.校刊《落花有生》第九期莘县国棉学校物体都有表面,下面你摸摸文具盒的各个面,有什么不一样?……面有大小,再摸摸课本封面与课桌面有什么不一样?……又分出了大小,课桌面和黑板面有什么不一样?……看来物体的表面有大小之分。(板书) 2.体验封闭图形的大小 画圆形大、正方形小,角。你能比较一下它们的大小吗?……角如果添上一道,就成了和它们...https://sxjyy.lcedu.cn/index.php?r=space/school/theme/content/view&id=821517&cid=2340209
8.找光纤的另外一端,少了红光笔,还有什么方法可以?我们也不得不承认,红光笔等工具虽然简单易用,成本低廉,但是在只能够在断网的情况下才可以使用,对于较为重要的数据中心,往往这种方式就显得效率低下不太适合https://www.lansancn.com/newsinfo/499831.html
9.配音软件操作容易好玩到飞起的有哪些,简单操作的那种?一、本人要制作广告,有什么排版软件简单容易操作的? Microsoft Publisher没用过,的确感觉是凑数的,一般非专业的要排版文件也是会用word吧InDesign是好东西,人类良心,参考Adobe的另外的良心软件PhotoshopPageMaker不更新的老物了,应该会慢慢没人使用CorelDRAW主要功能还是和Illustrator一样做矢量绘图工具吧,做海报广告还行,排...https://tool.a5.cn/article/show/41443.html
10.电工个人工具都有什么?7、维修专业电工工具:专业性比较强,门类多,就简单举例说明吧:8、维修空调冰箱要用到氟利昂充气设备、...https://www.to8to.com/ask/k7811100.html