41

[译]送你43道JavaScript面试题

 4 years ago
source link: https://juejin.im/post/5d0644976fb9a07ed064b0ca
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.



1

这两天的GitHub Trending repositories被一个名叫 javascript-questions的项目霸榜了,项目中记录了一些JavaScript题目。

1

我大概从头到尾看了一遍,都是一些基础的题目,我大概花了半个小时(有些题很简单,可以一扫而过)把这些题做完了,虽然题目很简单,但是每道题都对应一个知识点,如果这个知识点你没有接触过,那肯定会做错,如果你接触过这些知识点,那么这些题对你来说就很容易。

建议大家也花半个小时来做一做,以便查漏补缺。

为方便大家能够更快的做题,而不把时间浪费在翻译上,我又花了几个小时把它们翻译成了中文,当然已经获得了作者授权。

1

文中有些点作者解释的不太完整,为了更好的理解,我在文中添加了一些个人解释。

仓库地址:github.com/lydiahallie…

JavaScript 进阶问题列表

我在我的Instagram上发布了每日JavaScript选择题,我也会在这里发布!

从基础到高级:测试您对JavaScript的了解程度,刷新您的知识,或为您的编码面试做好准备!💪 🚀我每周用新问题更新这个项目。

答案位于问题下方的折叠部分,只需单击它们即可展开。 祝你好运❤️


1. 下面代码的输出是什么?

function sayHi() {
  console.log(name);
  console.log(age);
  var name = "Lydia";
  let age = 21;
}

sayHi();
复制代码
  • A: Lydiaundefined
  • B: LydiaReferenceError
  • C: ReferenceError21
  • D: undefinedReferenceError

答案

 name = 
{
  .log(name) 
   name = 
}

2. 下面代码的输出是什么?

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
复制代码
  • A: 0 1 2 and 0 1 2
  • B: 0 1 2 and 3 3 3
  • C: 3 3 3 and 0 1 2

答案

3. 下面代码的输出是什么?

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter: () => 2 * Math.PI * this.radius
};

shape.diameter();
shape.perimeter();
复制代码
  • A: 20 and 62.83185307179586
  • B: 20 and NaN
  • C: 20 and 63
  • D: NaN and 63

答案

4. 下面代码的输出是什么?

+true;
!"Lydia";
复制代码
  • A: 1 and false
  • B: false and NaN
  • C: false and false

答案

5. 哪个选项是不正确的?

const bird = {
  size: "small"
};

const mouse = {
  name: "Mickey",
  small: true
};
复制代码
  • A: mouse.bird.size
  • B: mouse[bird.size]
  • C: mouse[bird["size"]]
  • D: All of them are valid

答案

6. 下面代码的输出是什么?

let c = { greeting: "Hey!" };
let d;

d = c;
c.greeting = "Hello";
console.log(d.greeting);
复制代码
  • A: Hello
  • B: undefined
  • C: ReferenceError
  • D: TypeError

答案

7. 下面代码的输出是什么?

let a = 3;
let b = new Number(3);
let c = 3;

console.log(a == b);
console.log(a === b);
console.log(b === c);
复制代码
  • A: true false true
  • B: false false true
  • C: true false false
  • D: false true true

答案

8. 下面代码的输出是什么?

class Chameleon {
  static colorChange(newColor) {
    this.newColor = newColor;
  }

  constructor({ newColor = "green" } = {}) {
    this.newColor = newColor;
  }
}

const freddie = new Chameleon({ newColor: "purple" });
freddie.colorChange("orange");
复制代码
  • A: orange
  • B: purple
  • C: green
  • D: TypeError

答案

9. 下面代码的输出是什么?

let greeting;
greetign = {}; // Typo!
console.log(greetign);
复制代码
  • A: {}
  • B: ReferenceError: greetign is not defined
  • C: undefined

答案

10. 当我们这样做时会发生什么?

function bark() {
  console.log("Woof!");
}

bark.animal = "dog";
复制代码
  • A: Nothing, this is totally fine!
  • B: SyntaxError. You cannot add properties to a function this way.
  • C: undefined
  • D: ReferenceError

答案

11. 下面代码的输出是什么?

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const member = new Person("Lydia", "Hallie");
Person.getFullName = () => this.firstName + this.lastName;

console.log(member.getFullName());
复制代码
  • A: TypeError
  • B: SyntaxError
  • C: Lydia Hallie
  • D: undefined undefined

答案

Person.prototype.getFullName = {
   ;
}

12. 下面代码的输出是什么?

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const lydia = new Person("Lydia", "Hallie");
const sarah = Person("Sarah", "Smith");

