一周热文和最新 JS 进阶面试题 #4,网易资深前端架构师

56 阅读3分钟
  • C: { a: "three", b: "two" }

  • D: SyntaxError

答案: C

如果你有两个名称相同的键,则键会被替换掉。它仍然位于第一个键出现的位置,但是值是最后出现那个键的值。


26. JavaScript 全局执行上下文为你做了两件事:全局对象和 this 关键字。
  • A: 对

  • B: 错

  • C: 看情况

答案: A

基本执行上下文是全局执行上下文:它是代码中随处可访问的内容。


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

答案: C

如果某个条件返回 true,则 continue 语句跳过本次迭代。


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

答案: A

String 是内置的构造函数,我们可以向它添加属性。我只是在它的原型中添加了一个方法。基本类型字符串被自动转换为字符串对象,由字符串原型函数生成。因此,所有 string(string 对象)都可以访问该方法!


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

答案: B

对象的键被自动转换为字符串。我们试图将一个对象 b 设置为对象 a 的键,且相应的值为 123

然而,当字符串化一个对象时,它会变成 "[object Object]"。因此这里说的是,a["[object Object]"] = 123。然后,我们再一次做了同样的事情,c 是另外一个对象,这里也有隐式字符串化,于是,a["[object Object]"] = 456

然后,我们打印 a[b],也就是 a["[object Object]"]。之前刚设置为 456,因此返回的是 456


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

答案: B

我们有一个 setTimeout 函数,并首先调用它。然而,它是最后打印日志的。

这是因为在浏览器中,我们不仅有运行时引擎,还有一个叫做 WebAPI 的东西。WebAPI 提供了 setTimeout 函数,也包含其他的,例如 DOM。

callback 推送到 WebAPI 后,setTimeout 函数本身(但不是回调!)将从栈中弹出。

现在,foo 被调用,打印 "First"

foo 从栈中弹出,baz 被调用. 打印 "Third"

TCP协议

  • TCP 和 UDP 的区别?
  • TCP 三次握手的过程?
  • 为什么是三次而不是两次、四次?
  • 三次握手过程中可以携带数据么?
  • 说说 TCP 四次挥手的过程
  • 为什么是四次挥手而不是三次?
  • 半连接队列和 SYN Flood 攻击的关系
  • 如何应对 SYN Flood 攻击?
  • 介绍一下 TCP 报文头部的字段
  • TCP 快速打开的原理(TFO)
  • 说说TCP报文中时间戳的作用?
  • TCP 的超时重传时间是如何计算的?
  • TCP 的流量控制
  • TCP 的拥塞控制
  • 说说 Nagle 算法和延迟确认?
  • 如何理解 TCP 的 keep-alive?

浏览器篇

  • 浏览器缓存?
  • 说一说浏览器的本地存储?各自优劣如何?
  • 说一说从输入URL到页面呈现发生了什么?
  • 谈谈你对重绘和回流的理解
  • XSS攻击
  • CSRF攻击
  • HTTPS为什么让数据传输更安全?
  • 实现事件的防抖和节流?
  • 实现图片懒加载?

开源分享:docs.qq.com/doc/DSmRnRG…