前端面试宝典

                      

面试宝典

一、HTML和CSS 21

1. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 21

2. 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗? 21

3. Quirks模式是什么?它和Standards模式有什么区别 21

4. div+css的布局较table布局有什么优点? 22

5. imgalttitle有何异同? strongem的异同? 22

6. 你能描述一下渐进增强和优雅降级之间的不同吗? 23

7. 为什么利用多个域名来存储网站资源会更有效? 23

8. 请谈一下你对网页标准和标准制定机构重要性的理解。 24

9. 请描述一下cookiessessionStoragelocalStorage的区别? 24

10. 简述一下srchref的区别。 24

11. 知道的网页制作会用到的图片格式有哪些? 25

12. 知道什么是微格式吗?谈谈理解。在前端构建中应该考虑微格式吗? 25

13. css/js代码上线之后开发人员经常会优化性能,从用户刷新网页开始,一次js请求一般情况下有哪些地方会有缓存处理? 25

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

15. 你如何理解HTML结构的语义化? 26

16. 谈谈以前端角度出发做好SEO需要考虑什么? 27

17. 有哪项方式可以对一个DOM设置它的CSS样式? 28

18. CSS都有哪些选择器? 28

19. CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内? 29

20. 超链接访问过后hover样式就不出现的问题是什么?如何解决? 29

21. 什么是Css Hackie6,7,8hack分别是什么? 30

22. 行内元素和块级元素的具体区别是什么?行内元素的paddingmargin可设置吗? 30

23. 什么是外边距重叠?重叠的结果是什么? 31

24. rgba()opacity的透明效果有什么不同? 31

25. css中可以让文字在垂直和水平方向上重叠的两个属性是什么? 31

26. 如何垂直居中一个浮动元素? 31

27. pxem的区别。 32

28. 描述一个reset”的CSS文件并如何使用它。知道normalize.css吗?你了解他们的不同之处? 33

29. SassLESS是什么?大家为什么要使用他们? 33

30. display:nonevisibility:hidden的区别是什么? 33

31. CSSlink@import的区别是: 34

32. 简介盒子模型: 34

33. 为什么要初始化样式? 34

34. BFC是什么? 35

35. html语义化是什么? 35

36. Doctype的作用?严格模式与混杂模式的区别? 35

37. IE的双边距BUG:块级元素float后设置横向marginie6显示的margin比设置的较大。 35

38. HTMLXHTML——二者有什么区别? 35

39. html常见兼容性问题? 36

40. WEB标准以及W3C的理解与认识 36

41. 行内元素有哪些?块级元素有哪些?CSS的盒模型? 36

42. 前端页面有哪三层构成,分别是什么?作用是什么? 37

43. Doctype作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 37

44. 行内元素有哪些?块级元素有哪些? (void)元素有那些? 37

45. CSS的盒子模型? 37

46. CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些? 37

47. 如何居中div,如何居中一个浮动元素? 38

48. 浏览器的内核分别是什么?经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ? 39

49. 列出display的值,说明他们的作用。position的值, relativeabsolute定位原点是? 40

50. absolutecontaining block计算方式跟正常流有什么不同? 40

51. WEB标准以及W3C的理解与认识 41

52. css的基本语句构成是? 41

53. 浏览器标准模式和怪异模式之间的区别是什么? 41

54. CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内? 41

55. 行内元素和块级元素的具体区别是什么?行内元素的paddingmargin可设置吗? 42

56. 什么是外边距重叠?重叠的结果是什么? 42

58、描述一个"reset"的CSS文件并如何使用它。知道normalize.css吗?你了解他们的不同之处? 42

57. display属性有哪些?可以做什么? 43

58. 哪些css属性可以继承? 43

59. css优先级算法如何计算? 43

60. b标签和strong标签,i标签和em标签的区别? 43

61. 有那些行内元素、有哪些块级元素、盒模型? 43

62. 有哪些选择符,优先级的计算公式是什么?行内样式和!important哪个优先级高? 45

63. 我想让行内元素跟上面的元素距离10px,加margin-toppadding-top可以吗? 45

64. CSS的盒模型由什么组成? 45

65. 说说display属性有哪些?可以做什么? 46

66. 哪些css属性可以继承? 46

67. css优先级算法如何计算? 46

二、JS基础 46

1. javascripttypeof返回哪些数据类型 46

2. 例举3种强制类型转换和2种隐式类型转换? 47

3. split() join() 的区别 47

4. 数组方法pop() push() unshift() shift() 47

5. 事件绑定和普通事件有什么区别 47

6. IEDOM事件流的区别 48

7. IE和标准下有哪些兼容性的写法 48

8. callapply的区别 49

9. b继承a的方法 49

10. 如何阻止事件冒泡和默认事件 50

11. 添加 删除 替换 插入到某个接点的方法 50

12. javascript的本地对象,内置对象和宿主对象 50

13. window.onload document ready的区别 50

14. ”==”“===”的不同 51

15. javascript的同源策略 51

16. JavaScript是一门什么样的语言,它有哪些特点? 51

17. JavaScript的数据类型都有什么? 52

18. 已知IDInput输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架) 53

19. 希望获取到页面中所有的checkbox怎么做?(不使用第三方框架) 53

20. 设置一个已知IDDIVhtml内容为xxxx,字体颜色设置为黑色(不使用第三方框架) 53

21. 当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做? 53

22. 看下列代码输出为何?解释原因。 54

23. 看下列代码,输出什么?解释原因。 54

24. 看下列代码,输出什么?解释原因。 54

25. 看代码给答案。 56

26. 已知数组var stringArray = [ThisisBaiduCampus]Alert出”This is Baidu Campus”。 56

27. 已知有字符串foo=get-element-by-id,写一个function将其转化成驼峰表示法”getElementById”。 56

