两年前端双非二本,科班出身面经分享(已拿阿里,头条,pdd,快手offer)

两年前端双非二本,科班出身面经分享(已拿阿里,头条,pdd,快手offer)
最新回答
无色的海

2021-02-27 01:43:26

双非二本科班出身,两年经验前端拿下阿里、头条、PDD、快手等大厂offer的面经总结如下

一、基础准备
  • 前端八股文

    必看内容:原型链、继承的实现、数据类型、var/const/let对比、new的过程、this指向问题、bind实现方式、闭包、事件循环、类型判断、手写Promise。

    深入理解:例如将js原型链理解为链表,this为链表当前指向的原型,bind/call/apply为改变链表next指向;垃圾回收机制需掌握新生代和老生代,以及Scavenge GC算法;渲染页面过程需结合TCP网络层基础,解析算法、容错机制、图层树建立等。

    示例

    eventloop需答出新版chrome优化了await执行速度,await更早执行,以及node和浏览器的区别,新老node版本执行顺序的不一致。

二、小厂面试策略
  • 宗旨:能干活即可,重点考察API使用。
  • Vue技术栈准备

    复习vue、vuex、vue-router文档,结合项目经验和遇到的坑进行准备。

    常见问题

    vue生命周期及项目中使用场景。

    vue keep-alive常用属性。

    组件通信方式。

    hash和history区别。

    v-for唯一key的作用。

    vue运行机制及依赖收集。

    v-show和v-if的区别。

    watch和computed的使用场景。

    vuex中模块拆分方法。

    编码题:数组去重、CSS水平垂直居中。

三、中厂面试策略
  • 考察深度:不仅考察API使用,还考察独立思考能力和工程化知识,对广度也有要求。
  • Vue技术栈问题

    页面有父子组件时的渲染顺序及生命周期触发。

    keep-alive中只缓存router-view内某个组件的方法。

    组件通信中的eventbus原理。

    vue diff算法简述。

    3.0 proxy与2.0的区别(广度)。

    data为什么是函数。

    常用vue API原理(包括不限于nextTick、watch、computed)。

    编码题:call/apply/bind实现、节流防抖、class实现。

四、大厂面试策略头条、PDD、快手
  • 共同点:均会考察算法。
  • 头条面试流程

    一面基础,二面工程化和项目,三面广度。

    一二面从题库抽题,包括this、eventloop、promise等,最后给一道算法题(leetcode easy难度,最多不超过middle),特别喜欢问二叉树。

    示例问题

    promise.all异常处理。

    版本号比较排序。

    数组中第k个最大元素。

    二叉树中的所有路径。

    二叉树中和为某一值的路径。

    node中promisify实现。

    fetch兼容超时重传。

    观察者模式(高频)。

    String indexOf实现。

    扁平化、科里化。

  • 快手面试流程

    第一轮基础+场景题+工程+编码,第二轮技术深度+场景题。

    示例问题

    vue如何实现组件封装。

    动态拖拽场景中抓取div后显示最靠近div的基线(用队列方式解决)。

    图片、视频断点续传问题。

  • PDD面试流程

    两轮面试,二面出棘手算法题。

    示例问题:给定一个二叉树,找到该树中两个指定节点间的最短距离。

阿里
  • 面试难度:感觉难度最大,社招P6起,基本都是电话面,总流程3~4轮。
  • 面试流程

    一面:业务、技术、困难点、技术推进业务的事例,补1~2个基础问题,有的面试官会问http协议。

    二面:工程化切入,如项目中用到ssr,会细致入微的问webpack原理。

    三面:对行业的理解。

五、Node相关问题
  • 如果简历上写了koa、express,会问为什么要使用(对比node),中间件本质是什么。
  • 进程相关:孤儿进程和僵尸进程、多线程。
六、项目相关问题
  • 必问问题:项目中遇到最困难的事是什么,提前组织好语言,找一个例子,说明困难点及解决方案。
  • 其他问题:临时增加需求怎么处理?产品方案明显错误,技术怎么推进?
七、HR面策略
  • 保持对职位的强烈需求,提及工作氛围、技术、公司方面的优点。
  • 如果觉得不合适,明确表述顾虑,不浪费彼此时间。
八、面试经验总结
  • 基础题:必须答好,有自己的理解,最好答出亮点和项目中实际使用的地方。
  • 项目题和场景题:与面试官求同存异,不一样的地方不要过分纠结。
  • 编码题:说出自己的思路,要么一次写出来,要么直接说不会。
  • 面试过程:答题自信,胆大心细。
  • 反问环节

    对技术追求较高,可反问面试官公司针对某个问题的做法。

    在意氛围,可问多久搞一次技术分享。

    了解未来同事水平,可问公司项目如何区分用vue还是用react。

    关注工作内容,可详细问公司的业务和经济链路、盈利模式。

九、个人选择及建议
  • 虽然快手、头条、PDD薪资给的很多,基本是double的状态,但更看重公司未来的发展方向,最后选择了阿里。
  • 广大开发要想清楚未来3~5年要做什么,个人是陪伴着业务成长的。
十、难度与体验总结
  • 难度上:阿里>快手>PDD>头条。
  • 体验上:阿里>快手>PDD=头条。
  • 阿里的HRG并没有传闻中说的那么可怕,还是非常nice的,面试流程一周内也搞完了。