console.log(lydia);
console.log(sarah);
复制代码
  • A: Person {firstName: "Lydia", lastName: "Hallie"} and undefined
  • B: Person {firstName: "Lydia", lastName: "Hallie"} and Person {firstName: "Sarah", lastName: "Smith"}
  • C: Person {firstName: "Lydia", lastName: "Hallie"} and {}
  • D:Person {firstName: "Lydia", lastName: "Hallie"} and ReferenceError

答案

12. 事件传播的三个阶段是什么??

  • A: 目标 > 捕获 > 冒泡
  • B: 冒泡 > 目标 > 捕获
  • C: 目标 > 冒泡 > 捕获
  • D: 捕获 > 目标 > 冒泡

答案

13. 所有对象都有原型.

答案

14. 下面代码的输出是什么?

function sum(a, b) {
  return a + b;
}

sum(1, "2");
复制代码
  • A: NaN
  • B: TypeError
  • C: "12"
  • D: 3

答案

15. 下面代码的输出是什么?

let number = 0;
console.log(number++);
console.log(++number);
console.log(number);
复制代码
  • A: 1 1 2
  • B: 1 2 2
  • C: 0 2 2
  • D: 0 1 2

答案

16. 下面代码的输出是什么?

function getPersonInfo(one, two, three) {
  console.log(one);
  console.log(two);
  console.log(three);
}

const person = "Lydia";
const age = 21;

getPersonInfo`${person} is ${age} years old`;
复制代码
  • A: Lydia 21 ["", "is", "years old"]
  • B: ["", "is", "years old"] Lydia 21
  • C: Lydia ["", "is", "years old"] 21

答案

17. 下面代码的输出是什么?

function checkAge(data) {
  if (data === { age: 18 }) {
    console.log("You are an adult!");
  } else if (data == { age: 18 }) {
    console.log("You are still an adult.");
  } else {
    console.log(`Hmm.. You don't have an age I guess`);
  }
}

checkAge({ age: 18 });
复制代码
  • A: You are an adult!
  • B: You are still an adult.
  • C: Hmm.. You don't have an age I guess

答案

18. 下面代码的输出是什么?

function getAge(...args) {
  console.log(typeof args);
}

getAge(21);
复制代码
  • A: "number"
  • B: "array"
  • C: "object"
  • D: "NaN"

答案

20. 下面代码的输出是什么?

function getAge() {
  "use strict";
  age = 21;
  console.log(age);
}

getAge();
复制代码
  • A: 21
  • B: undefined
  • C: ReferenceError
  • D: TypeError

答案

21. 下面代码的输出是什么?

const sum = eval("10*10+5");
复制代码
  • A: 105
  • B: "105"
  • C: TypeError
  • D: "10*10+5"

答案

22. cool_secret可以访问多长时间?

sessionStorage.setItem("cool_secret", 123);
复制代码
  • A:永远,数据不会丢失。
  • B:用户关闭选项卡时。
  • C:当用户关闭整个浏览器时,不仅是选项卡。
  • D:用户关闭计算机时。

答案

23. 下面代码的输出是什么?

var num = 8;
var num = 10;

console.log(num);
复制代码
  • A: 8
  • B: 10
  • C: SyntaxError
  • D: ReferenceError

答案

24. 下面代码的输出是什么?

const obj = { 1: "a", 2: "b", 3: "c" };
const set = new Set([1, 2, 3, 4, 5]);

obj.hasOwnProperty("1");
obj.hasOwnProperty(1);
set.has("1");
set.has(1);
复制代码
  • A: false true false true
  • B: false true true true
  • C: true true false true
  • D: true true true true

答案

25. 下面代码的输出是什么?

const obj = { a: "one", b: "two", a: "three" };
console.log(obj);
复制代码
  • A: { a: "one", b: "two" }
  • B: { b: "two", a: "three" }
  • C: { a: "three", b: "two" }
  • D: SyntaxError

答案

26. JavaScript全局执行上下文为你创建了两个东西:全局对象和this关键字.

  • C: 视情况而定

答案

27. 下面代码的输出是什么?

for (let i = 1; i < 5; i++) {
  if (i === 3) continue;
  console.log(i);
}
复制代码
  • A: 1 2
  • B: 1 2 3
  • C: 1 2 4
  • D: 1 3 4

答案

28. 下面代码的输出是什么?

String.prototype.giveLydiaPizza = () => {
  return "Just give Lydia pizza already!";
};

const name = "Lydia";

name.giveLydiaPizza();
复制代码
  • A: "Just give Lydia pizza already!"
  • B: TypeError: not a function
  • C: SyntaxError
  • D: undefined

答案

29. 下面代码的输出是什么?

const a = {};
const b = { key: "b" };
const c = { key: "c" };

a[b] = 123;
a[c] = 456;

