世界各地程序员共同总结的前端面试题

常规问题

  • 最近你学了什么?
  • 是什么激发你对编程的兴趣?
  • 你最近在挑战什么新技术、你是怎么解决遇到的问题?
  • 当你在构建Web应用程序或网站时,你会考虑什么样的用户界面、安全性、性能、SEO、可维护性、选用的技术?
  • 谈谈你首选的开发环境(系统、编辑器或IDE、浏览器、工具等)
  • 你熟悉什么版本控制系统?
  • 请描述一下你创建一个网页的工作流程?
  • 请描述一下渐进增强和优雅降级的区别?
  • 如何优化一个网站的资源?
  • 传统上,为什么网站资源来自多个域会更好?
  • 浏览器能同时下载某个域的多少资源?
  • 如果你加入了一个项目,他们使用tab键进行格式化,而你使用空格键,你会做什么?
  • 写一个简单的幻灯片
  • 你使用什么工具来测试代码性能?
  • 如果你今年能掌握一门技术,它会是什么?
  • 尽量详细地描述从输入一个网站的URL到页面完成加载的过程。
  • 解释什么是ARIA和screenreaders,和提高网站可读性的办法。
  • 比较一下CSS动画和JavaScript动画优、缺点的

HTML 问题

  • 什么是doctype?
  • 标准模式和兼容模式之间的区别是什么?
  • XHTML页面的局限性是什么?
  • 页面使用application/xhtml+xml有什么问题?
  • 如何解决网站多语言问题?
  • 开发复杂网站必须考虑哪些事情?
  • data-属性有好处?
  • HTML5作为一个开放的网络平台。HTML5的基石是什么?
  • 描述cookies、localStorage、sessionstorage之间的差异。
  • 解释GET和POST的区别

CSS问题

  • CSS 的 class 和 id 的有什么区别?
  • 描述 reset CSS文件的作用和好处。
  • 描述什么是Floats(浮动)和它们是如何工作的。
  • 描述z-index属性和叠加的内容如何显示。
  • 描述各种清除浮动的方法和适合的场景
  • 解释 CSS sprites,你是如何在网站中使用的?
  • 你最喜欢的图片替代技术什么是,什么时候使用?
  • CSS属性的hack技术有哪些?
  • 你是如何处理对新技术有限制的浏览器?
  • 在视觉上隐藏内容(并使其可用于屏幕阅读器)的方法有哪些?
  • 你使用过的网格系统(grid system)吗?如果用过,你喜欢什么?
  • 你有使用过适合媒体查询或移动特定的布局吗?
  • 对SVG有什么认识?
  • 如何优化网页打印?
  • 编写高效的CSS有什么“陷阱”?
  • 使用CSS预处理器的优点/缺点是什么?(Sass, Compass, Stylus, LESS)
  • 描述你喜欢和不喜欢的CSS预处理器。
  • 你将如何使用非标准的字体实现一个网页设计的排版?
  • 解释浏览器如何对元素与CSS选择器匹配。
  • 解释你对盒模型的理解。你如何通过CSS告诉浏览器使用不同的盒模型来渲染你的布* 局。
  • { box-sizing: border-box; }有什么用?它的优点是什么?
  • display属性有哪些值?
  • inline and inline-block之间的区别是什么?
  • relative、fixed、absolute、static定位的区别?
  • CSS的“C”代表Cascading。如何确定指定样式的优先级(举一些例子)?怎么利用这* 个规则?
  • 学过或在项目中用过什么CSS框架?(Bootstrap、 PureCSS、Foundation等)
  • 有没有用过新的CSS Flexbox或网格布局?
  • 响应设计和自适应设计有什么不同?
  • 是否用过视网膜图形?

JS问题

  • 解释事件委托(event delegation)
  • 解释JavaScript的this如何工作的
  • 解释原型如何实现继承
  • 你如何去测试JavaScript?
  • AMD与CommonJS
  • 解释为什么下面的函数不是IIFE(Imdiately Invoked Function Expression 立即执行的函数表达式):foo() {}()
  • 变量null、undefined、undeclared的区别
  • 闭包是什么,以及如何使用、为什么使用?
  • 一个匿名函数的典型用例是什么?
  • 你如何组织你的代码?(模块、模式、经典传继承?)
  • 宿主对象(host objects)和本地对象(native objects)的区别是什么?
  • 比较下面写法的区别:function Person(){}, var person = Person(), var person = new Person()
  • .call 和 .apply的区别
  • 解释function.prototype.bind。
  • 你什么时候优化你的代码?
  • 你什么时候用document.write()?
  • 解释特性检测(feature detection)、特征推理(feature inference)、UA字符串(UA string)的不同之处
  • 详细解释AJAX。
  • 解释JSONP如何工作(以及它为什么不是Ajax)。
  • 你有没有使用JavaScript模板?
  • 描述事件冒泡(event bubbling)。
  • “attribute”和“property”的区别是什么?
  • 为什么扩展内置的JavaScript对象不是一个好主意?
  • document load事件和document ready事件之间的区别?
  • == 和 ===的区别?
  • 解释JavaScript的同源策略
  • 什么是三元表达式,三元意味着什么?
  • 什么是“use strict(使用严格的)”?它的优点和缺点是什么?
  • 创建一个循环,循环到100,当数字是3的倍数时输出“fizz”,是5的倍数和同时是3和5的倍数时输出“FizzBuzz”
  • 为什么一般来说,不要随便创建全局变量?

jQuery问题

  • 解释“chaining(链式)”。
  • 解释“deferreds(延时)”。
  • 你知道哪些jQuery特定的优化?
  • end()有什么用?
  • 说出4种可以传给jQuery方法的值。
  • .get()、[]、.eq()的区别是什么?

有趣的问题

  • 你最近在做什么有意思的项目?
  • 你喜欢哪些开发工具?
  • 你有做业余项目吗?什么样的?
  • 你最喜欢Internet Explorer的什么功能?
  • 你喜欢什么样的咖啡?