微信前端工程师社招面经

背景

问题比较多,而且很多面试题都是跟个人项目相关的,项目相关的问题借鉴意义不大,所以这里总结一些与项目无绝对关系的问题,欢迎围观~

笔试

1. 数组交集,编写一个函数,输入两个数组,输出它们的交集。输出数组中不含重复的元素,元素排列顺序可随意。

2. 二叉树的搜索,输入一个普通二叉树的根节点,实现一个调度器,调用调度器的next()方法,将返回二叉树中下一个最小的数;调用迭代器的hasNext()方法,将返回是否存在下一个数。二叉树节点是整数,无序。

3. 三角形个数,输入一个非负整数的数组,如果将数组元素选作三角形的边长,编写一个函数,输出这个数组可构成的三角形数量。

4. 数组切分问题,输入一个正序排列的整型数组,如果它可以被切分为1个或多个子序列,输出True,反之False。子序列需为连续的整型数组,并且长度至少为3。

例1:
输入: [1,2,3,3,4,5]
输出:True
解释:可以切分为2个各自连续的子序列:
1, 2, 3
3, 4, 5
例2:
输入: [1,2,3,3,4,4,5,5]
输出:True
解释:可以切分为2个各自连续的子序列:
1, 2, 3, 4, 5
3, 4, 5
例3:
输入: [1,2,3,4,4,5]
输出:False
解释:无法切分出长度至少为3的子序列。

1. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法.

2. 求下面代码的输出

function test(a,b) {
  console.log(b)
  return {
    test:function(c){
      return test(c,a);
    }
  };
}
var retA = test(0);  
retA.test(2);  
retA.test(4);  
retA.test(8);
var retB = test(0).test(2).test(4).test(8);
var retC = test('good').test('bad');  
retC.test('good');  
retC.test('bad');

1. top k

2. 闭包问题及优化

for (var i = 0; i < 4; i++) {
  setTimeout(function() {
    console.log(i);
  }, 300);
}

PS:一面笔试要求是30分钟,前4道算法题,二面笔试题是15分钟

与项目关系不大的问答题

1. 节流防抖(实现/场景/源码,如lodash实现原理)

2. 事件循环(浏览器/node/版本差异)

3. setTimeout实现原理

4. react和vue的区别

5. Promise原理

6. 前端错误监控及容灾

7. 性能优化

8. 谈谈node的内存泄漏

9. 开发过程中遇到的最大挑战是什么

10. 学习的动力怎么来的,如何维持

11. 浏览器的渲染机制是怎样的

12. SSR作用及优缺点

13. 如何进行状态管理

14. webpack及浏览器的技术分享目的是什么,分享了什么,怎么做的分享

15. 如何进行项目重构

16. 进程与线程的区别

17. 说说知道的设计模式

PS:由于面试全过程历时比较长,一些题目已经忘记了。大概记得这么点,然后很看项目,每一轮都详细问了项目~


#腾讯##社招##面经#
全部评论
问项目都会问哪方面的问题呀?
点赞 回复 分享
发布于 2021-09-06 08:56
看楼主资料是2004年届的嘛,还对大学学习的算法那么记得,太强了
点赞 回复 分享
发布于 2021-09-17 22:52

相关推荐

Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
4 25 评论
分享
牛客网
牛客企业服务