如果您需要面试某人,评估其 CSS 技能和知识,那么在现场想出问题可能会有点困难。我想到了一些想法,并将其汇总供参考。

练习
查看候选人的实际作品与他们所说的同样重要。甚至可能更重要的是观察候选人现场完成练习的过程。以下是一些难度不大的练习,任何有 CSS 经验的人都能完成。观察/倾听他们完成练习的过程将非常宝贵。CodePen 上的 协作模式非常适合这种情况(仅供参考)。
创建此按钮
我在 Mobify 的 CodePen 账户上看到了 这个想法。给候选人一个按钮的图片,并告诉他们:
仅使用 CSS 属性,重新创建此按钮。

这将是对候选人 CSS3 技能的绝佳测试。此按钮使用了各种 CSS3 功能。我将关注以下几点:
- 他们是如何处理 多重边框 的?
box-shadow
可能是这里最好的方法。 - 他们是否使用了
text-transform: uppercase;
来设置文本?这将是最好的做法。 - 他们是如何处理星星的?伪元素将是一个不错的选择。他们使用了 Unicode 吗?图标字体?
- 他们是否注意到了微妙的
text-shadow
? - 他们是如何分割按钮主体部分的背景的?一个没有渐变的
linear-gradient
将是一个不错的技巧。或者box-shadow
。 - 他们是否 谨慎 处理了嵌套的圆角?
希望我没有破坏 Mobify 的招聘流程!但老实说,我认为这些东西很难作假。要么你能做并谈论它,要么你做不到。
修复侧边栏
此处的右侧边栏已落到内容下方。 展示一些修复此问题的不同方法。

即使两列分别为 75% 和 25% 宽,并以相反的方式浮动,侧边栏仍然下沉。原因是列的宽度实际上并没有加起来达到 100%——由于填充,它们加起来超过了 100%。有多种方法可以修复它:
- 在合适的元素上使用
box-sizing: border-box;
是最有效的修复方法。 - 使用
calc()
来计算宽度并去除 1rem 的填充是另一种方法。 - 将填充应用到添加的内部包装元素而不是列上,是一种与非常广泛的浏览器兼容的修复方法。
- 调整数字以使计算结果正确是另一种方法。例如,将列的宽度缩小 4%,并使用 2% 作为填充。
还有其他方法。候选人能够想到的解决方案越多,他们解决问题的能力就越有创意和多样性。
使此固定宽度设计自适应。
这是一个设计。它是一个固定宽度为 800px 的设计。尽力使其在任何屏幕尺寸下都能更合适地适应屏幕。
这只是响应式设计的一个要素(他们可能至少应该熟悉),但它是一个重要的要素。它可以帮助证明他们能够进行空间思考,并对布局做出合理的决策。我将关注以下几点:
- 将像素宽度更改为百分比(他们是如何处理数学计算的?)
- 他们是否对大屏幕或仅对小屏幕做了特殊处理?
- 他们是否尝试使用响应式图像解决方案?
- 新设计是否保留了原始设计中固有的重要性层次结构?
- 他们是否会向你提出问题?(这里有很多问题可以问,包括可能有哪些其他资源可用。)
- 他们是否进行了测试?(以确保它确实有效,并发现诸如缺少元标记之类的问题。)
用图片替换此徽标标记。
<a href="/" class="logo">Company</a>
可访问且语义化的图像替换一直是 CSS 的一个主题,多年来“最佳方法” 发生了变化。要求他们向你展示如何用多种方法完成此操作,将是了解他们实际使用 CSS 多久的一种方式。这不仅是需要知道如何做的事情,而且知道如何用多种方法完成它,也证明了他们内部工具箱的深度。
backface-visibility
的默认值。
搜索如何查找 能够快速有效地搜索信息是任何开发人员工作的重要组成部分。他们是否擅长搜索?他们是否找到了正确的答案?他们在结果页面中是否使用了特定的可信来源?
也许可以不用“搜索”来表达问题,看看他们使用哪个搜索引擎。这里没有特别的偏见,但如果他们使用的不是 Google,那么他们使用其他任何搜索引擎的效率是否符合你的预期?
需要问的问题
几年前,Darcy Clarke 率先提出了这些问题。我将更新其中一些问题,并添加一些我自己的问题,并进行一些详细说明。
什么是 CSS 中的“盒子模型”?哪些 CSS 属性是它的一部分?
CSS 盒子模型是理解布局、大小等的基础。它由以下部分组成:
- 宽度和高度(或者在没有这些的情况下,默认值和内部内容)
- 内边距
- 边框

