JavaScript 面试题
注意:在进行 JS 面试问题之前,请详细阅读以下 JS 主题:
- 面向对象的 JavaScript (OOP)
- JavaScript 如何在屏幕后面运行
- 1. ES6 中有哪些新的 JS 特性?
- https://github.com/lukehoban/es6features
- 2. JS是sync还是Async?
- JavaScript 始终是同步和单线程的。如果您在页面上执行 JavaScript 代码块,则当前不会执行该页面上的其他 JavaScript。
- 3.JS 中的 Sync 和 Async 有什么区别?
- 异步代码在主程序流程之外获取语句,允许异步调用之后的代码立即执行而无需等待。
- 链接 — https://rowanmanning.com/posts/javascript-for-beginners-async/
- 4.如何优化JS代码的性能?
- 5.什么是备忘( memoization)。实现用于记忆的 JS 代码。
- 6.什么是绑定?为绑定实现 pollyfill。
- 7.为:map、reduce、filter、promise 编写 polyfill
- 8.什么是纯函数?
- 9.shim 和 polyfill 有什么区别?
- https://2ality.com/2011/12/shim-vs-polyfill.html
- 10.什么是 IIFE(立即调用函数表达式)( (Immediately Invoked Function Expressions))?
- 11.JavaScript 中的强制(Coercion )是什么?
- https://developer.mozilla.org/en-US/docs/Glossary/Type_coercion
- 12.高阶函数的定义是什么?
- 13.什么时候使用绑定功能?
- 14.什么是柯里化(Currying)?
- https://www.tutorialspoint.com/what-is-currying-in-javascript
- 15.你能举一个咖喱(curry )函数的例子吗?为什么这种语法有优势?
- 16.解释 Javascript 中的提升(Hoisting )是什么?
- JavaScript 提升是指编译器在执行代码之前为变量和函数声明分配内存的过程。使用 var 进行的声明使用默认值 undefined 进行初始化。使用 let 和 const 进行的声明不会作为提升的一部分进行初始化。
- 17.解释原型(Prototype )设计模式?
- 18.比较 Async/Await 和 Generators 的使用以实现相同的功能?
- https://medium.com/dailyjs/a-simple-guide-to-understanding-javascript-e…
- 19.await 关键字和 yield 关键字有什么区别?
- 20.是否可以将 ECMAScript 6 生成器重置为其初始状态?
- 21.如何在 JavaScript 中深度冻结(deep-freeze)对象?
我们可以使用 JavaScript 提供的 Object.freeze() 方法来防止通过更新和删除现有属性来添加新属性。
链接——https://www.geeksforgeeks.org/how-to-deep-freeze-an-object-in-javascrip…
- 22. JavaScript 是按引用传递还是按值传递语言?
- JavaScript 总是按值传递,所以改变变量的值永远不会改变底层的原语(字符串或数字)。然而,当一个变量引用一个包含数组的对象时,该值就是对该对象的引用。
https://medium.com/nodesimplified/javascript-pass-by-value-and-pass-by-…
- 23. 什么是 JS 中的 JIT 和事件循环?
事件循环有一项简单的工作——监控调用堆栈和回调队列。如果调用堆栈为空,事件循环将从队列中取出第一个事件并将其推送到调用堆栈,调用堆栈有效地运行它。
链接——https://blog.sessionstack.com/how-javascript-works-event-loop-and-the-r…
- 24.JS 中的闭包是什么?
闭包是捆绑在一起(封闭)的函数与对其周围状态(词法环境)的引用的组合。换句话说,闭包让你可以从内部函数访问外部函数的作用域。在 JavaScript 中,每次创建函数时都会在创建函数时创建闭包。
Question Link — https://dev.to/levimeahan/closures-scope-and-the-settimeout-for-loop-question-5bl6
- https://coderbyte.com/algorithm/3-common-javascript-closure-questions#
- 25.使用箭头函数有什么好处?
- 26.JS 中的数组和字符串方法及其参数?
- 27.windows.onload 与 onDocumentReady 有什么区别?
- 28.ForEach() 和 map() 的区别?
- 29.JS中的回调函数是什么?
- 30.什么是回调地狱?
- 31.什么是承诺(promises )以及承诺(promises )如何运作?
- 32.事件冒泡和事件捕获之间的区别?
- 33.js中2+‘2’和2-‘2’的输出?
https://www.toptal.com/javascript/interview-questions
https://www.interviewbit.com/javascript-interview-questions/#coding-pro…
- 34. JS中set方法和map方法的区别?
- Map 是元素的集合,其中每个元素都存储为键、值对。 Map 对象可以同时保存对象和原始值作为键或值。当我们遍历 map 对象时,它以与插入相同的顺序返回键值对
- JavaScript map set() 方法用于添加或更新元素以映射具有特定键值对的对象。每个值都必须有一个唯一的键。
- 35. 软件开发模型——KISS、SOLID、POC、DRY、MVP 等
- 36. 什么是 javascript 中的 debounce 和 throttling?
- 37. JS中SetTimeout和SetInterval的区别?
- 38、如何使用ClearInterval & ClearTimeout?
- 39. 为什么在 JS 中引入了 let 和 const?
- 40. NaN 和 undefined 有什么区别?
- 41. 阅读逻辑与 (&&) 和逻辑或 (||) -> 短路评估
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND
# 请按以下顺序阅读以下主题:
- 1.‘this’关键字
链接——https://www.w3schools.com/js/js_this.asp
- 2. Call、Apply 和 Bind 方法及其与 ‘this’ 关键字的使用
- 3. JS 中的闭包
闭包是函数和声明该函数的词法环境的组合。该环境由创建闭包时在范围内的任何局部变量组成。
闭包是捆绑在一起(封闭)的函数与对其周围状态(词法环境)的引用的组合。换句话说,闭包让你可以从内部函数访问外部函数的作用域。在 JavaScript 中,每次创建函数时都会在创建函数时创建闭包。
链接 — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
- 4. JS 中的柯里化(Currying )
https://www.tutorialspoint.com/what-is-currying-in-javascript
- 5. 编写 sum(1)(2)(3) 和 sum(1,2,3) 的柯里化代码
- 6. 为什么需要Bind、调用和应用?
# Devesh JS 采访资料:https://devesh-kr-sri.medium.com/javascript-3497a26e5e5a
# 重要话题:
- 1. 高级 JavaScript 实践
- 2. 面向对象编程
- 3. 函数式编程
- 4. 范围和执行上下文
- 5. 继承+原型链
- 6、最新特性:ES6、ES7、ES8、ES9、ES10、ES2020
- 7. 闭包
- 8. 异步 JavaScript + 事件循环
- 9. JavaScript 模块
- 10.`this`关键字
- 11. JavaScript 引擎和运行时
- 12. 错误处理
- 13. 堆栈溢出
- 14. 内存泄漏
- 15. 组合与继承
- 16.类型强制
- 17. 按引用传递与按值传递
- 18. 高阶函数
- 19. IIFE
- 20. .call()、.apply()、.bind()
- 21.解释器/编译器/ JIT编译器
- 22. 垃圾收集
- 23. 吊装
- 24. JavaScript 最佳实践
# 数组方法:https://www.freecodecamp.org/news/the-javascript-array-handbook/
#LinkedIn 技能评估测验 — https://github.com/Ebazhanov/linkedin-skill-assessments-quizzes
Promise Example:
function GetUserDetails() {
return new Promise(function(resolve, reject) {
console.log(“Fetching data, Please wait…..”);
setTimeout(() = >{
fetch(“https: //jsonplaceholder.typicode.com/todos/1")
.then(response = >response.json())
// .then(json => console.log(json))
// .catch(error => console.log(error));
.then(json = >resolve(json)).
catch(error = >reject(error));
},
3000);
});
}
原文:https://medium.com/@abhishekbhatti89/javascript-interview-questions-202…
Tags
最新内容
- 15 hours ago
- 1 week 2 days ago
- 1 week 2 days ago
- 1 week 2 days ago
- 1 week 2 days ago
- 1 week 2 days ago
- 2 weeks 1 day ago
- 2 weeks 2 days ago
- 2 weeks 5 days ago
- 2 weeks 5 days ago