1- # front-end-Interview-Questions
2- 史上最全 前端开发面试问题及答案整理
3- 本文旨在加深对前端知识点的理解,资料来源于网络,由本人收集整理。
4-
5- 本文旨在加深对前端知识点的理解,资料来源于网络,由本人(博客):http://segmentfault.com/u/trigkit4 收集整理。
1+ 本文旨在加深对前端知识点的理解,资料来源于网络,由本人(博客:http://segmentfault.com/u/trigkit4)收集整理。
62
73前端开发面试知识点大纲:
84------------
@@ -112,13 +108,13 @@ CSS 相关问题
112108 2.类选择器(.myclassname)
113109 3.标签选择器(div, h1, p)
114110 4.相邻选择器(h1 + p)
115- 5.子选择器(ul < li)
111+ 5.子选择器(ul > li)
116112 6.后代选择器(li a)
117113 7.通配符选择器( * )
118114 8.属性选择器(a[rel = "external"])
119- 9.伪类选择器(a: hover, li: nth - child)
115+ 9.伪类选择器(a: hover, li:nth- child)
120116
121- * 可继承的样式: font-size font-family color, UL LI DL DD DT ;
117+ * 可继承的样式: font-size font-family color, text-indent ;
122118
123119 * 不可继承的样式:border padding margin width height ;
124120
@@ -131,7 +127,7 @@ CSS 相关问题
131127
132128 !important > id > class > tag
133129
134- important 比 内联优先级高
130+ important 比 内联优先级高,但内联比 id 要高
135131
136132 CSS3新增伪类举例:
137133
@@ -174,7 +170,7 @@ CSS 相关问题
174170
175171 如果权重相同,则最后定义的样式会起作用,但是应该避免这种情况出现
176172
177- ###列出display的值,说明他们的作用。position的值, relative和absolute定位原点是 ?
173+ ###列出display的值,说明他们的作用。position的值, relative和absolute分别是相对于谁进行定位的 ?
178174
179175 1.
180176 block 象块类型元素一样显示。
@@ -184,13 +180,13 @@ CSS 相关问题
184180
185181 2.
186182 *absolute
187- 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位 。
183+ 生成绝对定位的元素,相对于 static 定位以外的第一个祖先元素进行定位 。
188184
189185 *fixed (老IE不支持)
190186 生成绝对定位的元素,相对于浏览器窗口进行定位。
191187
192188 *relative
193- 生成相对定位的元素,相对于其正常位置进行定位 。
189+ 生成相对定位的元素,相对于其在普通流中的位置进行定位 。
194190
195191 * static 默认值。没有定位,元素出现在正常的流中
196192 *(忽略 top, bottom, left, right z-index 声明)。
@@ -236,12 +232,12 @@ CSS 相关问题
236232
237233
238234###对BFC规范的理解?
239- BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
240- (W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关 系和相互作用 。)
235+ BFC,块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个BFC中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的margin会发生折叠。
236+ (W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用 。)
241237
242238###解释下 CSS sprites,以及你要如何在页面或网站中使用它。
243239
244- CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。
240+ CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限制,一般浏览器都是6个。对于未来而言,就不需要这样做了,因为有了`http2`。
245241
246242
247243
@@ -257,7 +253,7 @@ html部分
257253
258254###Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
259255
260- (1)、<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档 。
256+ (1)、<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前。告知浏览器以何种模式来渲染文档 。
261257
262258 (2)、严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行。
263259
@@ -289,7 +285,7 @@ HTML与XHTML——二者有什么区别
289285常见兼容性问题?
290286--------
291287
292- * png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.
288+ * png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理.
293289
294290 * 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
295291
@@ -329,7 +325,7 @@ HTML与XHTML——二者有什么区别
329325 * 超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序:
330326 L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
331327
332- * 怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。
328+ * 怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。现在可以使用[html5](http://www.w3.org/TR/html5/single-page.html)推荐的写法:`<doctype html>`
333329
334330 * 上下margin重合问题
335331 ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,但是margin-top和margin-bottom却会发生重合。
@@ -621,8 +617,6 @@ JavaScript中的作用域与变量声明提升?
621617
622618###常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
623619
624- ###页面重构怎么操作?
625-
626620###列举IE 与其他浏览器不一样的特性?
627621
628622###99 %的网站都需要被重构是那本书上写的?
@@ -652,7 +646,7 @@ JavaScript中的作用域与变量声明提升?
652646###除了前端以外还了解什么其它技术么?你最最厉害的技能是什么?
653647
654648###你常用的开发工具是什么,为什么?
655- ###数组去重?
649+
656650###对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
657651
658652 前端是最贴近用户的程序员,比后端、数据库、产品经理、运营、安全都近。
@@ -834,6 +828,7 @@ grunt, YUI compressor 和 google clojure用来进行代码压缩的用法。
834828 //压缩CSS
835829 java -jar yuicompressor-2.4.2.jar --type css --charset utf-8 -v src.css > packed.css
836830
831+ 详情请见:[ 你需要掌握的前端代码性能优化工具] [ 10 ]
837832
838833Flash、Ajax各自的优缺点,在使用中如何取舍?
839834--------------------------
@@ -940,12 +935,12 @@ GET和POST的区别,何时使用POST?
940935
941936闭包相关问题?
942937-------
943- 详情请见:[ 详解js闭包] [ 10 ]
938+ 详情请见:[ 详解js闭包] [ 11 ]
944939
945940
946941js事件处理程序问题?
947942-----------
948- 详情请见:[ JavaScript学习总结(九)事件详解] [ 11 ]
943+ 详情请见:[ JavaScript学习总结(九)事件详解] [ 12 ]
949944
950945
951946
@@ -1070,11 +1065,11 @@ WEB应用从服务器主动推送Data到客户端有那些方式?
10701065
10711066 1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。
10721067 2. 事件处理机制:IE是事件冒泡、firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件。;
1073- 3. ev.stopPropagation();
1068+ 3. ev.stopPropagation();注意旧ie的方法 ev.cancelBubble = true;
10741069
10751070ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?
10761071--------------------------------------
1077- 详情请见:[ JavaScript学习总结(七)Ajax和Http状态字] [ 12 ]
1072+ 详情请见:[ JavaScript学习总结(七)Ajax和Http状态字] [ 13 ]
10781073
10791074
10801075
@@ -1131,28 +1126,92 @@ js对象的深度克隆
11311126
11321127AMD和CMD 规范的区别?
11331128--------------
1134- 详情请见:[ 详解JavaScript模块化开发] [ 13 ]
1129+ 详情请见:[ 详解JavaScript模块化开发] [ 14 ]
11351130
1136-
1131+ 网站重构的理解?
1132+ --------
11371133
1134+ 网站重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改变UI的情况下,对网站进行优化,在扩展的同时保持一致的UI。
1135+
1136+ 对于传统的网站来说重构通常是:
1137+
1138+ 表格(table)布局改为DIV+CSS
1139+ 使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
1140+ 对于移动平台的优化
1141+ 针对于SEO进行优化
1142+ 深层次的网站重构应该考虑的方面
1143+
1144+ 减少代码间的耦合
1145+ 让代码保持弹性
1146+ 严格按规范编写代码
1147+ 设计可扩展的API
1148+ 代替旧有的框架、语言(如VB)
1149+ 增强用户体验
1150+ 通常来说对于速度的优化也包含在重构中
1151+
1152+ 压缩JS、CSS、image等前端资源(通常是由服务器来解决)
1153+ 程序的性能优化(如数据读写)
1154+ 采用CDN来加速资源加载
1155+ 对于JS DOM的优化
1156+ HTTP服务器的文件缓存
11381157
1139- [ 1 ] : http://segmentfault.com/blog/trigkit4/1190000000718840
1140- [ 2 ] : http://segmentfault.com/blog/trigkit4/1190000000660786#articleHeader15
1141- [ 3 ] : http://segmentfault.com/blog/trigkit4/1190000000687844
1142- [ 4 ] : http://segmentfault.com/blog/trigkit4/1190000000758184#articleHeader5
1143- [ 5 ] : http://segmentfault.com/blog/trigkit4/1190000000800711#articleHeader30
1144- [ 6 ] : http://segmentfault.com/blog/trigkit4/1190000000656717
1145- [ 7 ] : http://segmentfault.com/blog/trigkit4/1190000000697254
1146- [ 8 ] : http://segmentfault.com/blog/trigkit4/1190000002440502
1147- [ 9 ] : http://segmentfault.com/blog/trigkit4/1190000000691919
1148- [ 10 ] : http://segmentfault.com/blog/trigkit4/1190000000652891
1149- [ 11 ] : http://segmentfault.com/blog/trigkit4/1190000002174034
1150- [ 12 ] : http://segmentfault.com/blog/trigkit4/1190000000691919
1151- [ 13 ] : http://segmentfault.com/blog/trigkit4/1190000000733959
1158+ 如何获取UA?
1159+ -------
11521160
1153-
1161+ <script>
1162+ function whatBrowser() {
1163+ document.Browser.Name.value=navigator.appName;
1164+ document.Browser.Version.value=navigator.appVersion;
1165+ document.Browser.Code.value=navigator.appCodeName;
1166+ document.Browser.Agent.value=navigator.userAgent;
1167+ }
1168+ </script>
1169+
1170+ js数组去重
1171+ ------
1172+ 以下是数组去重的三种方法:
1173+
1174+ Array.prototype.unique1 = function () {
1175+ var n = []; //一个新的临时数组
1176+ for (var i = 0; i < this.length; i++) //遍历当前数组
1177+ {
1178+ //如果当前数组的第i已经保存进了临时数组,那么跳过,
1179+ //否则把当前项push到临时数组里面
1180+ if (n.indexOf(this[i]) == -1) n.push(this[i]);
1181+ }
1182+ return n;
1183+ }
1184+
1185+ Array.prototype.unique2 = function()
1186+ {
1187+ var n = {},r=[]; //n为hash表,r为临时数组
1188+ for(var i = 0; i < this.length; i++) //遍历当前数组
1189+ {
1190+ if (!n[this[i]]) //如果hash表中没有当前项
1191+ {
1192+ n[this[i]] = true; //存入hash表
1193+ r.push(this[i]); //把当前数组的当前项push到临时数组里面
1194+ }
1195+ }
1196+ return r;
1197+ }
1198+
1199+ Array.prototype.unique3 = function()
1200+ {
1201+ var n = [this[0]]; //结果数组
1202+ for(var i = 1; i < this.length; i++) //从第二项开始遍历
1203+ {
1204+ //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
1205+ //那么表示第i项是重复的,忽略掉。否则存入结果数组
1206+ if (this.indexOf(this[i]) == i) n.push(this[i]);
1207+ }
1208+ return n;
1209+ }
1210+
1211+
1212+
1213+ > 我的微博:http://weibo.com/hwax1993 ,欢迎关注
11541214
1155- > 我的微博:http://weibo.com/hwax1993 ,欢迎关注
11561215
11571216 [ 1 ] : http://segmentfault.com/blog/trigkit4/1190000000718840
11581217 [ 2 ] : http://segmentfault.com/blog/trigkit4/1190000000660786#articleHeader15
@@ -1163,7 +1222,8 @@ AMD和CMD 规范的区别?
11631222 [ 7 ] : http://segmentfault.com/blog/trigkit4/1190000000697254
11641223 [ 8 ] : http://segmentfault.com/blog/trigkit4/1190000002440502
11651224 [ 9 ] : http://segmentfault.com/blog/trigkit4/1190000000691919
1166- [ 10 ] : http://segmentfault.com/blog/trigkit4/1190000000652891
1167- [ 11 ] : http://segmentfault.com/blog/trigkit4/1190000002174034
1168- [ 12 ] : http://segmentfault.com/blog/trigkit4/1190000000691919
1169- [ 13 ] : http://segmentfault.com/blog/trigkit4/1190000000733959
1225+ [ 10 ] : http://segmentfault.com/blog/trigkit4/1190000002585760
1226+ [ 11 ] : http://segmentfault.com/blog/trigkit4/1190000000652891
1227+ [ 12 ] : http://segmentfault.com/blog/trigkit4/1190000002174034
1228+ [ 13 ] : http://segmentfault.com/blog/trigkit4/1190000000691919
1229+ [ 14 ] : http://segmentfault.com/blog/trigkit4/1190000000733959
0 commit comments