外边距与此相关,但从技术上讲不是它的一部分。如果候选人知道/提到了这一点,我会加分,但不会因为包含它而扣分。
什么是 Sass、Less 和 Stylus?人们为什么使用它们?像 Compass 这样的工具如何与 Sass 相关?
它们是 CSS 预处理器。它们是 CSS 之上的抽象层。它们是一种特殊的语法/语言,可以编译成 CSS。它们通过变量和 mixin 等功能简化了 CSS 的管理,例如处理供应商前缀(以及其他功能)。它们使遵循最佳实践变得更容易,例如连接和压缩 CSS。
如果候选人知道它们之间的区别和/或有使用它们的经验,则加分。如果他们知道 Compass、Bourbon、LESSHat、Nib 等工具以及它们之间的关系,则加分更多。
遇到 CSS 问题时,你通常会参考哪些在线资源?
善于使用 Google 搜索遇到的问题是一项宝贵的职业技能。这没什么好羞愧的。真正可耻的是因为“你应该知道这个”而浪费时间。如果你没有时间进行上述 Google 搜索练习,仅仅询问一些资源也能说明一些问题。
Google 是一个不错的答案(因为这是事实,我们都知道)。但能够说出一些具体的网站,则表明他们已经多次进行过类似操作,并且熟悉他们访问过的网站并知道自己最喜欢的网站。例如,MDN(Mozilla 开发者网络)就是一个不错的答案。
描述一下“重置”CSS 文件的作用以及它有什么用。你熟悉 normalize.css 吗?你理解它们之间的区别吗?
重置在 CSS 中非常常见,任何从事前端开发的人肯定都用过它们。他们是否盲目地使用,或者他们知道为什么使用?原因本质上是不同的浏览器对元素有不同的默认样式,如果你根本不处理这个问题,你可能会冒着不同浏览器中的设计看起来不必要地不同的风险,甚至可能出现更严重的问题。
Normalize 可以称为 CSS 重置的替代方案。它不是清除所有样式,而是提供了一组合理的默认样式。它不会取消跨浏览器和合理的(例如粗体标题)已经一致的内容。这样,它做的比重置少一些。它也比重置做得多,因为它处理你可能从未考虑过的一些问题,例如 HTML5 音频元素的不一致性或使用 sub 和 sup 元素时的行高不一致性。
清除浮动有哪些不同的技术?
浮动 仍然非常普遍。在本文发布时,它仍然可能是构建布局和网格最跨浏览器一致的方式。任何使用过浮动的人都知道浮动塌陷。也就是说,浮动元素不会添加到父元素的高度。例如,如果父元素仅包含浮动元素,则它将塌陷为零高度。你可以这样处理:
- 使用 clearfix(使用微型 clearfix 加分)。
- 将父元素也设置为浮动。
- 在父元素上使用除“visible”之外的其他 overflow 属性(列出缺点,例如截断阴影,加分)。
创建新的块级格式化上下文加分。使用类似<br style="clear: both;">
的方法可能会扣分。

作为一个加分题,你可以让他们比较使用内联块和浮动来构建网格。好的答案:无论哪种方式都有问题。使用内联块,你需要处理空白字符问题。使用浮动,你需要处理清除问题。
什么是精灵图(Sprites),为什么要使用它们?你如何创建它们?精灵图有哪些可能的替代方案?
精灵图 本质上是将多个图像组合成一个。性能是它们被使用的主要原因。一般来说,网站最慢的操作是请求资源。网站需要发出的请求越少,速度就越快。速度快 = 好。将原本需要多次请求的内容合并成一次请求 = 好。