28. var numberArray = [3,6,2,4,1,5]; (考察基础API 57

29. 输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014926日,则输出2014-09-26 57

30. 将字符串{$id}{$name}”中的{$id}替换成10{$name}替换成Tony (使用正则表达式) 58

31. 为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将<, >, &, “进行转义 58

32. foo = foo||bar ,这行代码是什么意思?为什么要这样写? 59

33. 看下列代码,将会输出什么?(变量声明提升) 59

34. js实现随机选取10100之间的10个数字,存入一个数组,并排序。 60

35. 把两个数组合并,并删除第二个元素。 61

36. 怎样添加、移除、移动、复制、创建和查找节点(原生JS,实在基础,没细写每一步) 61

37. 有这样一个URLhttp://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:1, b:2, c:, d:xxx, e:undefined} 62

38. 正则表达式构造函数var reg=new RegExp(xxx)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式? 63

39. 看下面代码,给出输出结果。 63

40. 写一个function,清除字符串前后的空格。(兼容所有浏览器) 64

41. Javascriptcalleecaller的作用? 65

42. Javascript, 以下哪条语句一定会产生运行错误?      答案(  B C  ) 66

43. 以下两个变量aba+b的哪个结果是NaN?      答案(   AC  ) 66

44. var a=10; b=20; c=4;  ++b+c+a++ 以下哪个结果是正确的?答案(  B  ) 66

45. 下面的JavaScript语句中,( D )实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空 66

46. 要将页面的状态栏中显示“已经选中该文本框”,下列JavaScript语句正确的是( A 67

47. 以下哪条语句会产生运行错误:(AD 67

48. 以下哪个单词不属于javascript保留字:(B 67

49. 请选择结果为真的表达式:(C 68

50. Javascript, 如果已知HTML页面中的某标签对象的id=username”,用____document.getElementById(‘username’)___ _方法获得该标签对象。 68

51. typeof运算符返回值中有一个跟javascript数据类型不一致,它是________”function”_________ 68

52. 定义了一个变量,但没有为该变量赋值,如果alert该变量,javascript弹出的对话框中显示___undefined______ 68

53. 分析代码,得出正确的结果。 68

54. 写出函数DateDemo的返回结果,系统时间假定为今天 68

55. 写出程序运行的结果? 69

56. 阅读以下代码,请分析出结果: 69

57. 补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗? 69

58. 写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉 70

59. 完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。 70

60. 完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示 71

61. 截取字符串abcdefgefg 72

62. 列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5 72

63. 简述列举文档对象模型DOMdocument的常用的查找访问节点的方法并做简单说明 72

64. 希望获取到页面中所有的checkbox怎么做?(不使用第三方框架) 72

65. 简述创建函数的几种方式 73

66. Javascript如何实现继承? 73

67. Javascript创建对象的几种方式? 73

68. iframe的优缺点? 75

69. 请你谈谈Cookie的弊端? 75

70. js延迟加载的方式有哪些? 76

71. documen.writeinnerHTML 的区别? 76

72. 哪些操作会造成内存泄漏? 76

73. 判断一个字符串中出现次数最多的字符,统计这个次数 77

74. 写一个获取非行间样式的函数 77

75. 事件委托是什么 78

76. 闭包是什么,有什么特性,对页面有什么影响 78

77. 解释jsonp的原理,以及为什么不是真正的ajax 79

78. javascript的本地对象,内置对象和宿主对象 79

79. 字符串反转,如将 '12345678' 变成 '87654321' 79

80. 将数字 12345678 转化成 RMB形式 如: 12,345,678  79

81. 生成5个不同的随机数; 80

82. 去掉数组中重复的数字 方法一; 81

83. 阶乘函数; 82

84. window.location.search() 返回的是什么? 83

85. window.location.hash 返回的是什么? 83

86. window.location.reload() 作用? 83

87. javascript 中的垃圾回收机制? 83

88. 看题做答: 84

89. 下面输出多少? 84

90. 再来一个 85

91. a输出多少? 86

92. 看程序,写结果 87

93. JS的继承性 87

94. 精度问题: JS 精度不能精确到 0.1 所以  。。。。同时存在于值和差值中 88

95. 加减运算 88

96. 什么是同源策略? 88

97. 为什么不能定义1px左右的div容器?    89

98. 结果是什么? 89

99. 输出结果 89

100. 计算字符串字节数: 90

101. 结果是: 90

102. 声明对象,添加属性,输出属性 91

103. 匹配输入的字符:第一个必须是字母或下划线开头,长度5-20 91

104. 检测变量类型 92

105. 如何在HTML中添加事件,几种方法? 92

106. BOM对象有哪些,列举window对象? 92

107. 请问代码实现 outerHTML 93

108. JS中的简单继承 call方法! 94

109. bind(), live(), delegate()的区别 95

110. 看下列代码输出什么? 96

111. 看下列代码,输出什么? 96

112. 你如何优化自己的代码? 96

113. 请描述出下列代码运行的结果 96

114. 怎样实现两栏等高? 97

115. 使用js实现这样的效果:在文本域里输入文字时,当按下enter键时不换行,而是替换成“{{enter}},(只需要考虑在行尾按下enter键的情况). 98

116. 以下代码中end字符串什么时候输出 98

117. specify(‘hello,world’)//=>’h,e,l,l,o,w,o,r,l,d’实现specify函数 99

118. 请将一个URLsearch部分参数与值转换成一个json对象 99

119. 请用原生js实现jqueryget\post功能,以及跨域情况下 99

120. 请简要描述web前端性能需要考虑哪方面,你的优化思路是什么? 99

121. 、简述readyonlydisabled的区别 99

122. 写出3个使用this的典型应用 100

123. 请尽可能详尽的解释ajax的工作原理 100

124. 、为什么扩展javascript内置对象不是好的做法? 100

125. 什么是三元表达式?“三元”表示什么意思? 100

126. 浏览器标准模式和怪异模式之间的区别是什么? 100

127. modulo(12,5)//2  实现满足这个结果的modulo函数 101

128. HTTP协议中,GETPOST有什么区别?分别适用什么场景 ? 101

129. HTTP状态消息200 302 304 403 404 500分别表示什么 101

130. HTTP协议中,header信息里面,怎么控制页面失效时间(last-modified,cache-control,Expires分别代表什么) 101

131. HTTP雷锋议目前常用的有哪几个?KEEPALIVE从哪个版本开始出现的? 101

132. 业界常用的优化WEB页面加载速度的方法(可以分别从页面元素展现,请求连接,css,js,服务器等方面介绍) 101

133. 列举常用的web页面开发,调试以及优化工具 101

134. 解释什么是sql注入,xss漏洞 101

135. 如何判断一个js变量是数组类型 101

136. 请列举js数组类型中的常用方法 101

137. FFIE中如何阻止事件冒泡,如何获取事件对象,以及如何获取触发事件的元素 101

138. 列举常用的js框架以及分别适用的领域 102

139. js中如何实现一个map 103

140. js可否实现面向对象编程,如果可以如何实现js对象的继承 103

141. 约瑟夫环—已知n个人(以编号123…分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 103

142. 110w这个10w个数,去除2个并打乱次序,如何找出那两个数? 103

143. 如何获取对象a拥有的所有属性(可枚举的、不可枚举的,不包括继承来的属性) 103

144. 有下面这样一段HTML结构,使用css实现这样的效果: 103

145. 下面这段代码想要循环输出结果01234,请问输出结果是否正确,如果不正确,请说明为什么,并修改循环内的代码使其输出正确结果 103

146. 以下哪些是javascript的全局函数:(ABC 104

147. 关于IEwindow对象表述正确的有:(ACD 104

148. 下面正确的是  A 105

149. 错误的是 B 105

150. 不用任何插件,如何实现一个tab栏切换? 105

151. 变量的命名规范以及命名推荐 106

152. 三种弹窗的单词以及三种弹窗的功能 106

153. console.log( 8 | 1 ); 输出值是多少? 107

154. 只允许使用 + - * / Math.* ,求一个函数 y = f(x, a, b);x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,数组。 107

155. JavaScriptalert(0.4*0.2);结果是多少?和你预期的一样吗?如果不一样该如何处理? 108

156. 一个div,有几种方式得到这个divjQuery对象?

想直接获取这个divdom对象,如何获取?dom对象如何转化为jQuery对象? 108

157. 、主流浏览器内核 108

158. 如何显示/隐藏一个dom元素?请用原生的JavaScript方法实现 108

159. jQuery框架中$.ajax()的常用参数有哪些?写一个post请求并带有发送数据和返回数据的样例 109

160. JavaScript的循环语句有哪些? 109

161. 作用域-编译期执行期以及全局局部作用域问题 109

162. 闭包:下面这个ul,如何点击每一列的时候alertindex 110

163. 列出3条以上ffIE的脚本兼容问题 111

164. 如现在有一个效果,有显示用户头像、用户昵称、用户其他信息;当用户鼠标移到头像上时,会弹出用户的所有信息;如果是你,你会如何实现这个功能,请用代码实现? 111

165. 用正则表达式,写出由字母开头,其余由数字、字母、下划线组成的6~30的字符串? 111

166. 列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个 (10分) 112

167. Javascript中什么是伪数组?如何将伪数组转化为标准数组? 112

168. 写一个函数可以计算 sum(5,0,-5);输出0; sum(1,2,3,4);输出10; 112

169. 《正则》写出正确的正则表达式匹配固话号,区号3-4位,第一位为0,中横线,7-8位数字,中横线,3-4位分机号格式的固话号 113

170. 《算法》 一下A,B可任选一题作答,两题全答加分 113

171. 请写一个正则表达式:要求最短6位数,最长20位,阿拉伯数和英文字母(不区分大小写)组成 114

172. 统计1400亿之间的自然数中含有多少个1?比如1-21中,有1101121这四个自然数有51 115

173. 删除与某个字符相邻且相同的字符,比如fdaffdaaklfjklja字符串处理之后成为“fdafdaklfjklja 115

174. 请写出三种以上的Firefox有但,InternetExplorer没有的属性或者函数 115

175. 请写出一个程序,在页面加载完成后动态创建一个form表单,并在里面添加一个input对象并给它任意赋值后义post方式提交到:http://127.0.0.1/save.php 115

176. JavaScript实现冒泡排序。数据为23451837921324 116

177. 前端代码优化的方法 116

178. 下列JavaScript代码执行后,依次alert的结果是 117

179. 下列JavaScript代码执行后,iNum的值是 118

180. 输出结果是多少? 119

181. 用程序实现找到htmlid名相同的元素? 123

182. 下列JavaScript代码执行后,运行的结果是 125

183. 下列JavaScript代码执行后,依次alert的结果是 125

184. 下列JavaScript代码执行后的效果是 126

185. 下列JavaScript代码执行后的li元素的数量是 128

186. 程序中捕获异常的方法? 128

187. 将字符串{$id}{$name}”中的{$id}替换成10{$name}替换成Tony (使用正则表达式) 129

188. String对象添加一个方法,传入一个string类型的参数,然后将string的每个字符间价格空格返回,例如:addSpace(“hello world”) // -> ‘h e l l o ?w o r l d’ 129

189. 数组和字符串 129

190. 下列控制台都输出什么 131

2题: 131

3题: 132

4题: 132

5题: 132

6题: 133

7题: 133

8题: 133

9题: 134

10题: 134

11题:考点:函数声明提前 134

12题: 135

13题: 135

14题: 135

15 136

16题:以下执行会有什么输出 136

HTML5 CSS3 137

1. CSS3有哪些新特性? 137

2. html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML HTML5 137

3. 本地存储(Local Storage )和cookies(储存在用户本地终端上的数据)之间的区别是什么? 138

4. 如何实现浏览器内多个标签页之间的通信? 138

5. 你如何对网站的文件和资源进行优化? 138

6. 什么是响应式设计? 138

7. 新的 HTML5 文档类型和字符集是? 139

8. HTML5 Canvas 元素有什么用? 139

9. HTML5 存储类型有什么区别? 139

10. H5+CSS3解决下导航栏最后一项掉下来的问题 139

11. CSS3新增伪类有那些? 139

12. 请用CSS实现:一个矩形内容,有投影,有圆角,hover状态慢慢变透明。 139

13. 描述下CSS3里实现元素动画的方法 140

14. html5\CSS3有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML HTML5 140

15. 你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 一个满屏 品 字布局 如何设计? 140

16. 你能描述一下渐进增强和优雅降级之间的不同吗? 141

17. 为什么利用多个域名来存储网站资源会更有效? 141

CDN缓存更方便  141

18. 请谈一下你对网页标准和标准制定机构重要性的理解。 142

19. 请描述一下cookiessessionStoragelocalStorage的区别? 142

20. 知道css有个content属性吗?有什么作用?有什么应用? 142

21. 如何在 HTML5 页面中嵌入音频? 143

  143

22. 如何在 HTML5 页面中嵌入视频? 143

  143

23. HTML5 引入什么新的表单属性? 143

24. CSS3新增伪类有那些? 143

25. ()描述一段语义的html代码吧。 144

26. cookie在浏览器和服务器间来回传递。 sessionStoragelocalStorage区别 144

27. html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML HTML5 144

28. 如何区分: DOCTYPE声明\新增的结构元素\功能元素 145

29. 语义化的理解? 145

30. HTML5的离线储存? 145

31. 写出HTML5的文档声明方式 145

32. HTML5CSS3的新标签      145

33. 自己对标签语义化的理解 146

、移动web开发 146

1、移动端常用类库及优缺点 146

2Zepto库和JQ区别 146

Ajax 146

1Ajax 是什么? 如何创建一个Ajax 146

}else{ 146

2、同步和异步的区别? 147

3、如何解决跨域问题? 147

        jsonp

4、页面编码和被请求的资源编码如果不一致如何处理? 147

    

5简述ajax 的过程。 1473

6、阐述一下异步加载。 148

7、请解释一下 JavaScript 的同源策略。 148

8GETPOST的区别,何时使用POST 148

POST:一般用于修改服务器上的资源,对所发送的信息没有限制 148

9ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题? 148

10 Ajax的最大的特点是什么。 149

11ajax的缺点 149

12ajax请求的时候get post方式的区别 149

13、解释jsonp的原理,以及为什么不是真正的ajax 149

14、什么是AjaxJSON,它们的优缺点。 149

15http常见的状态码有那些?分别代表是什么意思? 149

16、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么? 150

17ajax请求的时候get post方式的区别 150

18ajax请求时,如何解释json数据 150

19.javascript的本地对象,内置对象和宿主对象 150

20为什么利用多个域名来存储网站资源会更有效? 151

21请说出三种减低页面加载时间的方法 151

22HTTP状态码都有那些。 151

六、JS高级 151

1 JQuery一个对象可以同时绑定多个事件,这是如何实现的? 151

2 知道什么是webkit么? 知道怎么用浏览器的各种工具来调试和debug代码么? 151

3 如何测试前端代码? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)? 152

5 简述一下 Handlebars 的基本用法? 152

6 简述一下 Handlerbars 的对模板的基本处理流程, 如何编译的?如何缓存的? 152

7 js实现千位分隔符? 152

8 检测浏览器版本版本有哪些方式? 152

9 我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获 152

10、实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括NumberStringObjectArrayBoolean)进行值复制 152

11、如何消除一个数组里面重复的元素? 154

12、小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp)。从这段描述可以得到以下对象: 154

13、下面这个ul,如何点击每一列的时候alertindex?(闭包) 155

14、编写一个JavaScript函数,输入指定类型的选择器(仅需支持idclasstagName三种简单CSS选择器,无需兼容组合选择器)可以返回匹配的DOM节点,需考虑浏览器兼容性和性能。 156

15、请评价以下代码并给出改进意见。 158

16、给String对象添加一个方法,传入一个string类型的参数,然后将string的每个字符间价格空格返回,例如: 158

17、定义一个log方法,让它可以代理console.log的方法。 159

18、在Javascript中什么是伪数组?如何将伪数组转化为标准数组? 159

19、对作用域上下文和this的理解,看下列代码: 160

20、原生JSwindow.onloadJquery$(document).ready(function(){})有什么不同?如何用原生JS实现Jqready方法? 161

21、(设计题)想实现一个对页面某个节点的拖曳?如何做?(使用原生JS 163

22、请实现如下功能 163

23、说出以下函数的作用是?空白区域应该填写什么? 164

24、 Javascript作用链域? 165

25、 谈谈This对象的理解。 165

26、 eval是做什么的? 165

27、 关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡? 165

28、 什么是闭包(closure),为什么要用它? 166

29javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么? 166

30、如何判断一个对象是否属于某个类? 166

31new操作符具体干了什么呢? 166

32、用原生JavaScript的实现过什么功能吗? 166

33Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是? 166

HasOwnProperty 167

34、对JSON的了解? 167

35js延迟加载的方式有哪些? 167

36、模块化开发怎么做? 167

37AMDModules/Asynchronous-Definition)、CMDCommon Module Definition)规范区别? 167

38requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何 缓存的?) 167

39、让你自己设计实现一个requireJS,你会怎么做? 168

40、谈一谈你对ECMAScript6的了解? 168

ES6新的语法糖,类,模块化等新特性 168

41ECMAScript6 怎么写class么,为什么会出现class这种东西? 168

42、异步加载的方式有哪些? 168

43documen.writeinnerHTML的区别? 168

44DOM操作——怎样添加、移除、移动、复制、创建和查找节点? 169

45call() .apply() 的含义和区别? 169

46、数组和对象有哪些原生方法,列举一下? 169

Array.concat( ) 连接数组 169

Object.hasOwnProperty( ) 检查属性是否被继承 170

47JS 怎么实现一个类。怎么实例化这个类 170

48JavaScript中的作用域与变量声明提升? 170

49、如何编写高性能的Javascript 170

50、那些操作会造成内存泄漏? 171

51javascript对象的几种创建方式? 171

52javascript继承的 6 种方法? 171

53eval是做什么的? 171

54JavaScript 原型,原型链 ? 有什么特点? 171

55、事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡? 172

56、简述一下SassLess,且说明区别? 172

57、关于javascriptapply()call()方法的区别? 172

58、简述一下JS中的闭包? 172

59、说说你对this的理解? 172

60、分别阐述split(),slice(),splice(),join() 173

61、事件委托是什么? 173

62、如何阻止事件冒泡和默认事件? 173

63、添加 删除 替换 插入到某个接点的方法? 173

64、你用过require.js吗?它有什么特性? 174

65、谈一下JS中的递归函数,并且用递归简单实现阶乘? 174

66、请用正则表达式写一个简单的邮箱验证。 174

67、简述一下你对web性能优化的方案? 174

68、在JS中有哪些会被隐式转换为false 174

Undefinednull、关键字falseNaN、零、空字符串 174

69、定时器setInterval有一个有名函数fn1setIntervalfn1,500)与setIntervalfn1(),500)有什么区别? 174

70、外部JS文件出现中文字符,会出现什么问题,怎么解决? 174

71、谈谈浏览器的内核,并且说一下什么是内核? 175

72JavaScript原型,原型链 ? 有什么特点? 175

73、写一个通用的事件侦听器函数 175

74、事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡? 178

75、什么是闭包(closure),为什么要用? 178

76、如何判断一个对象是否属于某个类? 178

77new操作符具体干了什么呢? 178

78JSON 的了解 179

79js延迟加载的方式有哪些 179

80、模块化怎么做? 179

81、异步加载的方式 179

82、告诉我答案是多少? 180

83JS中的call()apply()方法的区别? 180

84JqueryjQuery UI 有啥区别? 180

85jquery 中如何将数组转化为json字符串,然后再转化回来? 180

$.fn.stringifyArray = function(array) { 180

86JavaScript中的作用域与变量声明提升? 181

87、前端开发的优化问题(看雅虎14条性能优化原则)。 181

88http状态码有那些?分别代表是什么意思? 181

89、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好) 182

七、流行框架 182

1JQuery的源码看过吗?能不能简单概况一下它的实现原理? 182

2jQuery.fninit方法返回的this指的是什么对象?为什么要返回this 182

3 jquery中如何将数组转化为json字符串,然后再转化回来? 182

4 jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝? 182

5 jquery.extend 与 jquery.fn.extend的区别? 182

Jquery.extend用来扩展jQuery对象本身;jquery.fn.extend用来扩展jQuery实例 182

6、谈一下Jquery中的bind(),live(),delegate(),on()的区别? 182

7JQuery一个对象可以同时绑定多个事件,这是如何实现的? 182

10、 Jquery与jQuery UI有啥区别? 182

11、 jQuery和Zepto的区别?各自的使用场景? 183

12、 针对 jQuery 的优化方法? 183

13、 Zepto的点透问题如何解决? 183

14、知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)? 能讲出他们各自的优点和缺点么? 183

