在面试或招聘前端开发人员时,期望,现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问题的热情程度,也是在了解未来可能一起共事的同事。
以下是我们在面试讨论中提出的一些问题,希望这个问题列表可以帮助面试者和候选人能够在面试中正确地设定期望,要求和现实。
基本的JavaScript问题
1. 让下面的代码可以运行:
<前> const a =, (1,, 2,, 3,, 4,, 5];//Implement 这 a.multiply (); console.log (a),,//,[1, 2, 3, 4, 5,, 1,, 4日,9日,16日,25) >之前2. 以下代码会返回 <代码> 假 代码> 解,释为什么会这样:
<前>//错误 0.2,+,- 0.1,0.3===, >之前3.JavaScript中有哪些不同的数据类型?
提示:JavaScript中只有两种类型,主要数据类型和引用类型(对象),其中有六种主要数据类型。
4. 解决以下异步代码问题。
获取并计算属于某个班级(假设ID为75)的每个学生的平均分数。每个学生在一年内可以参加一门或多门课程。以下API可用于获取所需的数据。
<前>//,GET LIST  OF ALL 从而学生 GET /api/学生 回应: [{ ,,,“id":, 1, ,,,“name":,“John" ,,,“classroomId": 75 })//,GET COURSES FOR  GIVEN A 学生 GET /api/课程?过滤器=studentId eq 1 回应: [{ ,才能“id":,“history" ,才能“studentId": 1 },{ ,才能“id":,“algebra" ,才能“studentId": 1 }),//,GET EVALUATION FOR  EACH 课程 GET /api/评估/历史?过滤器=studentId eq 1 回应: { ,,,“id":, 200年, ,,,“score":, 50岁, ,,,“totalScore": 100 } >之前编写一个以班级ID作为参数的函数,你将使用这个函数计算该班级中每个学生的平均分数。这个函数的最终输出应该是带有平均分数的学生列表:
<前> ( {才能,“id": 1,“name":,“John",,“average":, 70.5,}, {才能,“id": 3,“name":,“Lois",,“average":, 67,}, } >之前使用普通回调,承诺,可见,发电机或async-wait编写所需的函数。尝试使用至少三种不同的技术解决这个问题。
5. 使用JavaScript代理实现简单的数据绑定
提示:ES代理允许你拦截对任何对象属性或方法的调用。首先,每当底层绑定对象发生变更时,都应更新DOM。
6. 解释JavaScript的并发模型
你是否熟悉灵丹妙药,Clojure、Java等其他编程语言中使用的并发模型?
提示:事件循环,任务队列,调用栈,堆等。
7.“新”关键字在JavaScript中有什么作用吗?
提示:在JavaScript中,新的是用于实例化对象的运算符。
另外,请注意[[制造]]和[[说]]。
8.JavaScript中有哪些不同的函数调用模式?请详细解释。
提示:有四种模式,函数调用,方法调用,打电话给()和苹果()。
9. 介绍一些即将发布的新的ECMAScript提案。
提示:与2018年一样,长整型数字,部分函数,管道操作符等。
10.JavaScript中的迭代器和iterable是什么?你知道有哪些内置的迭代器吗?
11. 为什么JavaScript类被认为是一种反模式?
JavaScript的类是否还有其他用武之地?
12. 如何将下面的对象序列化成JSON吗?
如果我们将下面的对象转换为JSON字符串,会发生什么?
<前> const a =, { ,,,key1:,符号(), ,,,key2: 10 }//,What will 发生吗? console.log (JSON.stringify (a)); >之前13. 你熟悉类型化数组吗?如果是,请解释它们的用处以及它们与传统数组的差别吗?
14. 请解释默认参数的原理吗?