询问他们如何制作精灵图可以确定他们是否真的非常熟悉它们。手动创建精灵图当然是一种可能,但效率不高。有一些辅助工具,例如SpriteCow 和 SpriteMe,使用 Compass 创建精灵图,或 Grunticon。听听他们实际的工作流程总是很有趣的。
精灵图是栅格图像。当询问替代方案时,好的答案可能与精灵图通常用于图标,而图标通常不需要是栅格图像这一事实有关。SVG 堆栈、图标字体、Unicode……
在 CSS 中,会遇到哪些可访问性问题?
隐藏内容 是一个比较大的问题。仅当您同时尝试在视觉上隐藏内容和内容本身时,才可以使用display: none;
。
CSS 控制颜色,因此颜色可访问性 也很重要。焦点样式 也非常重要,并且由 CSS 直接控制。
还有很多其他与 HTML 和 JavaScript 相关的内容,提及这些内容是很好的,但我认为将问题集中在 CSS 上以迫使他们进行集中思考很有意思。
内联、内联块和块级元素有什么区别?
提到一些具体的细节,例如你不能转换内联元素,加分。
你使用什么工具进行跨浏览器测试?
他们应该有一些策略。也许是基于 Web 的工具,例如BrowserStack。也许是基于 VM 的工具,例如Virtual Box。也许是不同的实际电脑。
前端设计的职责之一是确保网站在所有可能的地方都能正常工作(基于已确定的支持范围)。你可能不喜欢它,但你不能讨厌它。“这就是工作,你期望是什么样的工作?”
你最喜欢的网页设计工作流程工具有哪些?
他们喜欢用什么代码编辑器?他们从哪里获得灵感?他们对版本控制有什么经验?他们在之前工作的地方是如何进行质量保证的?支持?他们使用过哪些不同的部署方法?他们是否了解 Photoshop 或其他视觉设计软件替代方案?他们是否熟悉终端?
这些只是一些例子,了解他们使用哪些软件来完成工作很有趣。了解他们使用的工具(以及更好的是,他们喜欢的工具)很有意思。加分项:对某些工具表现出兴奋感。
假设你在你的一个网站的 Internet Explorer 8 中发现了一个渲染问题,并且你决定要支持它。你会如何解决这个问题?
这将是一个替代问题,而不是泛泛地询问跨浏览器测试。更具体一些。也许一个更难的替代问题是将 IE 8 替换成类似“运行 Android 2.3 的 Google Nexus”。他们会找到模拟器吗?他们会寻求设计实验室的帮助吗?他们会要求公司为测试提供设备补贴,并制定某种智能计划吗?他们会找一个朋友帮忙吗?
响应式设计到底是什么?
它是关于让网站在任何网络环境下都能正常工作。不同的设备具有不同的尺寸和不同的功能。响应式设计就是采用一个代码库,并使其适用于所有设备。其中一部分是媒体查询和不同的视觉效果。一部分是不同的资源(例如,处理触摸与点击的不同 JavaScript 或适应屏幕的不同图像)。
你以前使用过网格布局吗?你对此有什么看法?
他们为什么需要网格?他们是如何构建网格的?是自建的还是使用了网格工具?他们喜欢这个网格工具吗?他们使用了什么类型的类名?他们是先做移动端还是先做桌面端?这是否有帮助或阻碍?他们是否会在任何项目中自动使用网格?
SVG 的好处是什么?
SVG 是一种基于矢量的图像格式。它是一种高效的格式(文件大小小)。你可以缩放它们,并且它们在任何尺寸下都能保持清晰度(提及光栅在极小尺寸下可能占上风可以加分)。你还可以使用 CSS 和 JavaScript 以及 SVG 特定的滤镜来影响它们的部分,例如模糊。
你曾经为网站创建过打印样式表吗?
这有点表明他们以前在网站方面“加倍努力”。他们采取了什么方法?他们是如何测试它的?
假设你被分配了一个使用非标准网页字体的设计编码任务,你会如何处理?
这是一个引导他们谈论 @font-face 及其工作原理的非引导式问题。讨论它作为核心 CSS 技术的工作原理非常棒,以及讨论提供字体的服务,这些服务可以简化工作,例如 Google Fonts、Typekit、Font Deck、Cloud Typography 等。
如果了解一些鲜为人知的信息,例如 @font-face 语法的历史或Firefox 跨源字体的問題,可以加分。
解释一下这个 CSS 选择器中发生了什么。
[role=navigation] > ul a:not([href^=mailto]) {
}
它选择的是不是电子邮件链接的锚链接,这些链接是任何具有“导航”角色属性的元素的直接子元素的无序列表的后代。
能够用语言表达一个选择器证明你理解它们,并且证明他们能够传达复杂的科技主题。
你的想法
在面试与 CSS 相关的职位时,你被问过什么问题?或者你问候选人的问题?或者你认为哪些问题总体上会比较好?
你见过这个吗……https://github.com/darcyclarke/Front-end-Developer-Interview-Questions
我在“要问的问题”部分的顶部链接到了它。其中一些问题是基于这些问题提出的。
“白板”风格的即兴编码练习是如此的毫无用处且浪费时间,以至于每次有人建议使用它们时我都会感到愤怒。你让一个陌生人坐在一个房间里,与其他几个陌生人一起,然后递给他一张纸或一支白板笔,并告诉他创建一个东西?期望一个人在一个与产生良好代码几乎完全相反的环境中写出任何不垃圾的东西,是对面试者的侮辱,并且远不如查看他们之前的工作并进行讨论有效利用你的一个小时(或更长时间)。
我的 2 分钱。
我基本上同意这一点。虽然我认为根本不让他们编写任何代码是不合理的。也许像这样,你这里有 20 分钟来处理这件事。处理它(也许是在家独自一人),然后在你完成后,我们再谈谈它。主题也很重要。在白板上写出 60 年代的排序算法是荒谬的。要求某人用 CSS 编写一个按钮是非常实用的,并且可以证明他们能够胜任工作与否。
我想我会回应 Scott 的评论,因为它不能说得太多次!
测试候选人的编码能力 == 好的。但是,这些测试应该通过“家庭作业”、工作测试在面试前或面试后发送,而不是在面试中进行。
就像你说的,Chris,了解他们如何解决问题,这是一件好事。例如,我得到了我现在的工作,是因为我的代码是有序的、高质量的,而其他人对这项任务不感兴趣,因为它太艰巨了。
是的,如果我要求某人实际创建一些复杂的东西。我喜欢这里的按钮示例,因为任何精通的人应该能够大致将其构建出来。属性不必完美——例如,我不会因为盒子阴影的顺序颠倒而扣分——但他们应该能够勾勒出结构并解释哪些属性会产生哪些效果。
我强烈不同意你的观点。要求某人编写语法正确的代码是侮辱人和浪费时间的。要求某人对解决问题的方法进行基本描述并解释他们的推理则不是,特别是如果你正在寻找一个在该领域经验丰富、多才多艺并能够领导他人的人。
如果你要要求他们编写超出简单解决方案的东西,特别是针对调试问题的解决方案,是的,这是一种糟糕的做法。期望他们记住某个地方是两个连词还是两个带连字符的词是不合理的。你很可能正在招聘一个职位,你可以把生肉扔进井里,让他们把设计扔出来;如果是这样,或者你正在寻找一个足够初级的职位,那很好。但是,在面试中,你期望某人向你展示他们是如何找到解决方案的以及他们将如何向他人解释这些事情,并没有被 Google 和即时语法检查所淘汰。如果说有什么区别的话,那就是它使某些级别和所需能力变得更加重要。
我将同意 Scott 的观点。在面试中被要求做这些类型的练习对我来说将是一个很大的危险信号,让我加入这家公司。在我看来,这表明了一个环境,在这个环境中,事情被束缚得太紧了。如果有人坚持要进行这些类型的测试,让他们完成并审查家庭作业会是一种更好的方法。更好的方法是查看工作示例,并了解该人通常展现的工作风格。
也就是说,一些更广泛的问题,比如“你使用什么工具来做 x”或“你如何看待网格布局”,这些问题会引发一些有趣的讨论,并表明面试官也熟悉一些技术细节。在面试中,我欢迎这些问题。
我基本同意Scott的观点。
也就是说,如果招聘的是一个比较高级的职位,我认为让候选人带上他们的笔记本电脑进行一些编码是合理的。这不应该是一个危险信号,而是一个证明自己能力的机会。
我总是建议候选人在面试前提前了解这一流程,并在第二次面试阶段进行,也许可以通过花一些时间合作解决一个实际问题。
我不太在乎你是否能倒背如流语法,但我确实希望看到“现场”的证据证明你对知识的深度(适合职位要求)、代码组织和解决问题的创造性方法。
这应该是我们所有人最享受的面试流程部分。
从招聘者的角度来看,我的两分钱。
我完全同意Scott的观点。这类问题大多体现了面试官缺乏知识(顺便说一句,Chris,我并不是指你)。
如果不是这样,他/她可以在见面之前分析申请人的近期作品,然后问他一些更笼统的问题,比如工作风格等等。
至于我自己,我的记忆力不太好。所以如果有人问我关于替换图像的不同方法,我可能无法立即回答他。但我拥有足够的经验,每次都能找到最佳的解决方案,我认为这才是最重要的。
但无论如何,这篇文章很有信息量;)
抱歉,Chris,我无意用我的小抱怨来接管对话,希望由此产生的讨论不会影响到这篇真正优秀的文章和一系列问题。“要问的问题”部分涵盖了非常广泛的技能和知识,可以使面试官对候选人的能力有一个强烈的了解。
@Simon,我不使用笔记本电脑来工作,说实话,我短期内也不打算买一台(我多年来一直自己组装电脑)。所以也许“带上你的笔记本电脑”也不是最好的方法。
雇主应该提供笔记本电脑/台式电脑或任何“测试”工具,无论如何。
现在,一起工作15-20分钟来解决公司当前的实际问题……同意。
我完全同意。我参加过几次面试,对于一份显然只需要我编写CSS和一些基本HTML的工作,我被要求想出一个正则表达式,从某些网站中提取美国电话号码或电子邮件。当然,如果我一直在编写大量的JS,这会有一些意义,但作为一个主要从事设计导向职位的人,要求这样做简直是荒谬的。甚至要求“伪代码”来描述布局也是很糟糕的。它需要响应式吗?我们在浏览器兼容性方面追求的目标是什么?
正如Chris所说,即使在更灵活的时间范围内,静态挑战也更合理,至少在一定程度上是有成效的。
老实说,我认为大多数问题都可以很容易地被任何只短暂使用过CSS的人问到。
如果这是一个真实的人发表的评论,我愿意讨论它。但由于它是匿名的,感觉像是在捣乱,所以把它埋起来。
与技术无关,每当我面试某人时,我最喜欢问的问题是他们如何评价自己作为前端开发人员的能力,以1到10分制来衡量。这通常是我问的最后一个问题,看看它是否与我根据测试问题对他们的评价相符,很有意思。
如果你接着问“是什么让你选择这个数字?”,这个问题就很好。这给了你一个很好的机会来了解他们对某种语言的熟悉程度,因为他们能够谈论他们知道的事情以及他们认为自己还不知道的事情。大多数优秀的候选人会给自己打7分或8分。
是的,我总是这么做。这不是一个你能正确回答的问题(大多数人确实给自己打7分或8分)——但你确实可以回答错误,或者至少让我产生怀疑。
如果有人说自己是10分,你就知道哪里不对劲了。是的,我遇到过有人这样说。;)
作为一个CSS初学者,我对知道其中一些问题的答案感觉还不错!这也给了我一些值得深入学习的主题。感谢Chris。
我认为自己在CSS/JS/PHP(AngularJS、Laravel)方面受过非常好的教育,我认为在寻找精通CSS的人时,这些问题非常棒。
我可能唯一会添加的是一些设计问题,以试图筛选掉那些设计风格像90年代的人。
在你看来,良好、可用且引人入胜的设计有哪些例子?
我同意@Scott的观点,白板测试真的是一种奇怪的方式来测试某人的技能,因为它与你通常的工作方式相差甚远。我个人来说,在网页设计的许多方面都比较有经验,但我仍然需要不断地在网上查找信息。在现实生活中,这并不重要,只要我完成了工作,我就能做到。但在白板测试的情况下,我可能会失败很多次。我并不反对即席技能测试,但要让它在一个真实的环境中进行。
我完全一样。
就像你一样,我经验丰富,但我发现自己越来越频繁地参考Stackoverflow上的问题/答案、Gist中的代码片段,以及CodePen中的演示。
如果在白板测试期间“允许”我参考上述资源,我就不会有问题。
gulp*
我正在参加面试,希望他们不要问我这些问题。
但是,等等。我现在就要做这件事。然后看起来超级聪明。;)
谢谢Chris Coyier。
如果我处于面试别人的位置,我也会加上以下内容。聊聊这些会很有趣 :)
我要说的是,既然你引用了一段似乎包含内联样式的段落,并且知道内联样式应该覆盖所有内容,那么这仍然会使文本保持居中对齐。
我想问题是,!important是否会覆盖内联样式?或者内联样式才是真正的“老大”哈哈
不,Billy,这里的文本将左对齐。!important使它优先于text-align center内联样式,并且因为样式属性不被解释为css,所以它不会使选择器失效。
所以!important会破坏所有CSS规则?意思是它可以覆盖任何东西?
我想这就是为什么它不是最佳实践的原因。
这里的假设是“……你正处于需要面试某人了解他们关于CSS的技能和知识的位置……”,所以,是的,我同意这些问题是充分且经过深思熟虑的。干杯!
嘿,Chris,
谢谢你的分享。你一开始有点残酷哈哈,如果允许你稍微看一下,创建按钮的问题还不错。例如,我确切地知道如何仔细地重新创建那个按钮以及使用哪些CSS属性,但是我不经常使用的语法,比如box-shadow或text-shadow(尽管它以“属性:x y 模糊”的形式出现)。如果使用像Sublime这样的代码编辑器来帮助提示,就没有问题。
遗憾的是,依赖文本编辑器从长远来看会伤害你,但随着“快速开发”的推动,我们变得依赖工具来为我们做事。这是一个权衡,你不会关注这些细节,因为你知道你有工具可以帮助你,以便加快你的工作流程。
无论如何,大多数这些问题都是好问题。关于按钮问题,一个好的折衷方案是让一个人描述他们将如何制作这个按钮。我真的很喜欢关于选择器的问题,例如必须描述[role='xyz'] > a:not等等。
嘿,Chris!
Mobify设计团队招聘人员在此——感谢你推荐我们的笔!我们还有其他一些私人的笔,我们也用它们来评估人们的舒适度和能力。
对于那些评论CSS测试价值的人来说,我们喜欢将它们用于一个非常特定的目的——尽管我们也能从中获得其他一些东西。
我们在面试期间进行管理,并喜欢在他们试图解决问题时坐在房间里陪着他们。我们主要寻找的是解决问题的能力,所以我们通常会在他们尝试的过程中询问他们正在尝试什么以及为什么他们认为它会起作用。这个按钮问题对于测试一些更高级的CSS3的舒适度以及紧密匹配给定设计的能力非常棒。我们完全允许人们使用谷歌搜索或询问我们属性,因为他们本来就会这样做。
如果有人认为他们能轻松通过这个测试或我们提出的任何其他测试,我们随时都在招聘开发者和设计师,请访问http://www.mobify.com/jobs。
另外,如果你申请了,我可能不会再用这个确切的测试…只是说一下。
我的链接没有正常工作。
http://www.mobify.com/jobs
听起来不错。一份简单的 CSS3 属性速查表就足够了,也不需要一直用到它,但能有它会很酷。交互性绝对很重要,还有能够扩展你的思维过程,例如解释“为什么”等等。
我喜欢清除浮动的问题。我通常会画两个 50% 宽度的浮动盒子,并在它们周围加上一个没有高度的包装器。我会问如果在包装器上添加边框会发生什么,以及原因。所以,与其问“如何清除浮动?”,我更想看看开发者是否知道何时需要首先包含浮动。
我也喜欢问使用 translate 和 position:absolute 之间的区别。如果开发者正在面试中级/高级职位,我不会在问题中特别提到动画。我在这里看到了一些有趣的答案。
最后,我喜欢问一些稍微抽象一点的问题,这些问题没有正确或错误的答案,以便了解候选人的思维过程。例如,“为什么下水道井盖是圆形的?”。答案本身并不重要,因为候选人(可能)不会安装下水道井盖,但它通常会产生令人惊讶的结果,这些结果既能体现思维过程,又能体现解决问题意愿。它也是一个有趣的方式,可以从通常令人焦虑的技术问题中转移注意力。
Kyle Peatt 你们有远程职位吗?
嗨,Billy,
我们目前没有任何远程职位;但是,我们会考虑搬迁!温哥华是一个非常棒的居住和工作的地方。
Kyle
哈,谢谢 Kyle,但我已经搬过几次家了。我现在回到纽约或至少是东北部。
我订婚了,不能再随意搬家了。
谢谢 Chris,让我保持谦虚。
恕我直言,当我看到这个例子时,我首先想到在面试中说的话是
请解释一下这个 CSS 选择器中发生了什么:[role=navigation] > ul a:not([href^=mailto])
…是:“伙计!哇,你遇到麻烦了。”
当你写出像这样的怪物选择器时,意味着你陷入了困境!>_<
解释选择器是技术性的,任何人都可以学习和记忆某些结构以备面试。
我认为最有价值的是分析过程和理解这种糟糕的选择器发出的信息类型。至少,我认为,它有助于产生一种观点,可以使面试官洞察候选人的知识,最重要的是,经验。
在这些类型的面试中,CSS-Tricks 本身会被认为是有价值的资源吗?
如果你很聪明,在面试过程中不会玩学校考试。找到有才华的人已经够难了,你不想失去他们。正如之前提到的——没有人想找一本关于 CSS 的教科书来招聘,而是想找一个具有强大的分析能力和创造力,能够以高效的方式解决问题的人。
附带说明:“如果他们知道,他们可以谈论它”这句话是错误的。这是非常错误的。有一些天赋异禀的人做出了非凡的工作——但当被要求解释时,他们却惨败。我们都知道生活中的一些情况,当我们被要求解释某些事情但无法解释时:“嗯,呃,很难解释。”
Sebastian,我完全同意你的观点。有些人不太擅长说话或解释他们的想法,但这并不意味着他们没有才华。
我经常发现自己处于这种境地。想法和问题的解决方案在我的脑海中自由流动,但我找不到合适的词语来向我的同事解释它们。
Sebastian,我完全同意你的观点。有些人不太擅长说话或解释他们的想法,但这并不意味着他们没有才华。
我经常发现自己处于这种境地。想法和问题的解决方案在我的脑海中自由流动,但我找不到合适的词语来向我的同事解释它们。
我认为这种问题的格式没有问题,只要你有一个备用问题,以防他们不知道如何解决这个确切的问题。我的意思是,你可能会错过像我一样极其有才华的前端开发人员(我只是在开玩笑,只是一个自大的笑话),仅仅因为一个简单的边缘情况他们无法当场解决。我相信我们大多数人都有一个非常基本的问题,一个我们知道自己应该能够解决但经常需要谷歌搜索才能完成的问题。如果碰巧是一个开发人员的此类问题会怎么样。
问一些研究类型的问题是有道理的。询问他们工作流程,他们将如何解决特定问题(他们选择并认为具有挑战性的问题)。你甚至可以问他们认为这个问题的挑战在哪里。但不要逐字逐句地对待,作为前端开发人员,我们是解决问题的人(无论是谷歌搜索、参考书籍,还是老式的记住/记忆 CSS 语法)。
简而言之,没有硬性规定。我更愿意聘用一个研究能力更强的开发人员,而不是一个非常擅长他们所做的事情但无法走出舒适区去做新事物的人,因为这是我们这个领域的特点(事情变化迅速且持续不断),我喜欢这样。
感谢阅读(是的,我知道有点长,但我认为我必须表达我的感受,:-))。
你可以向他们展示一个网站(你的一些完成的项目),并询问他们如何对某些元素进行编码和样式设置。你可以从一些简单的事情开始,然后提高难度级别。这样你就可以了解他们每个人可以走多远,以及他们的局限性在哪里。
顺便说一句,优秀的帖子。我在我的工作面试中遇到了一些这样的问题。
你可以在此处找到更多编程教程
如何使用 PHP 读取图像文本
Chris 统治!!!
谢谢,这对初级前端开发人员来说非常棒。
在进行工作面试时,我已经停止询问关于前端(css)的技术问题了。我更感兴趣的是他们如何学习新技术以及他们如何看待这份工作(例如,他们是否能持续工作几年,以及他们是否会继续成长)。正确的开发人员能够快速掌握技术知识,而我们正在寻找的是优秀的开发人员能够保持这些知识并不断挑战自己。
嗨,Niels,
再好不过了。保持最新状态并能够跟上行业发展(必要时)比停滞不前的技能更有价值。
伙计,我以前认为我在 CSS 上很糟糕,但读完这篇文章后,我觉得我至少可以对每个问题/任务做出良好的尝试。在此之前,我从未想过自己能够达到使用 CSS 从事专业工作的水平。
我绝对会包含一个关于定位和 position 属性的问题。例如,“如何居中一个绝对定位的元素?”会非常具有启发性。
我用谷歌搜索了一下,大约 30 秒就解决了问题,继续下一个 :) http://www.sitepoint.com/css-center-position-absolute-div/
优秀的文章。感谢这些面试问题。
大家好,
我尝试使用仅一个 a 元素重新创建按钮,不使用 span 或任何其他元素。这是我的解决方案
http://jsfiddle.net/UPJfd/
但我不知道如何插入星星。有人有想法吗?
嘿,那是一个很好的复制!星星是最简单的部分。只需使用像这样的伪元素
@Kevin
如果你要使用两个相同的规则,我会建议将它们合并到同一个选择器中。
@dazzle89 另一个关于星星的解决方案是在按钮中添加实际的 HTML 特殊字符。是的,这会增加一些额外的标记,但它会有很好的支持,因为你没有使用 :before / :after。
你的示例,扩展版
@Alex 谢谢你的提示,我确实忽略了这一点。
喜欢它。关于按钮的热门话题,没有人看到更大的图景。
— S
白板演示?当然,来吧……让我们开始吧。
想聊聊?没问题,我会说两种语言,让我们一起学习吧。
让我们勇敢起来吧。
+1 :D
我花了30分钟完成了结账按钮……我还能被录用吗?http://codepen.io/gillytech/pen/duHFG
Kevin,很棒的笔。我一直在查看它,因为我知道按钮上有些部分我会难以处理。我认为只有一件事可以让它更接近。我发现
a {letter-spacing: -1px;}
似乎可以正确设置字母的字距。在示例中,它们比你的笔中的字母更靠近一点。你觉得怎么样?嘿,Kevin,
按钮做得不错!它非常接近,尽管我看到一些你可以润色的细微差异。不过,很棒的工作。
无法当场录用你,但欢迎在我们的招聘页面申请。
谢谢大家。我做了一些修改,并且非常确定这个是一个完美的复制品。
我根据 Kyle S. 的建议缩短了字母间距,并添加了我在之前错过的按钮周围的阴影。还将主要渐变更改为更接近原始渐变。
谢谢 Kyle P. 的录用机会,但我只是在为我目前的工作磨练技能 :)
嘿,Kevin!
看起来不错。我认为还缺少一样东西。更仔细地检查一下按钮在左右边缘附近的闪光。
感谢你玩我们的按钮。也许可以打开我们的一些其他测试会很有趣。
感谢这篇文章。我已经自学网页设计/开发一年了,并且正在努力在这个职业领域站稳脚跟。我感觉练习一些这些东西最终可能会让我找到工作。
hire.kyleshevlin.com
喜欢这篇文章。一如既往地纯金般珍贵。感谢发布它!
我对 CSS 按钮任务感到好奇
显示的图片是使用图像编辑器(如 Photoshop)生成的,还是已经由 CSS 生成?(狡猾,狡猾!)如果它确实是仅由 CSS 生成的,那么是如何创建出现在按钮线性渐变右侧和左侧 50% 点附近的小曲线的?
此外,有没有办法让外部的 box-shadows 像按钮的主要中心部分一样对悬停做出反应(不使用额外的标记或 JS)?
在我的笔中,我称之为“The Interview’n Button”,
我还想知道,如果在 a:hover 上放置一个小小的调整边距,为什么星星字符会稍微变大。
只是好奇。
嘿,Joseph,
你看到的是在浏览器中生成的!是的,包括你提到的那些小曲线。我不会给出太多提示,但你可以使用你已经使用过的属性之一来实现它。
至于让 box-shadows 对悬停做出反应,你可能可以使用上面所需的相同技术来实现类似的效果。
感谢你玩我们的按钮!
Kyle,
是的。我只是当时没有深入思考。每一侧的那些曲线实际上很简单。此外,你可以删除线性渐变以简化代码,这是一个额外的优点。这是“The Lighter, Tighter Interview’n Button”
我可能使用了极大的径向渐变来使整条线略微弯曲(因为我认为这样看起来更好),但目标是模仿示例……
如果 Chris 或其他人可以为我们发布更多类似的东西让我们模仿,然后展示一些有趣的回应,那将会很好(提示,提示)。
我的意思是,我经常看到一个有趣的导航或界面,然后尽我所能模仿它,作为一项智力练习。有时这可能是一个挑战,但几乎总是很有趣的。
顺便说一句,感谢你的友好回复。
除了测试之外,我最常问的 CSS 问题是
你能解释一下 CSS 特异性吗?
请解释一下浏览器引擎如何匹配 CSS 选择器?
还有
列出一些你定期访问的新闻网站/博客/资源,以了解最新的网络技术。
或者
列出一些你在线关注的人(Twitter/博客文章/RSS/…),他们对持续改进你的开发技能和/或网络很重要。
加分题
你最喜欢的 GitHub 仓库有哪些?
:)
我完全不同意这个问题
不要误会我的意思,我非常喜欢 Github(谁不喜欢呢),但老实说,我不认为一个人知道或关注多少个“酷”仓库与工作相关。说真的,某人只需要说:“是的,jQuery、HTML5 Boilerplate 和 Emmet”。那又怎样,这个人突然就适合这份工作了吗?
如果这个人使用过 Github,或者至少尝试过使用它,那么这条路线更有价值。
Jelmer – 这些问题是不是直接来自 Darcy Clarke 的前端面试技巧?
我和一些优秀的开发者一起工作,他们不使用 Twitter 或 Github,但这并没有妨碍他们成为工作中的佼佼者。
更重要的是要弄清楚这个人是否适合你的团队/公司,而不是他们关注 Twitter 或 Github 上的谁。
这篇文章让我意识到自己知识的一些差距!吓我一跳。感谢总结。
我们公司的用户群倾向于使用旧版浏览器,因此我们必须添加更多回退方案。
很棒的文章(以及一些有趣的评论)Chris。事实上,我的许多学生在申请前端职位时,需要参加面试过程中的测试。曼彻斯特的一家公司要求申请者“用 CSS 画一条裤子”。测试似乎很常见。我想这篇文章为双方都提供了很多思考的素材。谢谢。
嘿,Chris,我是你的忠实粉丝,我真的很喜欢这篇文章。内容看起来在面试中应用起来有点广泛,但它让我意识到更新内容的重要性。
此外,我想告诉你,它可以应用于当前的员工,他们**应该**了解这些技术,但这种情况并不总是发生,并且可以方便地跟踪进一步的培训。
谢谢。
免责声明:我没有阅读每一条评论。
但我能说的是,我读过的那些评论,有什么大不了的?
我会在白板上、纸上或电脑上进行测试,为什么?因为我知道自己在做什么。这完全没有冒犯,可能并不比在面试中对测试方法持消极态度更冒犯,而你希望这些人付钱给你为他们工作。
如果你想抱怨你得到的测试,首先完成它,然后建设性地告诉人们如何改进它。
此外,当我不得不面试某人,而他们没有带来展示作品,无论是笔记本电脑上的作品还是网站的 URL 来展示以前的工作,那么他们有 99.999% 的几率不会得到这份工作,这并不难。
你应该阅读我在这里的评论 :)
剧透
我 110% 同意你。
我更希望有人查看我以前的工作,但我愿意接受面试,回答问题或编写一些代码。
不过,我不喜欢的一件事是,当公司要求你做一些你可能不会在工作中做的事情时。例如,如果他们在任何网站/工作中都没有类似的按钮,那为什么要这么做?哈哈,根据你希望我为你做的事情来测试我。另一个例子是问我关于动画的问题,而你又不使用动画。
我的同事没有完整阅读这篇文章,以为这是一个比赛。我觉得我做得还不错。CODEPEN。我认为这是一个很好的筛选人才并了解他们思维方式的方法。我让一些潜在的员工进行了一些测试,发现它非常有启发性。我的意思是,如果你连复制一个按钮都做不好,那么也许你的 CSS 能力并不那么出色。也许你更适合内容策略或工作的其他方面。如果你要整天写 CSS,你必须真正热爱它。我认为热爱 CSS 的人会乐于接受挑战。
[role=navigation] > ul a:not([href^=mailto])
虽然这是一个很好的面试素材和 CSS 语法的测试……但一个很好的后续问题是,他们是否会尝试使用类似的东西。
例如 https://css-tricks.cn/efficiently-rendering-css/
这取决于情况。是的,使用像那样冗长的 CSS 可能效率不高,但可能更有利于维护。
你可以为每个邮件链接添加一个类,在这种情况下可能不多,但如果你想让某些链接的颜色与所有普通链接的颜色不同怎么办?例如,外部链接与内部链接?
你可以为每个链接添加一个类,但这会增加标记。我觉得就像大多数事情一样,它们都有各自的优缺点。另一个例子是,每次你添加一个符合该场景的新链接时,你都必须记住添加类,而不是在 ul 内部添加它,它会自动被选中。
因此,虽然对于某些更注重性能而不是其他方面的企业来说,它可能不太好,但一切都需要具体情况具体分析。
就这些而言,**chris** 你没有问太多关于高级内容或我们为 **CSS** 动画做了多少准备,以及关于 *CSS Transform* 的内容。更重要的是,像 **Flexbox** 这样的新布局系统,我们作为面试者是否需要担心这些事情?