15Underscore 对哪些 JS 原生对象进行了扩展以及提供了哪些好用的函数方法? 184

Underscore的熟悉程度 184

16、使用过angular吗?angular中的过滤器是干什么用的 184

、移动APP开发 184

1、移动端最小触控区域是多大? 184

NodeJs 184

1. Node的优点和缺点提出了自己的看法: 184

2. 需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案? 184

3. Node.js的适用场景? 185

4. (如果会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering? 185

Nodejs相关概念的理解程度 185

5. 解释一下 Backbone MVC 实现方式? 185

6. 什么是前端路由”?什么时候适合使用前端路由”? “前端路由有哪些优点和缺点? 185

7. Node的优点和缺点提出了自己的看法? 185

十、前端概括性问题 186

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

2. BFC规范的理解? 186

3. 99%的网站都需要被重构是那本书上写的? 186

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

5. 加班的看法 187

6. 平时如何管理你的项目,如何设计突发大规模并发架构? 187

7. 那些操作会造成内存泄漏? 187

8. 你说你热爱前端,那么应该WEB行业的发展很关注吧? 说说最近最流行的一些东西吧? 187

Node.jsMongodbnpmMVVMMEANreactangularjs 187

9. 你有了解我们公司吗?说说你的认识? 187

10. 移动端(比如:Android IOS)怎么做好用户体验? 187

11. 你所知道的页面性能优化方法有那些? 188

12. 除了前端以外还了解什么其它技术么?你最最厉害的技能是什么? 188

13. AMDModules/Asynchronous-Definition)、CMDCommon Module Definition)规范区别? 188

