前言:@darcyclarke在GitHub上分享了一个repo,里面有很多前端面试题,可以用来测试潜在的候选人。永远不建议对单个候选人使用相同的问题(这会花费数小时)。从这个列表中挑选一些应该可以检测出您需要候选人具备的技能。请记住,下面的许多问题都是开放式的,没有标准答案,可以引发有趣的讨论。我相信当你面试前端工程师时,你会更多地从讨论中了解候选人,而不是直接回答。以下中文翻译由@shawnqiang完成。@bentruyman(http://bentruyman.com/)、@roger_raymond(http://twitter.com/iansym)、@ajpiano(http://ajpiano.com/)、@paul_irish(http://paulirish.com/)、@SlexAxton(http://alexsexton.com/)、@boazsender(http://boazsender.com/)、@miketaylr(http://miketaylr.com/)、@vladikoff(http://vladfilippov.com/)、@gf3(http://gf3.ca/)、@jon_neal(http://twitter.com/jon_neal)、@wookiehangover(http://wookiehangover.com/)和@darcy_clarke(http://darcyclarke.me)一般问题★你使用推特吗?(在天朝***问你有没有微博?)→如果有,你关注谁?★你用Github吗?→如果是,您关注哪些项目?★你关注哪些博客?★你用的是什么版本管理系统,比如Git、SVN等?★你平时的开发环境是什么?比如操作系统、文本编辑器、浏览器等工具。★您能描述一下您制作网页的工作流程吗?★你能描述一下渐进增强和优雅降级的区别吗?→如果提到特征检测,则加分。★请解释什么是语义HTML?★你更喜欢开发哪个浏览器?你使用什么开发者工具?★如何优化网站的文件和资源?预期的解决方案包括:·文件合并·文件最小化/文件压缩·使用CDN托管·使用缓存·其他★为什么使用多个域名存储网站资源更有效?→浏览器一次可以从一个域名获取多少资源?★请说出三种减少页面加载时间的方法。(加载时间是指感知时间或实际加载时间)★如果你接到一个使用制表符缩进代码的项目,但你喜欢空格,你会怎么做?·建议本项目使用EditorConfig(http://editorconfig.org)之类的规范·为了保持一致性,转为项目原有风格·直接使用VIM的retab命令*请写一个简单的幻灯片效果页面→如果不使用JS就可以加分。★你用什么工作来测试代码的性能?·例如JSPerf(http://jsperf.com/)·例如Dromaeo(http://dromaeo.com/)·其他。★如果今年你要掌握一项新技术,会是什么?★请谈谈您对网页标准和标准制定组织的重要性的理解。★什么是FOUC?你如何避免FOUC?#p#HTML相关问题★文档类型的作用是什么?您知道多少种文件类型?★浏览器标准模式和怪癖模式有什么区别?★使用XHTML有什么限制?→页面使用'application/xhtml+xml'会不会有问题?★如果网页内容需要支持多种语言,你会怎么做?★多语种网站设计开发需要考虑哪些问题?★HTML5页面可以使用XHTML语法吗?★如何在HTML5中使用XML?★'data-'属性的作用是什么?★如果将HTML5视为一个开放平台,它的组成部分是什么?★请描述cookies、sessionStorage和localStorage的区别?JS相关问题★你用过哪些Javascript库?★你研究过你使用的JS库或框架的源代码吗?★什么是哈希表?★“未定义”变量和“未声明”变量指的是什么?★什么是闭包,怎么用,为什么要用?→你最喜欢使用闭包的模式是什么?★你能给出一个匿名函数的典型用例吗?★请解释什么是Javascript的模块模式,并给出实际例子。提及干净的名称空间可以考虑加分。·如果您的模块没有自己的命名空间怎么办?★你如何组织你的代码?我应该使用模块模式,还是经典的继承方法?★请指出Javascript宿主对象和内置对象的区别?★指出以下代码的区别:functionPerson(){}varperson=Person()varperson=newPerson()★'.call'和'.apply'有什么区别?★请解释'Funciton.prototype.bind'的作用?★你如何优化自己的代码?★你能解释一下继承在JavaScript中是如何工作的吗?★什么时候使用'document.write()'?→大多数生成的广告代码仍然使用“document.write()”,尽管这种用法很烦人。★请指出浏览器特征检测、特征推断和浏览器UA字符串嗅探的区别?★请尽可能详细的解释AJAX的工作原理。★请解释JSONP是如何工作的,以及为什么它不是真正的AJAX。★你用过JavaScript模板系统吗?→如果你用过,请说说你用过的那些类似的库文件。如Mustache.js、Handlebars等。★请解释变量声明提升。★请描述事件冒泡机制。★“属性”和“属性”有什么区别?★为什么扩展JavaScript内置对象是一种不好的做法?★为什么扩展JavaScript内置对象是一个好习惯?★请指出文件载入和文件就绪的区别。(这是一道题)'=='和'==='有什么区别?★如何获取浏览器URL查询字符串中的参数。★请解释一下JavaScript的同源策略。★请解释事件代理。★请描述JavaScript的继承模型。★如何实现下面的代码:[1,2,3,4,5].duplicator();//[1,2,3,4,5,1,2,3,4,5]★描述一个JavaScriptMemoization(避免重复操作)策略。★什么是三元条件语句?★函数的参数元素是什么?★什么是“usestrict”?使用它有什么优点和缺点?#p#JS代码示例:~~3.14★问题:上面语句的返回值是多少?**答案:3"i'malasagnahog".split("").reverse().join("");★问题:上述语句的返回值是多少?**答案:“gohangasalam'i”(window.foo||(window.foo="bar"));问题:window.foo的值是多少?**答案:“bar”只有当window.foo为false时才是上面的答案,否则就是它自己的值。varfoo="你好";(function(){varbar="World";alert(foo+bar);})();警报(富+酒吧);问题:以上两个警报的结果是什么答案:“HelloWorld”&ReferenceError:barisnotdefinedvarfoo=[];foo.push(1);foo.push(2);问题:什么是值foo.length?**答案:'2'varfoo={};foo.bar='hello';问题:foo.length的值是多少?**答案:undefined#p#jQuery相关问题★“解释”链接”。★解释“延迟”。★你知道jQuery的那些优化方法。★请解释'.end()'的目的。★你如何为事件处理程序命名空间,为什么?★请说出四个不同的值您可以传递给jQuery方法。→选择器(字符串)、HTML(字符串)、回调函数、HTML元素、对象、数组、元素数组、jQuery对象等。★什么是效果队列?★请指出'.get()'、'[]'、'eq()'的区别。★请指出'.bing()'、'.live()'和'.delegate()'的区别。★请指出'$'和'$.fn'的区别?或者解释什么是“$.fn”。★请优化以下选择器:$(".foodiv#bar:eq(0)")#p#CSS相关问题★描述cssreset的作用和用途。★描述浮子及其工作原理。★清浮的方法有哪些,适用于什么情况。★解释css精灵,如何使用。★你最喜欢的图像替换方法是什么,你选择如何使用它。★讨论CSShacks、条件引用等。★如何为有功能限制的浏览器提供网页。→您将使用哪些技术和治疗方法。★如何在视觉上隐藏网页内容并仅在屏幕阅读器中显示它们。★你用过网格系统吗?如果有,你最喜欢哪一个?★你有没有用过meidiaqueries(媒体查询),或者与手机网站相关的CSS布局。★你熟悉SVG风格的写作吗?★如何优化网页的打印风格。★编写高效的CSS文件需要考虑哪些问题。★你使用CSS预处理器吗?(SASS、Compass、Stylus、LESS)→如果使用,请描述您的偏好。★你接触过使用非标准字体的设计吗?→字体服务、GoogleWebfonts、Typekit等★请解释浏览器如何根据CSS选择器选择相应的元素。可选的有趣问题你写过的最酷的代码是什么?你最自豪的是什么?★你知道HTML5的帮派标志吗?★无论您现在或曾经在船上。(不懂幽默)在你使用的开发工具中,你最喜欢的部分是什么?★你有什么副业吗?是那种类型的?★解释cornify的重要性?(这道题完全糊涂了)★在一张纸上,竖写ABCDE,然后按顺序排列,不用任何代码。→静静地看他们是否把纸翻过来。★海盗还是忍者?→如果是两者结合,并且有正当理由,可以加分。如果是僵尸猴海贼加忍者加两点。(注解,本题文化差异太大)★如果你不做Web开发,你会做什么?★圣地亚哥卡门的藏身之处在哪里?→提示:这个问题的答案总是错的。★您最喜欢的IE功能是什么?★填空:BrendanEich和DougCrockford是JavaScript的________。★讨论:jQuery是最好的库还是最棒的库。原文链接:http://blog.jobbole.com/29269/
