背景

本人前端,3年经验,由于个人的原因,决定跳槽,于是大概3月开始找工作,总历时大概2个月,面试了微信/阿里/头条,三家都拿到了offer,来分享一下面经。

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

本文答案均以链接的形式给出,因为我本人的一个特点就是回答题目一定要够详细,而且大部分的题目我都写过文章或者公众号转发过文章了,感兴趣可以直接关注公众号前端Q,希望对你有帮助~

整体流程

这里,我梳理了一些自己的心得,方便自己后面做直播,这里就当预告一下,先放个思维导图。

PS: 图片有点大,如果打不开,直接访问我的博客

微信

笔试

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

原题地址:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/

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

原题地址:https://leetcode-cn.com/problems/binary-search-tree-iterator/

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

原题地址:https://leetcode-cn.com/problems/valid-triangle-number/

  1. 数组切分问题,输入一个正序排列的整型数组,如果它可以被切分为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的子序列。

原题地址:https://leetcode-cn.com/problems/split-array-into-consecutive-subsequences/

  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

原题地址:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

  1. 闭包问题及优化
for (var i = 0; i < 4; i++) {
setTimeout(function() {
console.log(i);
}, 300);
}

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

与项目关系不大的问答题

  1. 节流防抖(实现/场景/源码,如lodash实现原理)(https://www.cnblogs.com/LuckyWinty/p/5949970.html#4564734)
  2. 事件循环(浏览器/node/版本差异)(https://mp.weixin.qq.com/s/QgfE5Km1xiEkQqADMLmj-Q)
  3. setTimeout 实现原理(https://mp.weixin.qq.com/s/7qTRSMqaqG8XZ9rpEBhYNQ)
  4. react 和 vue 的区别
  5. Promise 原理(https://juejin.im/post/5d6f7c83e51d4561c541a712)
  6. 前端错误监控及容灾(https://mp.weixin.qq.com/s/prf-mXexBh1Ie-ctq9FnzA)
  7. 性能优化(https://mp.weixin.qq.com/s/qXFd3f7CkEzz4u_1zl-TSw、https://mp.weixin.qq.com/s/dy1u2g9TeCoq2WOdPLqAXw、https://mp.weixin.qq.com/s/DJ8Fdq1_cIoW0_NYekZwFw、https://mp.weixin.qq.com/s/azeUIx0EA86EFQrtIRUKwQ、https://mp.weixin.qq.com/s/wDKKj5R8SYm-_75Zn1y30A、https://mp.weixin.qq.com/s/BOdnCYbMQfmCpUC3w3KZqw、https://mp.weixin.qq.com/s/FdG7uVIDXltNyskL3qh8Cw、太多了,贴不过来了,自己再总结吧)
  8. 谈谈 node 的内存泄漏(我的总结暂时没时间写,可以看看这篇,https://zhuanlan.zhihu.com/p/25736931)
  9. 开发过程中遇到的最大挑战是什么(梳理项目,得出难点)
  10. 学习的动力怎么来的,如何维持(有兴趣可以留意一下我的直播)
  11. 浏览器的渲染机制是怎样的(https://mp.weixin.qq.com/s/wcw30EUb2ds3AoW176WGeg)
  12. SSR 作用及优缺点(seo/首屏快/开发成本高等,我项目用的是vue ssr,没专门总结,可以先看这个,https://zhuanlan.zhihu.com/p/35871344)
  13. 如何进行状态管理(vuex/redux)
  14. webpack 及浏览器的技术分享目的是什么,分享了什么,怎么做的分享(https://mp.weixin.qq.com/s/1FySzmVrNjS6wjgqALC96g、https://mp.weixin.qq.com/s/wcw30EUb2ds3AoW176WGeg)
  15. 如何进行项目重构(知乎很多讨论,直接去参考就可以了,或者看看这个https://www.itzhai.com/refactoring/refactoring-principle.html)
  16. 进程与线程的区别(https://www.zhihu.com/question/25532384)
  17. 说说知道的设计模式(参考掘金小册子就可以了)
  18. CI/CD(https://mp.weixin.qq.com/s/MbeW8UNZ1fPekWcaNqmsCQ)

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

可能感兴趣的问答

  1. 面试一共几轮

我本人一共 4 轮技术面 + 1 轮HR面。目前微信职级为9级以下的技术岗不用经过面委,9级以下的一般4轮技术面,内部转岗可3轮技术面,9级及以上的需要走面委面试,大概形式是做份ppt去讲自己的项目经历及其他技术项。9级及以上的就5-10轮技术面不等。

  1. 历时多长

我本人总历时一个多月(相对来说算很快了),所以如果你要面腾讯,千万不要裸辞,不对,面什么都不要裸辞,这年头不好混,怂一点。

  1. 整体面试流程是怎样的

内推->一面->二面->三面->四面->HR面->口头offer->正式offer->背调->入职

每个阶段耗时一到两周的时间

  1. 微信工作地点

目前微信总部在广州,大部分的组都在广州,其中微信支付在深圳。

  1. 微信考算法多吗

多,基本上就是算法+项目

阿里

笔试

  1. n阶楼梯问题(尾递归的优化[函数最后调用自身可以减少中间变量|化递归为循环去优化]/备忘录优化)
  2. 节流防抖的实现(分析笔试答案时问到,总结差别,说出应用场景)(https://www.cnblogs.com/LuckyWinty/p/5949970.html#4564734)
  3. 深拷贝(类型考虑/Symbol/Date等的构造/循环优化/共用引用优化等),这里贴2篇文章给大家参考,https://juejin.im/post/5d6aa4f96fb9a06b112ad5b1,https://mp.weixin.qq.com/s/M7KBX3w2KqlWhZFHJSYP6Q)
  4. 封装一个只能输入数字的React组件

问答题

  1. 输入URL后发生了什么(https://mp.weixin.qq.com/s/DLq_GIkdnuOayThfi3jI0A)
  2. 事件循环说一下(https://mp.weixin.qq.com/s/QgfE5Km1xiEkQqADMLmj-Q)
  3. JS有几种基本类型,分别是什么,与对象的区别(不贴链接了,我认为是前端的都应该知道)
  4. JS 执行过程中是如何保存上下文的(堆和栈,可以看极客时间的《浏览器工作原理》,或者参考我这里,https://mp.weixin.qq.com/s/klZ6j3Gj9cwHGQFys6Hdjg、https://mp.weixin.qq.com/s/HqADCzMGlIFDNnMRLsPTAA)
  5. 你认为什么是前端
  6. 为什么想来阿里
  7. 最近在看什么书
  8. 微前端了解吗(https://mp.weixin.qq.com/s/awBqvJmqWc7JGxwgB0QQZA、https://mp.weixin.qq.com/s/80S-RFmoZoq8KfCH6YZ_Tg、https://mp.weixin.qq.com/s/HVwcY8JGyrK8VcN1Ic9sWQ)
  9. 你想成为什么样的人(个人成长规划)
  10. 项目中遇到的最大挑战是什么,如何解决的
  11. node 大量日志怎么处理的(缓冲队列)
  12. http2 的特点(https://mp.weixin.qq.com/s/OitrWEosrpuXh19o_TDasg)
  13. node 与其他语言有什么区别,其优劣势是什么
  14. csrf 的核心原理(https://juejin.im/post/5bc009996fb9a05d0a055192)
  15. node 事件循环(https://mp.weixin.qq.com/s/QgfE5Km1xiEkQqADMLmj-Q)
  16. FCP/FMP/FP 分别是怎样定义,如何统计(https://mp.weixin.qq.com/s/wDKKj5R8SYm-_75Zn1y30A)
  17. MySQL 题目,id 唯一,name 可以重复,求 name 有重复的所有数据
  18. 有没有推动过什么东西
  19. 未来的一个发展是否是全栈,如何规划(可以留意我的直播)
  20. 链路录屏的原理(可以分析rrweb即可,参考例子,https://mp.weixin.qq.com/s/PxEzBrr3YF1jD84c_p1uAA)
  21. 链路录屏法务问题如何解决(屏蔽关键信息/用户授权等)
  22. FMP 定义及统计,w3c的草案你知道吗(自行谷歌查找)
  23. react 项目的可持续维护性如何体现(自行谷歌查找)
  24. react hooks用过吗,为什么要用(没有专门总结,自行谷歌查找)
  25. h5 和小程序有什么区别(自行谷歌查找)
  26. https加密原理,中间人攻击知道吗(https://mp.weixin.qq.com/s/aMYp6Y5n26r9vdQIom4g0w、https://mp.weixin.qq.com/s/sHtZhRTNOihmxap5sDD6xQ)
  27. ng 负载均衡的方式有哪些(https://mp.weixin.qq.com/s/u-XbBwGxHrhJGiMiiqz26w、https://mp.weixin.qq.com/s/o2Us4Zj6DO2NHGQVaHIa1A)
  28. CDN 有什么作用(https://github.com/LuckyWinty/fe-weekly-questions/issues/24)
  29. 不可变数据里面,immutable,删除数组里面的列表(https://juejin.im/post/5b9b30a35188255c6418e67c,

    https://juejin.im/post/5e6a14b1f265da572978a1d3)
  30. 垃圾回收中,内部函数返给上层的对象是如何管理的
  31. es 静态分析原理(https://zhuanlan.zhihu.com/p/33843378)
  32. 有一个很大很大的文件,如何统计文件里面重复最多的行是哪行(参考git的记录存储)

头条

笔试题

一面:

  1. 执行代码求输出,并说明为什么,严格模式下输出有变化吗,为什么
var a = function () {this.b = 3;}
var c = new a();
a.prototype.b = 9;
var b = 7;
a(); console.log(b);
console.log(c.b);
  1. 给定一个升序整型数组[0,1,2,4,5,7,13,15,16],找出其中连续出现的数字区间,输出为["0->2","4->5","7","13","15->16"]
function summaryRanges(arr){
//TODO
}
  1. 请实现以下的函数,可以批量请求数据,所有的URL地址在urls参数中,同时可以通过 max 参数控制请求的并发度,当所有请求结束之后,需要执行 callback 回调函数。发请求的函数可以直接使用 fetch 即可
function sendRequest(urls: sring[],max:number,callback:()=>void){
//TODO
}

二面:

  1. 实现一个字符串反转:

    输入:www.toutiao.com.cn

    输出:cn.com.toutiao.www

要求:

1.不使用字符串处理函数

2.空间复杂度尽可能小

  1. 不借助变量,交换两个数。
function swap(a, b) {
//TODO
}
  1. 观察者模式与发布订阅者区别,并写出其模型

与项目无绝对相关的问答题

  1. vue 事件机制是如何实现的 (https://juejin.im/post/59ca5e975188257a8908959b)
  2. vue 的组件通信方式有哪些
  3. react fiber 的实现原理 (https://juejin.im/post/5dadc6045188255a270a0f85#comment)
  4. vue 响应式数据原理(vue2/vue3/依赖收集/发布订阅/watcher消息队列控制/Vue.set实现)(https://mp.weixin.qq.com/s/zDv_IQ36o_rRD25xN9uyuw、https://mp.weixin.qq.com/s/hTygoAan4yH3V4XV9iE1Pw)
  5. vue 转小程序怎么实现(ast/生命周期对齐/跨平台模块兼容/兼容细节点实现过程)
  6. 性能指标,如何理解TTI,如何统计,与FID有什么区别,如何实现统计,还聊了很多性能的东西(https://mp.weixin.qq.com/s/wDKKj5R8SYm-_75Zn1y30A)
  7. 说说你所了解的安全问题及防护方法(https://mp.weixin.qq.com/s/rU32rVM6Q-ele01ZB3RFzg)
  8. 说说你知道的设计模式,并举个对应的模式例子(https://mp.weixin.qq.com/s/x3OCgS_knmM4D5zNSIVGRg)
  9. 未来规划及学习方法
  10. 你觉得你是怎样拿到京东校招的sp的
  11. 遇到的最大挑战/过去的最大收获分别是什么

我本人的博客/公众号,似乎面试官都看过,都知道我学过什么,知道什么,所以很多我博客上有的东西都没问,甚至我引申到过去,都不让说,有种没机会表现的感觉,哈哈

感受&更多学习资料

其实单看问题,参考性还是比较小的,毕竟面试官主要会根据简历去发问。这里的一个感受就是,项目中遇到的最大挑战,这个问题真不好答,我当时答得也不够好,后面又回去总结了一波项目,建议大家都好好总结一下自己平时遇到的问题,寻根究底。

这部分的题目,我会同步到我的每周N题上,欢迎大家来交流答案啊。想刷题的也可以来,地址如下:

https://github.com/LuckyWinty/fe-weekly-questions/issues

有很多知识点,虽然我没被问到,但是我写了不少文章,感兴趣的话可以关注一下我的博客,地址如下:

https://github.com/LuckyWinty/blog

更多我觉得比较好的博客,地址如下:

交流

  • 欢迎加我微信(winty230),拉你进技术群,长期交流学习...
  • 欢迎关注「前端Q」,认真学前端,做个专业的技术人...

大厂面试过程复盘(微信/阿里/头条均拿offer,附答案篇)的更多相关文章

  1. 2020阿里Java面试题目大汇总,看看你离阿里还有多远,附答案!

    前言 首先说一下情况,我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿 ...

  2. 2020年春招面试必备Spring系列面试题129道(附答案解析)

    前言 关于Spring的知识总结了个思维导图分享给大家   1.不同版本的 Spring Framework 有哪些主要功能?   2.什么是 Spring Framework? Spring 是一个 ...

  3. 干货 | NLP算法岗大厂面试经验与路线图分享

    最近有好多小伙伴要面经(还有个要买简历的是什么鬼),然鹅真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面试来说,作者发现根本不是面经中说的样子 ...

  4. 200个最常见的JAVA面试问题(附答案)

    本文内容: 20个最常见的JAVA面试问题(附答案) 13个单例模式JAVA面试问题(附答案) 说说JVM和垃圾收集是如何工作的(附答案) 说说如何避免JAVA线程死锁(附答案) Java中HashS ...

  5. 大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

    前言 上次写了篇欢聚时代的面经,公众号后台有些读者反馈说看的意犹未尽,希望我尽快更新其他大厂的面经,这里先说声抱歉,不是我太懒,而是项目组刚好有个活动要赶在春节前上线,所以这几天经常加班,只能工作之余 ...

  6. 三年前端,面试思考(头条蚂蚁美团offer)

    小鱼儿本人985本科,软件工程专业,前端.工作三年半,第一家创业公司,半年.第二家前端技术不错的公司,两年半.第三家,个人创业半年.可以看出,我是个很喜欢折腾的人,大学期间也做过很多项目,非常愿意参与 ...

  7. 20届的阿里 头条 网易 滴滴 百度 小米等Java面经

    转载连接 个人博客:junxuelian.cn 总结:个人感觉回答面试官问题不必太官方和书面化,腾讯sng招实习被发现照着百度百科念.结果可想而知.用自己的话和理解去回答就好.可能应届生会抱怨设计题, ...

  8. 大厂面试来了,欢聚时代四年多经验的Java面经

    前言(也就是废话) 今年年底,额,不对,应该说是去年了,我开始进行了一个多月的面试之旅. 面试的公司并不多,但从体量上来看,基本算是一二三线的大厂都囊括了,其中还包括BAT,当然,最后我也是顺利的拿到 ...

  9. [干货,阅后进BAT不是梦]面试心得与总结---阿里、小米、腾讯

    之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇诚意之作,希望能给未来找工作的人一点指引和总结, 也希望能使大家少走点弯路 , 如 ...

随机推荐

  1. (上)python3 selenium3 从框架实现学习selenium让你事半功倍

    本文感谢以下文档或说明提供的参考. Selenium-Python中文文档 Selenium Documentation Webdriver 参考 如有错误欢迎在评论区指出,作者将即时更改.文章从我的 ...

  2. Kubernetes学习笔记(七):访问Pod元数据与Kubernetes API

    Downward API 我们已经了解到,使用ConfigMap和Secret向应用传递配置数据,这对于运行前预设的数据是可行的.但是对于那些不能预先知道的,就需要使用Downward API. Do ...

  3. 关于Java两点需要更新的知识

    HashMap的初始容量 背景 很多人可以把HashMap的原理描述的很溜.比如JDK1.7之前,底层数据结构是数组+链表.JDK1.8之后,出于效率上的考虑,在数组长度大于64,链表长度大于8的时候 ...

  4. Druid数据库连接池的使用

    Druid  阿里提供的数据库连接池,集以上连接池优点于一身,开发使用此连接池 使用配置文件方式获取Druid数据库连接池 TestDruid package com.aff.connection; ...

  5. Hello, CTF

    0x01 拿到题目后查壳,发现什么也没有,32位vc++ 0x02 放到IDA里,F5反编译,得到下图 很容易我们就看到了比较的函数,以及出现wrong和success的字符串,所以接下来就是仔细分析 ...

  6. jchdl - RTL实例 - AndAnd

    https://mp.weixin.qq.com/s/JhUB3M1WhjAyUrN1HPIPTA   AndAnd是三输入与门模块,输出为相与的结果.   参考链接 https://github.c ...

  7. URL与URI的联系与区别

    作者:daixinye链接:https://www.zhihu.com/question/21950864/answer/154309494来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  8. 用js数组实现最原始的图片轮播实现

    上班以来看到了,写了很多的轮播图效果,实现方法大致有 1.将图片局对定位,利用z-index和opacity实现图片渐现 2.用css3 的transtion:Xx xx left/right,实现左 ...

  9. Java实现 LeetCode 698 划分为k个相等的子集(递归)

    698. 划分为k个相等的子集 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, ...

  10. Java实现 蓝桥杯VIP 算法训练 判断字符位置

    判定字符位置 时间限制: 1Sec 内存限制: 128MB 提交: 487 解决: 251 题目描述 返回给定字符串s中元音字母的首次出现位置.英语元音字母只有'a'.'e'.'i'.'o'.'u'五 ...