14. 谈谈你认为怎样做能使项目做的更好? 188

15. 你对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样? 188

16. php中下面哪个函数可以打开一个文件,以对文件进行读和写操作? 188

17. phprmdir可以直接删除文件夹吗?该目录必须是空的,而且要有相应的权限--来自api 188

18. phpinsetempty的区别,举例说明 188

19. php$_SERVER变量中如何得到当前执行脚本路劲 189

20. 写一个php函数,要求两个日期字符串的天数差,如2012-02-05~2012-03-06的日期差数 189

21. 一个衣柜中放了许多杂乱的衬衫,如果让你去整理一下,使得更容易找到你想要的衣服;你会怎么做?请写出你的做法和思路? 189

22. 如何优化网页加载速度? 189

23. 工作流程,你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 190

24. 介绍项目经验、合作开发、独立开发。 190

25. 开发过程中遇到困难,如何解决。 190

26. 对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样? 190

 


 

一、HTML和CSS

1. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?

IE: trident内核

Firefox:gecko内核

Safari:webkit内核

Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核

Chrome:Blink(基于webkit,Google与Opera Software共同开发)

2. 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗?

 声明位于文档中的最前面的位置,处于  标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。(重点:告诉浏览器按照何种规范解析页面)

3. Quirks模式是什么?它和Standards模式有什么区别

