前端大厂面试题3

选择题
下面哪个不是css中的长度单位?
Answer©
A. px
B. rem
C. th
D. vw
以下代码运行的结果是?
Answer(C)
var x = 21
var girl = function () {
console.log(x)
var x = 20
}
girl()
A. 21
B. 20
C. undefined
D. null
关于箭头函数,下面正确的是哪个?
Answer (D)
A. 箭头函数可以通过 .call()、.apply()、.bind() 方法来重新绑定它的 this 值
B. 箭头函数可以像普通函数一样使用 arguments 对象
C. 箭头函数可以被 new,会像普通函数一样自动拥有 prototype 属性
D. 箭头函数没有自己的 this,但是会继承上层作用域的 this,就像其他普通的变量一样
以下哪些场景下请求会触发跨域?
Answer(ABC)
A. 由 XMLHttpRequest 或 Fetch 发起的跨域 HTTP 请求
B. CSS 中通过 @font-face 使用字体资源
C. 使用 drawImage 将 Images/video 画面绘制到 canvas
D. html script 请求 JS 资源
RGB(23,21,123) 的色值,我们转成 16 位进制的字符串去使用,其值为:
Answer(A)
A. #17157B
B. #23731A
C. #16232C
D. #14321A
问答题
可通过哪些手段,将页面 A 上的某个关键值传递给页面 B
Answer
跳转 url 上带 query 或 hash 的参数
通过 postmessage 传值
同域下可以通过 cookie 或者 localstorage
可以将值传递到服务器端,远程获取
什么是事件循环(EVENT LOOP)?
Answer
我们常常说 js 是单线程的,是指 js 执行引擎是单线程的,除了这个单线程,还有一个 任务队列,在执行 js 代码的过程中,执行引擎遇到注册的延时方法,如定时器,DOM 事件, 会将这些方法交给相应的浏览器模块处理,当这些延时方法有触发条件去触发的时候, 这些延时方法会被添加至任务队列,而这些任务队列中的方法只有js的主线程空闲了才会执行, 这也就是说我们常常用的定时器定的时间参数只是一个触发条件,具体多少时间后执行其实还需要看 js 主线程空闲与否

请给出下列代码的输出
null == undefined // true
0.1 + 0.2 == 0.3 // false
typeof NaN // “number”
typeof Function // “function”
typeof Object // “function”
typeof {} // “object”
‘a’ + 1 // “a1”
‘a’ - 1 // NaN
Function instanceof Object // true
Object instanceof Function // true
Answer
null == undefined // true
0.1 + 0.2 == 0.3 // false
typeof NaN // “number”
typeof Function // “function”
typeof Object // “function”
typeof {} // “object”
‘a’ + 1 // “a1”
‘a’ - 1 // NaN
Function instanceof Object // true
Object instanceof Function // true
Coding
paddingNum
/**

  • 使用 javascript 实现 paddingNum 方法
  • @description 分隔数字,每隔三位使用逗号分隔一次
  • @param {Number}
  • @returns {String} 返回分隔后的字符串
  • @example
  • paddingNum(33) // return ‘33’
  • paddingNum(1234.56) // return ‘1,234.56’
  • paddingNum(123456789) // return ‘123,456,789’
  • paddingNum(987654.321) // return ‘987,654.321’
  • paddingNum(-987654.3) // return ‘-987,654.3’
    */
    Test Case
    describe(‘test paddingNum’, () => {
    const tests = [
    { input: 33, output: ‘33’ },
    { input: 1234.56, output: ‘1,234.56’ },
    { input: 123456789, output: ‘123,456,789’ },
    { input: 987654.321, output: ‘987,654.321’ },
    { input: -987654.3, output: ‘-987,654.3’ },
    ]

tests.forEach(test => {
it(test ${test.input}, () => expect(paddingNum(test.input)).to.be.equal(test.output))
})
})
decodeString
/**

  • 使用 javascript 实现 decodeString 方法
  • @description 给定一个编码字符,按编码规则进行解码,输出字符串
  • 编码规则是 count[letter],将 letter 的内容 count 次输出,count 是 0 或正整数,letter 是区分大小写的纯字母
  • @param {String}
  • @returns {String} 处理后的字符串
  • @example
  • decodeString(‘3[a]2[bc]’) // 返回 ‘aaabcbc’
  • decodeString(‘3[a2[c]]’) // 返回 ‘accaccacc’
  • decodeString(‘2[abc]3[cd[e]]fg’) // 返回 ‘abcabccdecdecdefg’
    */
    Test Case
    describe(‘test decode’, () => {
    const s = ‘3[a]2[bc]’
    it(s, () => expect(decodeString(s) === ‘aaabcbc’).to.be.true)

const s1 = ‘3[a2[c]]’
it(s1, () => expect(decodeString(s1) === ‘accaccacc’).to.be.true)

const s2 = ‘2[abc]3[cd[e]]fg’
it(s2, () => expect(decodeString(s2) === ‘abcabccdecdecdefg’).to.be.true)

const s3 = ‘10[abc]3[cd[e]]fg’
it(s3, () => expect(decodeString(s3) === ‘abcabcabcabcabcabcabcabcabcabccdecdecdefg’).to.be.true)
})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张很嚣张~

支持一下小老弟吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值