Skip to content

前端面试中的 JavaScript 实用函数编码

原文:https://www.frontendinterviewhandbook.com/coding/javascript-utility-function/

这些是 LeetCode 问题的前端版本,但不太强调复杂的算法,更专注于实际用例。然而,它们也可能是简单的 LeetCode 问题,但是需要用 JavaScript 来回答。

几乎所有现有的实用函数都存在于 JavaScript 语言或著名的第三方库中,如 Lodash/下划线,其中最著名的是debouncethrottle。然而,Lodash 的实现是极度过度工程化的——重用了许多抽象函数,并支持旧浏览器的怪异和晦涩的用例,你不应该在采访中产生这样的复杂程度。

基本示例

  • 实现Array.prototype功能:mapreducefiltersort
  • 实现承诺/承诺相关 API:PromisePromise.all
  • 实现 Lodash 功能:debounce()throttle()cloneDeep()groupBy()
  • 洛达什的chunk() / map(),接着是mapAsync ( Promise.all),然后是mapWithChunksAsync
  • 将对象中的所有键转换为 snake_case/camelCase
  • document.querySelectorAll(仅限于标签选择器)
  • 观察者模式

最好的准备方式是亲自动手实现它们,并为它们编写测试用例。

虽然这类问题的焦点不在算法上,但也要注意数据结构的选择和时间复杂度。如果在哈希映射的帮助下可以很容易地用 O(n)编写一个函数,那么就不要编写一个在 O(n 2 中运行的函数。

候选人预计会花大约 10-15 分钟来回答一个基本问题。如果你知道你收到了一个基本问题,试着在建议的时间内完成,不要故意花整个面试时间来做一个问题。在大多数情况下,你需要回答另一个编码问题。

进阶范例

高级问题通常是给更高级的候选人,预计大约 25-30 分钟完成或达成一个最低限度的工作解决方案。

  • 编写一个模板引擎,执行变量替换和简单的条件。
  • 执行JSON.stringify()
  • 从 HTML 页面生成目录/大纲(类似于 Google Docs 自动生成的大纲)。

Practice questions on Great Front End

不确定如何开始?大前端有前端面试学习计划和一个编码题的庞大题库。今天就开始练习吧!

提示

  • 始终努力编写纯函数,也就是不依赖于函数外部状态并且不会产生副作用的函数。
  • 如果你正在写一个递归函数,问问是否有最大堆栈深度限制。
  • 一些嵌套的数据结构可以递归引用自身。一定要澄清对象中没有自我参照/循环/询问你是否需要处理它们(通常答案是“没有”)。


回到顶部