IE6开始,引入了Standards模式,标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。

IE6之前CSS还不够成熟,所以IE5等之前的浏览器对CSS的支持很差, IE6将对CSS提供更好的支持,然而这时的问题就来了,因为有很多页面是基于旧的布局方式写的,而如果IE6 支持CSS则将令这些页面显示不正常,如何在即保证不破坏现有页面,又提供新的渲染机制呢?

在写程序时我们也会经常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤其是新功能不兼容旧功能时。遇到这种问题时的一个常见做法是增加参数和分支,即当某个参数为真时,我们就使用新功能,而如果这个参数 不为真时,就使用旧功能,这样就能不破坏原有的程序,又提供新功能。IE6也是类似这样做的,它将DTD当成了这个“参数”,因为以前的页面大家都不会去写DTD,所以IE6就假定 如果写了DTD,就意味着这个页面将采用对CSS支持更好的布局,而如果没有,则采用兼容之前的布局方式。这就是Quirks模式(怪癖模式,诡异模式,怪异模式)。

区别:

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

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

 

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

设置百分比的高度:在standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的用margin:0 auto设置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下却会失效。

(还有很多,答出什么不重要,关键是看他答出的这些是不是自己经验遇到的,还是说都是看文章看的,甚至完全不知道。)

4. div+css的布局较table布局有什么优点?

改版的时候更方便 只要改css文件。

页面加载速度更快、结构化清晰、页面显示简洁。

表现与结构相分离。

易于优化(seo)搜索引擎更友好,排名更容易靠前。

5. imgalttitle有何异同? strongem的异同?

a:alt(alt text):为不能显示图像、窗体或applets的用户代理(UA),alt属性用来指定替换文字。替换文字的语言由lang属性指定。(在IE浏览器下会在没有title时把alt当成 tool tip显示)

title(tool tip):该属性为设置该属性的元素提供建议性的信息。

strong:粗体强调标签,强调,表示内容的重要性

em:斜体强调标签,更强烈强调,表示内容的强调点

6. 你能描述一下渐进增强和优雅降级之间的不同吗?

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

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

区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

“优雅降级”观点

“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。

在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

“渐进增强”观点

“渐进增强”观点则认为应关注于内容本身。

内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。

那么问题来了。现在产品经理看到IE6,7,8网页效果相对高版本现代浏览器少了很多圆角,阴影(CSS3),要求兼容(使用图片背景,放弃CSS3),你会如何说服他?

7. 为什么利用多个域名来存储网站资源会更有效?

CDN缓存更方便

突破浏览器并发限制

节约cookie带宽

节约主域名的连接数,优化页面响应速度

防止不必要的安全问题

8. 请谈一下你对网页标准和标准制定机构重要性的理解。

网页标准和标准制定机构都是为了能让web发展的更‘健康’,开发者遵循统一的标准,降低开发难度,开发成本,SEO也会更好做,也不会因为滥用代码导致各种BUG、安全问题,最终提高网站易用性。

9. 请描述一下cookiessessionStoragelocalStorage的区别?

sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

web storage和cookie的区别

Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。

除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生。

10. 简述一下srchref的区别。

src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。

src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。

当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,如果我们在文档中添加

那么浏览器会识别该文档为css文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用link方式来加载css,而不是使用@import方式。

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

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

但是上面的那些都不是面试官想要的最后答案。面试官希望听到是Webp。(是否有关注新技术,新鲜事物)

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

在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%

12. 知道什么是微格式吗?谈谈理解。在前端构建中应该考虑微格式吗?

微格式(Microformats)是一种让机器可读的语义化XHTML词汇的集合,是结构化数据的开放标准。是为特殊应用而制定的特殊格式。

优点:将智能数据添加到网页上,让网站内容在搜索引擎结果界面可以显示额外的提示。(应用范例:豆瓣,有兴趣自行google)

13. css/js代码上线之后开发人员经常会优化性能,从用户刷新网页开始,一次js请求一般情况下有哪些地方会有缓存处理?

答案:dns缓存,cdn缓存,浏览器缓存,服务器缓存。

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

图片懒加载,在页面上的未可视区域可以添加一个滚动条事件,判断图片位置与浏览器顶端的距离与页面的距离,如果前者小于后者,优先加载。

如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先下载。

如果图片为css图片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技术。

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

如果图片展示区域小于图片的真实大小,则因在服务器端根据业务需要先行进行图片压缩,图片压缩后大小与展示一致。

15. 你如何理解HTML结构的语义化?

去掉或样式丢失的时候能让页面呈现清晰的结构:

html本身是没有表现的,我们看到例如

是粗体,字体大小2em,加粗;是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式,默认样式的目的也是为了更好的表达html的语义,可以说浏览器的默认样式和语义化的HTML结构是不可分割的。

屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页.

例如,如果你使用的含语义的标记,屏幕阅读器就会“逐个拼出”你的单词,而不是试着去对它完整发音.

PDA、手机等设备可能无法像普通电脑的浏览器一样来渲染网页(通常是因为这些设备对CSS的支持较弱)

使用语义标记可以确保这些设备以一种有意义的方式来渲染网页.理想情况下,观看设备的任务是符合设备本身的条件来渲染网页.

语义标记为设备提供了所需的相关信息,就省去了你自己去考虑所有可能的显示情况(包括现有的或者将来新的设备).例如,一部手机可以选择使一段标记了标题的文字以粗体显示.而掌上电脑可能会以比较大的字体来显示.无论哪种方式一旦你对文本标记为标题,您就可以确信读取设备将根据其自身的条件来合适地显示页面.

搜索引擎的爬虫也依赖于标记来确定上下文和各个关键字的权重

过去你可能还没有考虑搜索引擎的爬虫也是网站的“访客”,但现在它们他们实际上是极其宝贵的用户.没有他们的话,搜索引擎将无法索引你的网站,然后一般用户将很难过来访问.

你的页面是否对爬虫容易理解非常重要,因为爬虫很大程度上会忽略用于表现的标记,而只注重语义标记.

因此,如果页面文件的标题被标记,而不是,那么这个页面在搜索结果的位置可能会比较靠后.除了提升易用性外,语义标记有利于正确使用CSS和JavaScript,因为其本身提供了许多“钩钩”来应用页面的样式与行为.

SEO主要还是靠你网站的内容和外部链接的。

便于团队开发和维护

W3C给我们定了一个很好的标准,在团队中大家都遵循这个标准,可以减少很多差异化的东西,方便开发和维护,提高开发效率,甚至实现模块化开发

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

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

你需要知道一些搜索引擎的基本工作原理,各个搜索引擎之间的区别,搜索机器人(SE robot 或叫 web crawler)如何进行工作,搜索引擎如何对搜索结果进行排序等等。

Meta标签优化

主要包括主题(Title),网站描述(Description),和关键词(Keywords)。还有一些其它的隐藏文字比如Author(作者),Category(目录),Language(编码语种)等。

如何选取关键词并在网页中放置关键词

搜索就得用关键词。关键词分析和选择是SEO最重要的工作之一。首先要给网站确定主关键词(一般在5个上下),然后针对这些关键词进行优化,包括关键词密度(Density),相关度(Relavancy),突出性(Prominency)等等。

了解主要的搜索引擎

虽然搜索引擎有很多,但是对网站流量起决定作用的就那么几个。比如英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道等。不同的搜索引擎对页面的抓取和索引、排序的规则都不一样。还要了解各搜索门户和搜索引擎之间的关系,比如AOL网页搜索用的是Google的搜索技术,MSN用的是Bing的技术。

主要的互联网目录

Open Directory自身不是搜索引擎,而是一个大型的网站目录,他和搜索引擎的主要区别是网站内容的收集方式不同。目录是人工编辑的,主要收录网站主页;搜索引擎是自动收集的,除了主页外还抓取大量的内容页面。

按点击付费的搜索引擎

搜索引擎也需要生存,随着互联网商务的越来越成熟,收费的搜索引擎也开始大行其道。最典型的有Overture和百度,当然也包括Google的广告项目Google Adwords。越来越多的人通过搜索引擎的点击广告来定位商业网站,这里面也大有优化和排名的学问,你得学会用最少的广告投入获得最多的点击。

搜索引擎登录

网站做完了以后,别躺在那里等着客人从天而降。要让别人找到你,最简单的办法就是将网站提交(submit)到搜索引擎。如果你的是商业网站,主要的搜索引擎和目录都会要求你付费来获得收录(比如Yahoo要299美元),但是好消息是(至少到目前为止)最大的搜索引擎Google目前还是免费,而且它主宰着60%以上的搜索市场。

链接交换和链接广泛度(Link Popularity)

网页内容都是以超文本(Hypertext)的方式来互相链接的,网站之间也是如此。除了搜索引擎以外,人们也每天通过不同网站之间的链接来Surfing(“冲浪”)。其它网站到你的网站的链接越多,你也就会获得更多的访问量。更重要的是,你的网站的外部链接数越多,会被搜索引擎认为它的重要性越大,从而给你更高的排名。

合理的标签使用

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

外部样式表,引入一个外部css文件

内部样式表,将css代码放在  标签内部

内联样式,将css样式直接定义在 HTML 元素内部

18. CSS都有哪些选择器?

派生选择器(用HTML标签申明)

id选择器(用DOM的ID申明)

类选择器(用一个样式类名申明)

属性选择器(用DOM的属性申明,属于CSS2,IE6不支持,不常用,不知道就算了)

除了前3种基本选择器,还有一些扩展选择器,包括

后代选择器(利用空格间隔,比如div .a{  })

群组选择器(利用逗号间隔,比如p,div,#a{  })

那么问题来了,CSS选择器的优先级是怎么样定义的?

基本原则:

一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。

复杂的计算方法:

1表示派生选择器的优先级

10表示类选择器的优先级

100标示ID选择器的优先级

div.test1 .span var 优先级 1+10 +10 +1

span#xxx .songs li 优先级1+100 + 10 + 1

#xxx li 优先级 100 +1

那么问题来了,看下列代码,

标签内的文字是什么颜色的?

123

答案:red。与样式定义在文件中的先后顺序有关,即是后面的覆盖前面的,与在

中的先后关系无关。

19. CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?

最基本的:

设置display属性为none,或者设置visibility属性为hidden

技巧性:

设置宽高为0,设置透明度为0,设置z-index位置在-1000em

20. 超链接访问过后hover样式就不出现的问题是什么?如何解决?

答案:被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序: L-V-H-A(link,visited,hover,active)

21. 什么是Css Hackie6,7,8hack分别是什么?

答案:针对不同的浏览器写不同的CSS code的过程,就是CSS hack。

示例如下:

   #test{  

        width:300px;  

        height:300px;  

        background-color:blue;      /*firefox*/

        background-color:red\9;      /*all ie*/

        background-color:yellow;    /*ie8*/

        +background-color:pink;        /*ie7*/

        _background-color:orange;       /*ie6*/    } 

        :root #test { background-color:purple\9; }  /*ie9*/

