搜集的前端面试题,慢慢补充完答案

1、举个例子,以下几个的异同。

line-height:15px;
line-height:150%;
line-height:1.5;
line-height:1.5em;
答案:15px明确的设置行高是15px,150%是当前元素文字大小*150%,既是设置的行高,1.5也是当前元素文字大小*1.5,即为行高,同理也适用于1.5em。

2、css盒子模型

答案:在盒子模型中,页面上所有元素被看作一个一个盒子,他们占据一定的页面空间,每一个盒子都包括width、padding、border、margin四个部分,盒子模型分为标准盒模型和IE盒模型,大部分浏览器都是标准盒模型,只有ie56是IE盒模型,在标准盒模型模型中给元素设置width和height并不包括padding和border,但在IE盒模型里面width和height是包括padding和border的,现在想要浏览器兼容这些样式,解决方案是回避这些问题,尽量不给元素设置内边距padding,而是通过父元素或子元素的padding与margin来实现。

3、页面加载如何优化

答案:

4、url->页面加载完成的整个流程

答案:

5、优雅降级与渐进增强

6、xhtml是什么

7、ajax的优缺点

8、js组成部分

9、解释一下变量声明提升

10、如何跨域访问

11、js如何判断一个数组

12、阐述一下js严格模式

13、负载均衡你了解吗?阐述一下

14、linux环境你熟悉吗?说一些你用过的指令

15、webpack了解吗?用过哪些功能

16、对css预编译器有所了解吗?

17、完整概述一个你感觉最你自己做过最棒的项目

18、你在这个项目中用到了express,那你能说说express的特点是什么吗?

19、有考虑过如何对项目进行优化吗?从那方面入手?

20、你在昨天/本周学到了什么?

21、编写代码的哪些方面能够使你兴奋或感兴趣?

22、你最近遇到过什么技术挑战?你是如何解决的?

23、在制作一个网页应用或网站的过程中,你是如何考虑其 UI、安全性、高性能、SEO、可维护性以及技术因素的?

24、请谈谈你喜欢的开发环境。

25、你最熟悉哪一套版本控制系统?

26、你能描述当你制作一个网页的工作流程吗?

27、假若你有 5 个不同的样式文件 (stylesheets), 整合进网站的最好方式是?

28、你能描述渐进增强 (progressive enhancement) 和优雅降级 (graceful degradation) 之间的不同吗?

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

30、浏览器同一时间可以从一个域名下载多少资源?

31、有什么例外吗?

32、请说出三种减少页面加载时间的方法。(加载时间指感知的时间或者实际加载时间)

33、如果你参与到一个项目中,发现他们使用 Tab 来缩进代码,但是你喜欢空格,你会怎么做?

34、请写一个简单的幻灯效果页面。

35、如果今年你打算熟练掌握一项新技术,那会是什么?

36、请谈谈你对网页标准和标准制定机构重要性的理解。

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

38、请解释什么是 ARIA 和屏幕阅读器 (screenreaders),以及如何使网站实现无障碍访问 (accessible)。

39、请解释 CSS 动画和 JavaScript 动画的优缺点。

40、什么是跨域资源共享 (CORS)?它用于解决什么问题?

41、doctype(文档类型) 的作用是什么?

42、浏览器标准模式 (standards mode) 、几乎标准模式(almost standards mode)和怪异模式 (quirks mode) 之间的区别是什么?

43、HTML 和 XHTML 有什么区别?

44、如果页面使用 'application/xhtml+xml' 会有什么问题吗?

45、如果网页内容需要支持多语言,你会怎么做?

46、在设计和开发多语言网站时,有哪些问题你必须要考虑?

47、使用 data- 属性的好处是什么?

48、如果把 HTML5 看作做一个开放平台,那它的构建模块有哪些?

49、请描述 cookiessessionStorage 和 localStorage 的区别。

50、请解释 <script><script async> 和 <script defer> 的区别。

51、为什么通常推荐将 CSS <link> 放置在 <head></head> 之间,而将 JS <script> 放置在 </body> 之前?你知道有哪些例外吗?

52、什么是渐进式渲染 (progressive rendering)?

53、你用过哪些不同的 HTML 模板语言?

54、CSS 中类 (classes) 和 ID 的区别。

55、请问 "resetting" 和 "normalizing" CSS 之间的区别?你会如何选择,为什么?

56、请解释浮动 (Floats) 及其工作原理。

57、描述z-index和叠加上下文是如何形成的。

58、请描述 BFC(Block Formatting Context) 及其如何工作。

59、列举不同的清除浮动的技巧,并指出它们各自适用的使用场景。

60、请解释 CSS sprites,以及你要如何在页面或网站中实现它。

61、你最喜欢的图片替换方法是什么,你如何选择使用。

