原文作者:Dan Abramov
译者:UC 国际研发 Jothy
写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。
Redux 作者 Dan Abramov(@dan_abramov)发 Twitter 表示: 我们更新了发给前端工程师候选人的措辞,以更好地反映该角色在 Facebook 的面试过程。希望能帮助大家准备面试!(以下为具体措辞)
我们将尽量保持实用性,并关注你在构建应用时可能遇到的问题。我们不会要求你从头写一个排序算法,但我们希望你了解进行 JavaScript 对象和数组操作时相关的性能。你得能找出并修复代码瓶颈,并解释你所做的权衡。
我们不会要求你实现红黑树之类的模糊数据结构,但这能帮你总结概括 UI 工程化中常见的数据结构,如数组(arrays), 映射(maps), 集合(sets)和 DOM 树(DOM trees). 你还会发现阅读大 O 表示法(Big O notation, 一般用于表示时间/空间复杂度)和树遍历(tree traversa)等计算机科学主题大有裨益。我们不要求你记住某个特定的算法。我们更看重你能在实践中应用这些原则,来创建快速的响应式用户界面。
我们希望你能够掌握 JavaScript 语言及其基本用法,包括迭代(iteration), 闭包(closures), 作用域(scope)以及编写异步代码(writing asynchronous code)等。我们不会考你某个特定的库 - 所以不要担心 React 或类似框架的学习。但是,我们希望 UI 工程师能够理解他们所使用的抽象语法之下有什么内容。例如,如果你之前只用过 UI 库,请花点时间学习原生 DOM API. 如果你只用过 Lodash 之类的工具库,请尝试从头开始实现它的一些方法。检查你的方案在输入空间大的情况下表现如何,并考虑内存消耗和需要处理的边缘情况。在练习的时候,建议你多和人讨论你的方案,并在纸上画草图来帮助你思考。这是练习面试的好办法!