console.log(a[b]);
复制代码
  • A: 123
  • B: 456
  • C: undefined
  • D: ReferenceError

答案

30. 下面代码的输出是什么?

const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"));
const baz = () => console.log("Third");

bar();
foo();
baz();
复制代码
  • A: First Second Third
  • B: First Third Second
  • C: Second First Third
  • D: Second Third First

答案

31. 单击按钮时event.target是什么?

<div onclick="console.log('first div')">
  <div onclick="console.log('second div')">
    <button onclick="console.log('button')">
      Click!
    </button>
  </div>
</div>
复制代码
  • A: div外部
  • B: div内部
  • C: button
  • D: 所有嵌套元素的数组.

答案

32. 单击下面的html片段打印的内容是什么?

<div onclick="console.log('div')">
  <p onclick="console.log('p')">
    Click here!
  </p>
</div>
复制代码
  • A: p div
  • B: div p
  • C: p
  • D: div

答案

33. 下面代码的输出是什么?

const person = { name: "Lydia" };

function sayHi(age) {
  console.log(`${this.name} is ${age}`);
}

sayHi.call(person, 21);
sayHi.bind(person, 21);
复制代码
  • A: undefined is 21 Lydia is 21
  • B: function function
  • C: Lydia is 21 Lydia is 21
  • D: Lydia is 21 function

答案

34. 下面代码的输出是什么?

function sayHi() {
  return (() => 0)();
}

typeof sayHi();
复制代码
  • A: "object"
  • B: "number"
  • C: "function"
  • D: "undefined"

答案

35. 下面这些值哪些是假值?

0;
new Number(0);
("");
(" ");
new Boolean(false);
undefined;
复制代码
  • A: 0, '', undefined
  • B: 0, new Number(0), '', new Boolean(false), undefined
  • C: 0, '', new Boolean(false), undefined
  • D: 所有都是假值

答案

36. 下面代码的输出是什么?

console.log(typeof typeof 1);
复制代码
  • A: "number"
  • B: "string"
  • C: "object"
  • D: "undefined"

答案

37. 下面代码的输出是什么?

const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
复制代码
  • A: [1, 2, 3, 7 x null, 11]
  • B: [1, 2, 3, 11]
  • C: [1, 2, 3, 7 x empty, 11]
  • D: SyntaxError

答案

38. 下面代码的输出是什么?

(() => {
  let x, y;
  try {
    throw new Error();
  } catch (x) {
    (x = 1), (y = 2);
    console.log(x);
  }
  console.log(x);
  console.log(y);
})();
复制代码
  • A: 1 undefined 2
  • B: undefined undefined undefined
  • C: 1 1 2
  • D: 1 undefined undefined

答案

39. JavaScript中的所有内容都是...

  • A:原始或对象
  • B:函数或对象
  • C:技巧问题!只有对象
  • D:数字或对象

答案

40. 下面代码的输出是什么?

[[0, 1], [2, 3]].reduce(
  (acc, cur) => {
    return acc.concat(cur);
  },
  [1, 2]
);
复制代码
  • A: [0, 1, 2, 3, 1, 2]
  • B: [6, 1, 2]
  • C: [1, 2, 0, 1, 2, 3]
  • D: [1, 2, 6]

答案

41. 下面代码的输出是什么?

!!null;
!!"";
!!1;
复制代码
  • A: false true false
  • B: false false true
  • C: false true true
  • D: true true false

答案

42. setInterval方法的返回值什么?

setInterval(() => console.log("Hi"), 1000);
复制代码
  • A:一个唯一的id
  • B:指定的毫秒数
  • C:传递的函数
  • D:undefined

答案

43. 下面代码的返回值是什么?

[..."Lydia"];
复制代码
  • A: ["L", "y", "d", "i", "a"]
  • B: ["Lydia"]
  • C: [[], "Lydia"]
  • D: [["L", "y", "d", "i", "a"]]

答案

文中如有错误,欢迎在评论区指正,如果这篇文章帮助到了你,欢迎点赞和关注。

想阅读更多优质文章、可关注我的github博客,你的star✨、点赞和关注是我持续创作的动力!

推荐大家使用Fundebug,一款很好用的BUG监控工具~

推荐关注我的微信公众号【code秘密花园】,每天推送高质量文章,我们一起交流成长。

关注公众号后回复【加群】拉你进入优质前端交流群。

1

我们是字节跳动互娱研发团队,包含抖音短视频、抖音火山版、TikTok、Faceu、轻颜、剪映等,截止2020年1月,抖音日活(DAU)已经突破4亿,并继续保持高速增长。你会支持产品研发和相关架构工作,每一行代码都能影响亿万用户。

2021 届校招内推码:DRZUM5Z

官网投递:job.toutiao.com/s/JR8SthH


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK