大厂面试题,看看到哪题会跪

对前端感兴趣的小伙伴,可以关注我的 Github 
以下是一些大厂考的高频题,也是中高级前端和初级前端的分水岭,大家可以试试自己解答一下,今天只出题不给答案。欢迎大家在评论区给出你的答案或者对于这些题目的见解 ?

一、问答题

1、什么是BFC,作用有哪些?哪些情况下会触发BFC?

2、解释一下盒模型,平常会怎么使用这个属性?

3、什么情况下你会使用 translate() 来替代绝对定位?

4、git 的 rebase 命令和 merge 命令的区别,什么时候该用 rebase ,什么时候该用 merge ?

5、你做的项目里面,什么样的业务场景里面遇到过跨域的问题,后来又是怎么解决的?

6、http 请求方式作用,请求头部解析 body 的属性,缓存的属性

7、304缓存,有了Last-Modified,为什么还要用ETag?有了Etag,为什么还要用Last-Modified?Etag一般怎么生成?

8、http2.0的优势?

9、以下代码会输出什么结果?为什么?

console.log('1');

setTimeout(function () {
  console.log('2');
  process.nextTick(function () {
    console.log('3');
  })
  new Promise(function (resolve) {
    console.log('4');
    resolve();
  }).then(function () {
    console.log('5')
  })
})
process.nextTick(function () {
  console.log('6');
})
new Promise(function (resolve) {
  console.log('7');
  resolve();
}).then(function () {
  console.log('8')
})

setTimeout(function () {
  console.log('9');
  process.nextTick(function () {
    console.log('10');
  })
  new Promise(function (resolve) {
    console.log('11');
    resolve();
  }).then(function () {
    console.log('12')
  })
})
复制代码

10、说说getOwnPropertyDescriptors函数,对象自身属性描述符有哪些?configurable 和 enumerable的作用?configurable 设置为true后还能删除该属性吗?

11、fetch 和 axios 的选型,各有什么优缺点

12、函数节流和防抖用于什么场景,说说实现的思路

13、有了解过 React 高阶函数么?你做过的项目中什么地方用到了高阶函数?高阶函数的有什么缺点

14、说说对 虚拟DOM 和 Diff 算法的理解

15、React-router 的底层原理有了解过么?BrowserRouter 和 HashRouter 的区别,HashRouter对于后端来说有什么影响?

16、Redux 中的 reducer 传入一个拷贝一份 state 数据是最佳实践,如果不这样做,会发生什么?为什么?

17、生产环境下 debug 的方案有哪些?

18、webpack 打包速度太慢了,有什么解决方案

19、说一下 Promise 的实现思路

二、代码题

1、实现 getProperty({a: 1, b: 2})  // [['a', 1], ['b', 2]]

2、至少用两种方案实现 duplicate([1,2,3,2,1]) // [1,2,3]

3、用缓存机制实现 记忆化斐波那契函数: f(n) = f(n - 1) + f(n -2),

4、实现 add(1, 2, 3)(10) // 输出16

5、实现 Promise.all()

6、简单的实现一下 redux

7、简单实现一个swiper

8、简单实现一个select

9、最长字符串

/**
* 说明:给定一个字符串,请找出其中无重复字符的最长子字符串的长度
* 输入描述:一个字符串
* 输出描述:一个整数
* 示例:
* ”abcabcbb", 其无重复字符的最长子字符串是'abc',其长度是3
* “bbbbb", 其无重复字符的最长子字符串是‘b',其长度是1
*/
复制代码

10、字符解码

/**
 * 说明:给定一个编码字符,按编码规则进行解码,输出字符串
 *      编码规则是`count[letter]`,将letter的内容count次输出,count是0或正整数,
        letter是区分大小写的纯字母
 * 示例:
 * const s = '3[a]2[bc]'; decodeString(s); // 返回'aaabcbc'
 * const s = '3[a2[c]]'; decodeString(s); // 返回'accaccacc'
 * const s = '2[abc]3[cd]ef'; decodeString(s); // 返回'abcabccdcdcdef'
 */
复制代码







转载于:https://juejin.im/post/5b9faeb4e51d450e837760cd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值