@media all and (min-width:0px)

     { #test {background-color:black;} }  /*opera*/

@media screen and (-webkit-min-device-pixel-ratio:0)

{ #test {background-color:gray;} }       /*chrome and safari*/

22. 行内元素和块级元素的具体区别是什么?行内元素的paddingmargin可设置吗?

块级元素(block)特性:

总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示;

宽度(width)、高度(height)、内边距(padding)和外边距(margin)都可控制;

内联元素(inline)特性:

和相邻的内联元素在同一行;

宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变(也就是padding和margin的left和right是可以设置的),就是里面文字或图片的大小。

那么问题来了,浏览器还有默认的天生inline-block元素(拥有内在尺寸,可设置高宽,但不会自动换行),有哪些

答案:

var btn = document.getElementById('btn');

var handler = {

    id: '_eventHandler',

    exec: function(){

        alert(this.id);

    }

}

btn.addEventListener('click', handler.exec);

答案:”btn”

183. 下列JavaScript代码执行后,依次alert的结果是

var obj = {proto: {a:1,b:2}};

function F(){};

F.prototype = obj.proto;

var f = new F();

obj.proto.c = 3;

obj.proto = {a:-1, b:-2};

alert(f.a);

alert(f.c);

delete F.prototype['a'];

alert(f.a);

alert(obj.proto.a);

答案:

1

3

undefined

-1

 

184. 下列JavaScript代码执行后的效果是

        

  • item
  •     

  • item
  •     

  • item
  •     

  • item
  •     

  • item

var items = document.querySelectorAll('#list>li');

for(var i = 0;i < items.length; i++){

     setTimeout(function(){

           items[i].style.backgroundColor = '#fee';

    }, 5);

}

答案:报错,因为i一直等于5,items[i]获取不到元素

185. 下列JavaScript代码执行后的li元素的数量是

        

  • Item
  •     

  •     

  •     

  • Item
  •     

  • Item

 

var items = document.getElementsByTagName('li');

for(var i = 0; i< items.length; i++){

    if(items[i].innerHTML == ''){

        items[i].parentNode.removeChild(items[i]);

    }

}

186. 程序中捕获异常的方法?

window.error

try{}catch(){}finally{}

187. 将字符串{$id}{$name}”中的{$id}替换成10{$name}替换成Tony (使用正则表达式)

答案:'{$id}{$id}_{$name}'
        .replace(/{\$id}/g,'10')
        .replace(/{\$name}/g,'Tony')

 

188. String对象添加一个方法,传入一个string类型的参数,然后将string的每个字符间价格空格返回,例如:addSpace(“hello world”) // -> ‘h e l l o ?w o r l d’

String.prototype.spacify = function(){

return this.split('').join(' ');

};

189. 数组和字符串

输出结果:

答案:lashou 拉手 lashou 1,2,3 1,2,3,4 1,2,3,4

190. 下列控制台都输出什么

1题:

function setName(){

name="张三";

}

setName();

console.log(name);

答案:"张三"

2题:

//考点:1、变量声明提升 2、变量搜索机制

var a=1;

function test(){

console.log(a);

var a=1;

}

test();

答案:undefined

3题:

var b=2;

function test2(){

window.b=3;

console.log(b);

}

test2();

答案:3

4题:

c=5;//声明一个全局变量c

function test3(){

window.c=3;

console.log(c); //答案:undefined,原因:由于此时的c是一个局部变量c,并且没有被赋值

var c;

console.log(window.c);//答案:3,原因:这里的c就是一个全局变量c

}

test3();

5题:

var arr = [];

arr[0]  = 'a';

arr[1]  = 'b';

arr[10] = 'c';

alert(arr.length); //答案:11

console.log(arr[5]); //答案:undefined

6题:

var a=1;

console.log(a++); //答案:1

console.log(++a); //答案:3

7题:

console.log(null==undefined); //答案:true

console.log("1"==1); //答案:true,因为会将数字1先转换为字符串1

console.log("1"===1); //答案:false,因为数据类型不一致

8题:

typeof 1; "number"

typeof "hello"; "string"

typeof /[0-9]/; "object"

typeof {}; "object"

typeof null; "object"

typeof undefined; "undefined"

typeof [1,2,3]; "object"

typeof function(){}; //"function"

9题:

parseInt(3.14); //3

parseFloat("3asdf"); //3

parseInt("1.23abc456");

parseInt(true);//"true" NaN

10题:

//考点:函数声明提前

function bar() {

    return foo;

    foo = 10;

    function foo() {}

    //var foo = 11;

}

alert(typeof bar());//"function"

11题:考点:函数声明提前

var foo = 1;

function bar() {

foo = 10;

return;

function foo() {}

}

bar();

alert(foo);//答案:1

12题:

console.log(a);//是一个函数

var a = 3;

function a(){}

console.log(a);////3

13题:

//考点:对arguments的操作

function foo(a) {

    arguments[0] = 2;

    alert(a);//答案:2,因为:a、arguments是对实参的访问,b、通过arguments[i]可以修改指定实参的值

}

foo(1);

14题:

function foo(a) {

    alert(arguments.length);//答案:3,因为arguments是对实参的访问

}

foo(1, 2, 3);

15

bar();//报错

var foo = function bar(name) {

console.log("hello"+name);

console.log(bar);

};

//alert(typeof bar);

foo("world");//"hello"

console.log(bar);//undefined

console.log(foo.toString());

bar();//报错

 

16:以下执行会有什么输出

function test(){

console.log("test函数");

}

setTimeout(function(){

console.log("定时器回调函数");

}, 0)

test();

结果:

test函数

定时器回调函数

 

HTML5 CSS3

1. CSS3有哪些新特性?

1. CSS3实现圆角(border-radius),阴影(box-shadow),

2. 对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)

3.transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜

4. 增加了更多的CSS选择器  多背景 rgba

5. 在CSS3中唯一引入的伪元素是 ::selection.

6. 媒体查询,多栏布局

7. border-image

2. html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML HTML5

新特性:

1. 拖拽释放(Drag and drop) API

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

3. 音频、视频API(audio,video)

4. 画布(Canvas) API

5. 地理(Geolocation) API

6. 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

7. sessionStorage 的数据在浏览器关闭后自动删除

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

9. 新的技术webworker, websocket, Geolocation

移除的元素:

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

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

支持HTML5新标签:

1. IE8/IE7/IE6支持通过 document.createElement 方法产生的标签,可以利用这一特性让这些浏览器支持 HTML5 新标签,浏览器支持新标签后,还需要添加标签默认的样式(当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架):

如何区分:

DOCTYPE声明新增的结构元素、功能元素

3. 本地存储(Local Storage )和cookies(储存在用户本地终端上的数据)之间的区别是什么?

Cookies:服务器和客户端都可以访问;大小只有4KB左右;有有效期,过期后将会删除;

本地存储:只有本地浏览器端可访问数据,服务器不能访问本地存储直到故意通过POST或者GET的通道发送到服务器;每个域5MB;没有过期数据,它将保留知道用户从浏览器清除或者使用Javascript代码移除

4. 如何实现浏览器内多个标签页之间的通信?

调用 localstorge、cookies 等本地存储方式

5. 你如何对网站的文件和资源进行优化?

文件合并

文件最小化/文件压缩

使用CDN托管

缓存的使用

6. 什么是响应式设计?

它是关于网页制作的过程中让不同的设备有不同的尺寸和不同的功能。响应式设计是让所有的人能在这些设备上让网站运行正常

7. 新的 HTML5 文档类型和字符集是?

答:HTML5文档类型:

    HTML5使用的编码UTF-8>

8. HTML5 Canvas 元素有什么用?

答:Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作。

9. HTML5 存储类型有什么区别?

Media APIText Track APIApplication Cache APIUser InteractionData Transfer APICommand APIConstraint Validation APIHistory API

10. H5+CSS3解决下导航栏最后一项掉下来的问题

11. CSS3新增伪类有那些?

    p:first-of-type 选择属于其父元素的首个

元素的每个

元素。

    p:last-of-type  选择属于其父元素的最后

元素的每个

元素。

    p:only-of-type  选择属于其父元素唯一的

元素的每个

元素。

    p:only-child    选择属于其父元素的唯一子元素的每个

元素。

    p:nth-child(2)  选择属于其父元素的第二个子元素的每个

元素。

    :enabled、:disabled 控制表单控件的禁用状态。

:checked,单选框或复选框被选中。

12. 请用CSS实现:一个矩形内容,有投影,有圆角,hover状态慢慢变透明。

css属性的熟练程度和实践经验

13. 描述下CSS3里实现元素动画的方法

动画相关属性的熟悉程度

14. html5\CSS3有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML HTML5

HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,地理定位等功能的增加。

* 绘画 canvas 元素

  用于媒介回放的 video 和 audio 元素

  本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

  sessionStorage 的数据在浏览器关闭后自动删除

  语意化更好的内容元素,比如 article、footer、header、nav、section

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

  CSS3实现圆角,阴影,对文字加特效,增加了更多的CSS选择器  多背景 rgba

  新的技术webworker, websockt, Geolocation

移除的元素

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

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

* 是IE8/IE7/IE6支持通过document.createElement方法产生的标签,

  可以利用这一特性让这些浏览器支持HTML5新标签,

  浏览器支持新标签后,还需要添加标签默认的样式:

* 当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架

15. 你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 一个满屏 品 字布局 如何设计?

* 首先划分成头部、body、脚部;。。。。。

* 实现效果图是最基本的工作,精确到2px;

  与设计师,产品经理的沟通和项目的参与

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

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

  针对服务器的优化、拥抱 HTML5。

16. 你能描述一下渐进增强和优雅降级之间的不同吗?

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

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

 区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。 

“优雅降级”观点

“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。

  在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

“渐进增强”观点

“渐进增强”观点则认为应关注于内容本身。

  内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。

 

  那么问题了。现在产品经理看到IE6,7,8网页效果相对高版本现代浏览器少了很多圆角,阴影(CSS3),要求兼容(使用图片背景,放弃CSS3),你会如何说服他?

17. 为什么利用多个域名来存储网站资源会更有效?

CDN缓存更方便 

突破浏览器并发限制 

节约cookie带宽 

节约主域名的连接数,优化页面响应速度 

防止不必要的安全问题

18. 请谈一下你对网页标准和标准制定机构重要性的理解。

  (无标准答案)网页标准和标准制定机构都是为了能让web发展的更‘健康’,开发者遵循统一的标准,降低开发难度,开发成本,SEO也会更好做,也不会因为滥用代码导致各种BUG、安全问题,最终提高网站易用性。

 

19. 请描述一下cookiessessionStoragelocalStorage的区别?

sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

web storagecookie的区别

Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。

除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookiegetCookie但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地存储数据而生。

20. 知道css有个content属性吗?有什么作用?有什么应用?

知道。css的content属性专门应用在 before/after 伪元素上,用来插入生成内容。最常见的应用是利用伪类清除浮动。

//一种常见利用伪类清除浮动的代码

.clearfix:after {

    content:"."; //这里利用到了content属性

    display:block;

    height:0;

    visibility:hidden;

    clear:both; }

.clearfix {

    *zoom:1;

}

after伪元素通过 content 在元素的后面生成了内容为一个点的块级素,再利用clear:both清除浮动。

  那么问题继续还有,知道css计数器(序列数字字符自动递增)吗?如何通过css content属性实现css计数器?

答案:css计数器是通过设置counter-reset 、counter-increment 两个属性 、及 counter()/counters()一个方法配合after / before 伪类实现。 

21. 如何在 HTML5 页面中嵌入音频?

HTML 5 包含嵌入音频文件的标准方式,支持的格式包括 MP3、Wav 和 Ogg:

 

   

   Your browser does'nt support audio embedding feature. 

22. 如何在 HTML5 页面中嵌入视频?

和音频一样,HTML5 定义了嵌入视频的标准方法,支持的格式包括:MP4、WebM 和 Ogg:

 

   

   Your browser does'nt support video embedding feature. 

 

23. HTML5 引入什么新的表单属性?

Datalist   datetime   output   keygen  date  month  week  time  number   range   emailurl

24. CSS3新增伪类有那些?

 p:first-of-type 选择属于其父元素的首个

元素的每个

元素。

    p:last-of-type  选择属于其父元素的最后

元素的每个

元素。

    p:only-of-type  选择属于其父元素唯一的

元素的每个

元素。

    p:only-child    选择属于其父元素的唯一子元素的每个

元素。

    p:nth-child(2)  选择属于其父元素的第二个子元素的每个

元素。

    :enabled、:disabled 控制表单控件的禁用状态。

:checked,单选框或复选框被选中。

25. ()描述一段语义的html代码吧。

HTML5中新增加的很多标签(如:

你可能感兴趣的:(面试)