首发个人博客 ?
种一棵树,最好的时机是十年前,其次是现在
【面试】2020年底面经
个人情况
2018.9开始实习,2019.7毕业于某二本。老东家前端团队100人左右,社招基本不算实习经验,算是一年半经验出去战斗。
一、先说原因
1、想看看外面的世界
从2018.9
年实习 -> 2019.7
转正 -> 2021.3
离职,没见过外面的世界,自己说不上来老东家的一些好与坏,只是感觉在一家公司呆久了,不管是同事、环境、技术相关,都趋于一种小变化的节奏。至于这是好是坏,因人而异吧。
2、个人成长
写了很久的相似业务,感觉对自己的成长来说,帮助很小。一直是vue
,一直是toB
,一直都是his系统
。近一年以来,基本也是自己在负责两个项目,很想和别人一起做项目,学习大佬的姿势。也很想做做其他的产品,或者toC
等等,想让自己能接触更多的东西。打听了有赞技术挺强,用的也是大厂偏爱的React
,自己想转这方面的,也是为了一个大厂梦,所以自己需要做出一些改变。
3、生活的压力
结婚需要房子,杭州的房价又不低,必须得去奋斗,说白了还是缺钱
。提离职之前也大概了解了老东家的涨幅,下家给的翻倍
,没办法拒绝。也是为了提高自己的base
,为以后做做准备。
二、面试结果(按顺序排)
1、微点(offer)
出去面试的第一家,3轮技术+一轮hr,给的薪资还可以,其他年终1-3个月,单休+五险一金最低,自己就不考虑了
2、涂鸦(现场挂)
信心满满的去现场面,被锤了一顿。次要原因是:我给的pdf简历,重点的地方用其他颜色标记了。结果涂鸦hr打印出来的简历这些标重点的都没了。面试官也很无奈,只能拣其他能看见的关键字问,我又不太熟,就只能GG了。给自己的打击挺大的。。。主要原因还是自己菜?
3、海康(一面20mins挂)
一面二十多分钟,然后给我挂了?
4、端点(offer)
一面电话,二面现场,三面HR电话。技术栈react,前端七八十人左右,给的薪资也还行,听说那边90%是3个月年终,本来是要去的,后面有了有赞的offer。
5、有赞(offer)
前后大概一周,年前最后一个工作日收到offer,自己提了离职。这里写下主要的问题吧,有想看我的回答的可以去博客瞅两眼【面试】2020年底面经
6、字节跳动(一面1h20mins挂)
年前拿了有赞的offer,准备去了。可惜的时候没有面过大厂。快到离职日期的时候,朋友帮我内推了一下字节,带着试一试的心态,简单准备了一下。一面1h20min,个人感觉没有想象的那么难,编程题没做好,是自己的问题,再加油吧??。
面试中个人问题
1、话太多
一个问题自己能说好久,说着说着就跑题了。自己面试实习生,也遇到过这样的。这样会给自己在面试管的印象扣分。面试还是拣重点的回答,回答也不能太短,需要在中间给面试官提问的时间。
2、答非所问
不会就是不会,很多知识点,如果是没听过的,或者自己没去了解过的,就不要扯,这样只会拉长面试的时间。某些知识点不会,直接说。面试官就接着下一个问题了,也能让面试官更全面的了解自己。
3、算法薄弱
遇到算法题,总是想着用暴力法解决,写的代码有点难看。多去刷刷题,没有基础的,每种类型的刷几道简单的就行,像我这种比较初级的程序员,考的基本是简单的算法题。
有赞面经
一面电话 (1h)
- 讲讲最近写的项目
- 讲讲自己写的打印插件,vue-iframe-print,和其他打印方式对比。分页问题,默认背景图如何显示(知道有 css,但是记不住是那个),自定义样式等等
- 权限系统(RBAC),具体实现,接口权限校验。通用接口如何校验,可复用的业务接口如何校验
- 讲一讲OAuth
- 微前端(项目在用) 为什么要用微前端,和 iframe 对比了一下。
- 实现一个水平垂直居中?flex:1 含义? 一道场景题
- margin 塌陷?有没有遇到过其他 css 问题?
- vue 响应式原理
- 组件 data 为什么是一个函数?
- vue Object.defineProperty 缺陷?数组 7 个方法怎么重写的?
- dep 依赖搜集与 watcher 派发更新流程?dep 是发布者还是订阅者?怎么知道每一个 watcher 要通知哪一个 dep?
- keep-alive 原理?
- 讲一讲虚拟 dom
- 讲一讲vue diff 算法
- 为什么使用 key 能提升 diff 性能
- this 指向的理解?声明时和运行时指向?箭头函数指向?修改 this 指向?
- call,apply,bind 区别?讲一下实现一个 bind 的思路
- 函数柯里化概念,常用场景?
- 关于缓存的一些东西?如何提高缓存命中率?
- 详细描述一下输入 URL 到页面打开的过程,尽量详细些?
- 数组和链表在计算机中存储的方式?计算机中增加一个数组元素的方式?
- 你有什么想问我的?
然后约了二面,视频 coding
一面视频 coding(45mins)
/**
* 1. 实现一个函数,判断两个变量值是否相等
*
* 注意
* - 数据类型不限于示例,尽可能考虑边界
* - function 引用相等即可
*/
const foo1 = {
a: 1,
b: "1",
c: NaN,
d: [
{
a: 1,
b: 2,
},
],
f: {
a: 1,
},
g: null,
};
const foo2 = {
a: 1,
b: "1",
c: NaN,
d: [
{
a: 1,
b: 2,
},
],
f: {
a: 1,
},
g: null,
};
function isEqual(target1, target2) {}
console.log(isEqual(foo1, foo2), "isEqual");
/**
* 2. 实现 getValue 函数来获取path对应的值
*/
var object = { a: [{ b: { c: 3 } }] }; // path: 'a[0].b.c'
var array = [{ a: { b: [1] } }]; // path: '[0].a.b[0]'
function getValue(target, valuePath, defaultValue) {}
console.log(getValue(object, "a[0].b.c", 0)); // 输出3
console.log(getValue(array, "[0].a.b[0]", 12)); // 输出 1
console.log(getValue(array, "[0].a.b[0].c", 12)); // 输出 12
/**
* 问题 3
* 将一天24小时按每半小划分成48段,我们用一个位图表示选中的时间区间,例如`110000000000000000000000000000000000000000000000`,
* 表示第一个半小时和第二个半小时被选中了,其余时间段都没有被选中,也就是对应00:00~01:00这个时间区间。一个位图中可能有多个不连续的
* 时间区间被选中,例如`110010000000000000000000000000000000000000000000`,表示00:00-1:00和02:00-02:30这两个时间区间被选中了。
*
* 要求:写一个函数timeBitmapToRanges,将上述规则描述的时间位图转换成一个选中时间区间的数组。
* 示例输入:`"110010000000000000000000000000000000000000000000"`
* 示例输出:`["00:00~01:00", "02:00~02:30"]`
*/
function timeBitmapToRanges(str) {}
console.log(
timeBitmapToRanges("110010000000000000000000000000000000000000000000")
);
console.log(
timeBitmapToRanges("110011000000110000000000000000000000000000001111")
);
二面现场( 1h20mins)
上来就是两页纸,我人懵了。。。因为已经做过线上 coding 了,没做好心理准备~~~,也没复习这方面的。。。。自己这方面也比较薄弱,两题写了 20mins 左右。
- 大数相加: 给定两个字符串形式的非负整数 num1 和 num2 ,计算它们的和。leetcode 415. 字符串相加
- 写一个事件 Event 类,实现 on,off,emit,once 功能,同时 on 要支持 debounce。eg:on('click',function(){},500)
- 介绍下让自己成长最大的项目?
- 你觉得现在遇到的最难的问题是什么?
- 为什么要做微前端?
- 回到写的第二道题,说到了 setTimeout 设定的时间,函数能准确按时执行吗?setTimeout 怎么能做到准时?
- js 是单线程还是多线程?为什么?支不支持多线程?支持多线程的方式有哪些?node端多线程知不知道?进程和线程的区别?进程内存计算机如何分配?线程资源如何分配?
- 跨域的解决方案
- 如何实现移动端 1px 边框
- 什么是html 可替换元素?
- 一个图片对应多个 cdn 地址,如果第一个地址不能用了,需要换成下一个,怎么做?
- vue 生命周期详细描述下?改变组件 data 里面的东西会触发什么生命周期?
- vue2.x 响应式原理?Object.defineProperty 的一些参数?
- for in可以遍历出来那些东西?for in可以遍历数组吗?可以遍历出那些东西?
- vue组件 scoped作用?实现原理?其他的css隔离方案?
- 怎么用ES5 去实现ES6类的继承?
- 你觉得 eslint 有哪些规则比较有用?
- http1.1和http2的区别?http1.1中做了哪些项目优化?http1.1中用的哪些优化手段,会在http2中失效?http2.0还存在什么问题?http3了解吗?
聊了近一个半小时,终于结束了~~~面试小哥说让我等会,告诉了我卫生间在那,就走了,面试体验还是挺不错的,有些不知道的问题。面试官会换种问法,实在答不出来也会跟你说答案。
三面(50mins)
- 自我介绍
- 说一说最近一年做的最好的业务?你觉得你做的最出彩的地方是哪里?
- 处方打印,不同格式如何设置?
- 离线缓存 存在什么问题?
- 讲一讲权限系统?除了RBAC,还了解哪些权限设计吗?RBAC的优点?
- 给你一个需求:除了预设角色,某个人可以单独做其他的事情,怎么办?
- 讲一讲你们做的微前端? 父应用如何加载多个子应用? 路由整合是如何做的?
- 讲一讲局部打印的实现?
- api-proxy是如何实现的?业务越来越复杂,nginx是不是每次都要改?怎么解决?怎么做一个全局代理?在本地如何调试线上代码?
- 讲一下项目中定制化需求如何处理?更优雅的方式?面试官举了一个有赞的场景例子:关于不同商家后台,某个商家多了一个菜单?某个商家在通用页面A中有特殊的两个按钮?如何处理这种个性化的问题?深入一点,如何把个性化需求开放给其他商家自己开发?
- 如果让你写一个single-spa,你怎么做?两个子应用的app.js如何切换?js、css如何隔离?作为攻击者,如何突破用proxy实现的一个沙箱环境,或者说子应用如何才能访问父应用的window对象?
- 讲一讲项目中的全键盘操作?keyup监听怎么做的?addEventListener第三个参数?如何阻止冒泡事件?怎么阻止部分按键?
- 讲一讲oAuth 2.0
- 你为什么想出来看机会?对下一份工作期望是怎么样的?你现在是怎么学习的?
- 你有什么想问的?
接着就让我等一下,估计是去讨论去了,自己也知道,接下来如果有hr来,就80%过了。找个理由说hr不在的,基本就凉了。。。
四面(HR 40mins)
等待的时间是非常煎熬的~ 一会(忘记了是多久,差不多10分钟?),HR小姐姐来了,换了个位置,开始面对面谈。
- 刚刚聊下来感觉怎么样?
- 对自己1-3年的规划
- 前端方面有没有犯过比较大的故障?绩效好的情况下为什么要考虑机会?
- 你觉得自己还能在现在的业务中成长多少?或者说你还能为现在的业务做什么?
- 平时自己的学习方式?
- 你希望自己3年以后能达到什么水平?你觉得自己和P6差距在哪?
- 平时的工作节奏?
- 你对加入有赞的一些期待是什么?薪资是怎么样的期待?有没有其他offer?
- 你有什么想问的?
问了下什么时候能给结果?也说了自己有三个offer,年前需要给答复,HR小姐姐说,明天尽快。
等我到门口的时候,又问了下离职时间。这个时候自己才感觉有戏~~~~
拿offer & 提离职
第二天中午,hr给我电话了,下午发了满意的offer。接着自己就去找主管提离职了,主管说有点突然,他要开车回家,就搁置了一下,到晚上的时候,自己又主动找了下主管,当时也没说出结果,最后晚上十一点多,大领导打电话来问我离职的原因,自己说了成长和钱的问题,最后和主管约定了离职日期。
一些感想
离职想法产生之前,自己并没有太多准备。遗憾的是没有把大厂都面一遍,字节
是离职前一周的面的,没什么准备,卒。网易
找了内推,hr说资历太浅,卒。脉脉上找了个阿里
内推,给我投个H5技术专家,气死人?,卒。总体来说,没有个三年经验也挺难的,我2021.2投的,算是一年半经验,很多大厂简历都过不去。
幸运的是,年前拿到了offer,避免了年后的激烈竞争?
学习资源
- 人人都能看得懂的Leetcode力扣刷题教程合集 不错的算法视频讲解
- 种一棵树,最好的时机是十年前,其次是现在 分享个人学习的东西
- 字节飞书的学习计划 - 超清楚(必看) 字节前端知识梳理,很清楚,建议收藏
- 冴羽的博客 淘宝大神总结的前端基础
- vue 源码分析 个人感觉讲的不错,带你从头实现一个vue
- 前端面试之道 很全面,啥都有。可以来一波系统复习
- 大厂面试题每日一题 没事就来刷一刷
- awesome-coding-js 用JavaScript实现的算法和数据结构
- 前端进阶积累 包含算法题,可以看看
拉钩各种一块钱的课 - 良心推荐 不想买的,可以借号给你
内推(非996)!!!
基本信息
HC真的很多,我所在的部门前端20个HC,其他部门也可内推
- base:杭州西湖
- 邮箱:wujunjie@youzan.com
- 微信:V798595965
福利:每月月底发薪!每月980补贴!五险一金最高比例全额!14薪!
配置:Apple 13寸M1芯片16+256GB ,2K显示器,机械键盘
- 节奏:周35,六点多就走了,124,九点跑,企业打车免费不限额
- 其他:7天年假,每年加1天。超大健身房。全程跟进简历进度
有其他问题都可以加微信问我
岗位要求
- 资深前端开发工程师/技术专家 点击查看详情
- 技术栈:React + TypeScript + Node(不强制技术栈)
- 简历写明:毕业学校和时间、GitHub个人地址、个人博客等
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!