开篇先允许我自我介绍一下,作者本人前端开发5年经验。一直在小厂徘徊,主导做过一些开发规范也自研了团队内部的cli脚手架。整体的技术深度还比较欠缺...所以大家就当看个乐吧,有不对的地方欢迎各位大佬指出。
因为我电脑总是频繁的蓝屏(iMac,不知道咋回事),所以资料丢失了很多。
对了,还需要额外介绍一下我的职业经历,我最近一份的工作经历是作业帮。
其实这次面试对我收获挺大的,同时而言带来的打击也是比较多的...我面试的初衷是希望大家能够达到良性的沟通,就算最后没有办法当同事。也希望能给彼此带来收获和成长(同时也避免卷)。
因为我还在不断的面试中,所以有面试经验也会不断的分享出来,大家可以持续关注~
阿里(夸克)
一面:
- 自我介绍(开发规范,cli)
- 开发规范实际遇到的问题(人的问题与技术的问题)
- 为什么辞职?
- cli的原理和研发过程遇到的问题
- low code平台组件的技术难点
面试完以后,主要聊的是从做事情的角度来作答的,较少聊技术细节。所以一面面试官觉得我整体技术的深度和广度都欠缺一些。但是看在老乡的面子上...还会给我二面的机会。后续下午告诉我,他和leader聊完以后,leader觉得没必要再聊了。后续也没有二面了。
百度(小度)
一面:
- 自我介绍
- 需要请求200个url,一次性只能发送10个,该怎么在最短的时间内(持续维护10个并发请求队列)请求完
- display: flex的原理和flex:1的作用
- 移动端适配,rem。
- cookie和session的区别和关系
- http的状态码,为什么服务端要自定义状态码
- cookie跨域的问题
- 普通函数和箭头函数的区别
- koa和express的区别
面试完以后,面试官也是觉得可以过二面,后续和leader商量完以后...说位置已经有更合适的人了。其实本身这个岗位是全栈工程师...从我的角度上而言,也会有一点点的不match。
美团(金融)
一面:
- 自我介绍
- 推代码规范的细节以及后续的发展
- 代码规范团队的执行程度以及收益
- 工程化方面的思考
- 算法题 - 有效的括号(2种实现思路及方案,并且分析优劣势)
- 算法题 - 数组中找到重复的元素(4种实现思路及方案,lastIndexOf和indexOf的方案最优,因为借助浏览器实现)
- Event Loop(给出一段示例代码,描述执行结果)
- 面试之外
- 之所以不问Vue源码和JavaScript基础,是因为我的方向偏架构和基建方向。其他问题留给接下来的面试考察。
- 你还有什么要问我的吗?(除了没办法直接告知面试结果,其他都可以)
- 假如入职以后,工作职责是什么?(基建和架构方向的工作,可能会涉及到一些业务)
二面:
- 自我介绍(规范、cli)
- 规范推进遇到的问题
- 人的问题
- 团队支持度的问题
- 老项目的问题
- 时间成本
- 前端微服务
- 团队管理
- 精力占比
- 如何管理团队
- 梯队划分
- 职责划分
- 可视化平台
- 物料(动态物料,静态物料)
- 离开作业帮的原因
- 美团团队介绍
- 团队规模,预计招聘人数
- 岗位职责以及后续负责的事情
- 业务模式介绍
- 求职意向
后续主动给HR打电话,HR表示未通过。我追问了一下原因,HR表示...面试官直接在群里面说不合适了,暂时未有其他原因。
滴滴(金融)
一面:
- 自我介绍(代码规范、脚手架)
- cli脚手架模板的分层与继承
- HTML中 有什么用
- Cookie跨域共享(子系统登录的问题)
- 同源策略
- localStorage存满了会发生什么
- JavaScript原型链
- new一个构造函数,原理发生了什么?
- async、await的实现原理(语法糖和Generator)
- for of和for in 的区别以及原理
- for of是否可以使用async await
- for in 能不能遍历出构造函数原型的属性
- ES6的自定义遍历结构
- Reflect
- 宏任务和微任务
- 简述Event Loop运行机制
- 微任务中假如写一个死循环,是否会执行下一个微任务?
- web workers中假如写一个死循环,是否会阻塞其他线程
- 输入一个url到网页呈现的过程
- 浏览器在解析HTML的过程中,生成DOM树,解析CSS规则树
- 浏览器布局渲染(父div的高度为auto,子div的高度为500)这个时候怎么渲染
- css背景图片的加载时机是什么
- https的加载过程
- http2.0有什么新特性?
- 服务端渲染
- nuxt.js
- 为什么要有BFF?
- 对性能的影响原理是什么?
- 除此之外其他的优势有哪些?
- H5与客户端的通讯方式
- JSBridge
- 双向通讯
- 目前的求职意向
- 你还有什么要问我的吗?
- 我假如有机会入职的话,这个岗位的职责是什么?在团队大概负责什么样的事情
二面:
- 自我介绍
- TypeScript类型推导
- typeof
- 联合类型
- 断言
- 泛型
- Vue3.0和2.0的区别
- 源码体积的优化
- 数据劫持的优化
- diff算法的优化
- 继承
- class extends
- 深拷贝
- Promise原理
- 微任务、宏任务
- resolve和then
- Promise.all原理
- 计数器模式
- 设计模式
- 单例模式
- inject feature
三面:
- 自我介绍(开发规范,cli)
- 开发规范推行过程中遇到的问题
- 人的问题(看法,理解,接受度,技术影响力)
- 技术的问题(增量检查,执行状况监测分析)
- Docker容器化带来的好处
- 持续部署与测试(消除了线上线下的环境差异)
- 环境标准化与版本控制(回滚,压缩、备份)
- 跨平台性与镜像
- cli后续的想法与扩展
- 工作台的概念
- 增加部署能力
- 带团队方面的经验
- 梯队划分
- 精力安排
- 行为准则
- 技术成长
- 技术分享
- 业务抽象
- 你还有什么要问我的吗?
- 假如可以入职的话,以后对我的预期是什么
火花思维
一面:
- 自我介绍
- 手写一个Promise
- 浏览器输入url的过程发生了什么?
- 重排、重绘
- 负载均衡、集群
- HTTP
- 有多少种版本?
- 每个版本有什么差异?
- HTTP2.0的传输方式
- JavaScript原型链
- 为什么要有原型链
- 原型链的__proto__
- 客户端和Webview通讯
- 怎么通讯
- DeepLink
- 性能优化
- 通过技术分析问题
- 首屏优化
- HTTP优化
- 接口优化
- 缓存
- 控制渲染时序
- Vue源码 - 初始化过程、nextTick
- webpack自定义loader,plugins
- JavaScript垃圾回收机制
- 标记清除
- 计数
- Chrome V8是怎么做的?
- 介绍@axe/cli脚手架写的过程中遇到了什么难题
- 模板组合的难题
- 数据传输的难题
- 路径确定的难题
- 算法题(看到我的LeetCode,面试官觉得没必要了)
二面:
- 自我介绍
- 业务问题
因为我的电脑蓝屏了...所以当时的资料丢了,但是我唯一印象比较深刻的就是...二面面试官提问的方式比较小白,希望候选人从盘古开天辟地的时候谈起...