62、你会如何解决特定浏览器的样式问题?

63、如何为有功能限制的浏览器提供网页?

64、你会使用哪些技术和处理方法?

65、有哪些的隐藏内容的方法 (如果同时还要保证屏幕阅读器可用呢)?

66、你用过栅格系统 (grid system) 吗?如果使用过,你最喜欢哪种?

67、你用过媒体查询,或针对移动端的布局/CSS 吗?

68、你熟悉 SVG 样式的书写吗?

69、如何优化网页的打印样式?

70、在书写高效 CSS 时会有哪些问题需要考虑?

71、使用 CSS 预处理器的优缺点有哪些?

72、请描述你曾经使用过的 CSS 预处理器的优缺点。

73、如果设计中使用了非标准的字体,你该如何去实现?

74、请解释浏览器是如何判断元素是否匹配某个 CSS 选择器?

75、请描述伪元素 (pseudo-elements) 及其用途。

76、请解释你对盒模型的理解,以及如何在 CSS 中告诉浏览器使用不同的盒模型来渲染你的布局。

77、请解释 * { box-sizing: border-box; } 的作用, 并且说明使用它有什么好处?

78、请罗列出你所知道的 display 属性的全部值

79、请解释 inline 和 inline-block 的区别?

80、请解释 relative、fixed、absolute 和 static 元素的区别

81、CSS 中字母 'C' 的意思是叠层 (Cascading)。请问在确定样式的过程中优先级是如何决定的 (请举例)?如何有效使用此系统?

82、你在开发或生产环境中使用过哪些 CSS 框架?你觉得应该如何改善他们?

83、请问你有尝试过 CSS Flexbox 或者 Grid 标准规格吗?

84、为什么响应式设计 (responsive design) 和自适应设计 (adaptive design) 不同?

85、你有兼容 retina 屏幕的经历吗?如果有,在什么地方使用了何种技术?

86、请问为何要使用 translate() 而非 absolute positioning,或反之的理由?为什么?

87、请解释事件代理 (event delegation)。

88、请解释 JavaScript 中 this 是如何工作的。

89、请解释原型继承 (prototypal inheritance) 的原理。

90、你怎么看 AMD vs. CommonJS?

91、请解释为什么接下来这段代码不是 IIFE (立即调用的函数表达式):function foo(){ }();.

92、要做哪些改动使它变成 IIFE?

93、描述以下变量的区别:nullundefined 或 undeclared

94、该如何检测它们?

95、什么是闭包 (closure),如何使用它,为什么要使用它?

96、请举出一个匿名函数的典型用例?

97、你是如何组织自己的代码?是使用模块模式,还是使用经典继承的方法?

98、请指出 JavaScript 宿主对象 (host objects) 和原生对象 (native objects) 的区别?

99、请指出以下代码的区别:function Person(){}var person = Person()var person = new Person()

100、.call 和 .apply 的区别是什么?

101、请解释 Function.prototype.bind

102、在什么时候你会使用 document.write()

103、请指出浏览器特性检测,特性推断和浏览器 UA 字符串嗅探的区别?

104、请尽可能详尽的解释 Ajax 的工作原理。

105、使用 Ajax 都有哪些优劣?

106、请解释 JSONP 的工作原理,以及它为什么不是真正的 Ajax。

107、你使用过 JavaScript 模板系统吗?

108、如有使用过,请谈谈你都使用过哪些库?

109、请解释变量声明提升 (hoisting)。

110、请描述事件冒泡机制 (event bubbling)。

111、"attribute" 和 "property" 的区别是什么?

112、为什么扩展 JavaScript 内置对象不是好的做法?

113、请指出 document load 和 document DOMContentLoaded 两个事件的区别。114、== 和 === 有什么不同?

114、请解释 JavaScript 的同源策略 (same-origin policy)。

115、如何实现下列代码:

[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]

116、什么是三元表达式 (Ternary expression)?“三元 (Ternary)” 表示什么意思?

117、什么是 "use strict"; ? 使用它的好处和坏处分别是什么?

118、请实现一个遍历至 100 的 for loop 循环,在能被 3 整除时输出 "fizz",在能被 5 整除时输出 "buzz",在能同时被 3和 5 整除时输出 "fizzbuzz"。

119、为何通常会认为保留网站现有的全局作用域 (global scope) 不去改变它,是较好的选择?

120、为何你会使用 load 之类的事件 (event)?此事件有缺点吗?你是否知道其他替代品,以及为何使用它们?

121、请解释什么是单页应用 (single page app), 以及如何使其对搜索引擎友好 (SEO-friendly)。

122、你使用过 Promises 及其 polyfills 吗? 请写出 Promise 的基本用法(ES6)。

123、使用 Promises 而非回调 (callbacks) 优缺点是什么?

124、使用一种可以编译成 JavaScript 的语言来写 JavaScript 代码有哪些优缺点?

125、你使用哪些工具和技术来调试 JavaScript 代码?

126、你会使用怎样的语言结构来遍历对象属性 (object properties) 和数组内容?

127、请解释可变 (mutable) 和不变 (immutable) 对象的区别。

128、请举出 JavaScript 中一个不变性对象 (immutable object) 的例子?

129、不变性 (immutability) 有哪些优缺点?

130、如何用你自己的代码来实现不变性 (immutability)?

131、请解释同步 (synchronous) 和异步 (asynchronous) 函数的区别。

132、什么是事件循环 (event loop)?

133、请问调用栈 (call stack) 和任务队列 (task queue) 的区别是什么?

134、解释 function foo() {} 与 var foo = function() {} 用法的区别

135、对代码进行测试的有什么优缺点?

136、你会用什么工具测试你的代码功能?

137、单元测试与功能/集成测试的区别是什么?

138、代码风格 linting 工具的作用是什么?

139、你会用什么工具来查找代码中的性能问题?

140、你会用什么方式来增强网站的页面滚动效能?

141、请解释 layout、painting 和 compositing 的区别。

142、为什么传统上利用多个域名来提供网站资源会更有效?

143、请尽可能完整得描述从输入 URL 到整个网页加载完毕及显示在屏幕上的整个流程。

144、Long-Polling、Websockets 和 Server-Sent Event 之间有什么区别?

145、请描述以下 request 和 response headers:

  • Diff. between Expires, Date, Age and If-Modified-...
  • Do Not Track
  • Cache-Control
  • Transfer-Encoding
  • ETag
  • X-Frame-Options

146、什么是 HTTP method?请罗列出你所知道的所有 HTTP method,并给出解释。

147、请解释 HTTP status 301 与 302 的区别?

148、问题:foo的值是什么?

var foo = 10 + '20';

149、问题:如何实现以下函数?

add(2, 5); // 7
add(2)(5); // 7

150、问题:下面的语句的返回值是什么?

"i'm a lasagna hog".split("").reverse().join("");

151、问题:window.foo的值是什么?

( window.foo || ( window.foo = "bar" ) );

152、问题:下面两个 alert 的结果是什么?

var foo = "Hello";
(function() {
  var bar = " World";
  alert(foo + bar);
})();
alert(foo + bar);

153、问题:foo.length的值是什么?

var foo = [];
foo.push(1);
foo.push(2);

154、问题:foo.x的值是什么?

var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};

155、问题:下面代码的输出是什么?

console.log('one');
setTimeout(function() {
  console.log('two');
}, 0);
console.log('three');

156、你最近写过什么的很酷的项目吗?

157、在你使用的开发工具中,最喜欢哪些方面?

158、谁使你踏足了前端开发领域?

159、你有什么业余项目吗?是哪种类型的?

160、你最爱的 IE 特性是什么?

161、你对咖啡有没有什么喜好?

162、获取随机数的方法?

答案:Math.random();会返回一个0-1之间的小数

163、JS将一个变量强制改为浮点类型的方法?

答案:parseFloat()

164、根据id获取元素的原生JS方法:

答案:doument.getElementById();

165、将文档声明为HTML5文档类型,需要在文档头添加:<!DOCTYPE html>

166、Chrome浏览器的私有样式前缀:-Webkit-opacity:0.7

167、CSS3设置圆角的属性名:border-radius:20px 20px;

168、用js+html模拟下拉框,重点说出设计时要考虑的要素

答案://点击文种下拉框,赋值给input
$('.jiguan_sel').click(function(){
$(this).parent().find('ul').show();
var $Li=$(this).parent().find('ul li');
$Li.click(function(){
var t=$(this).html();
$(this).parent().parent().find('ul').hide();
$(this).parent().parent().find('.jiguan_sel span').html(t);
$(this).parent().parent().find('#docwz').val(t);
});
$(document).mouseup(function(e){
var _con = $('.jiguan_sel').parent().find('ul');
if(!_con.is(e.target) && _con.has(e.target).length === 0){
_con.hide();
}
});
});

关键在于考虑一下下拉框消失的规则,ul出现的情况下,监听整个页面的点击,如果点在ul或者li上面,则不消失,如果不在这上面,就让下拉框消失。

169、请解释JSONP的工作原理。

答案:首先呢,浏览器对页面请求有一个同源机制,不允许访问非同源的页面,所以ajax不能请求非同源的url,但是script标签却可以通过src引入不同源的js,这样呢,服务器不反悔json格式数据,而是返回一段可执行的js,然后我们就获取到了不同源服务器上的信息了。

170、

原文地址:https://www.cnblogs.com/learnings/p/9007285.html