双非二本,毕业一年多,斩获杭州大厂offer,他学了些什么?

前端三元同学

共 7585字,需浏览 16分钟

 ·

2021-03-31 10:37

个人情况

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年底面经[1]

6、字节跳动(一面1h20mins挂)

年前拿了有赞的offer,准备去了。可惜的时候没有面过大厂。快到离职日期的时候,朋友帮我内推了一下字节,带着试一试的心态,距离上一次面试已经一个月了,简单准备了一下。一面1h20min,个人感觉没有想象的那么难,编程题没做好,是自己的问题,再加油吧💪🏻。

面试中个人问题

1、话太多

一个问题自己能说好久,说着说着就跑题了。自己面试实习生,也遇到过这样的。这样会给自己在面试管的印象扣分。面试还是拣重点的回答,回答也不能太短,需要在中间给面试官提问的时间。

2、答非所问

不会就是不会,很多知识点,如果是没听过的,或者自己没去了解过的,就不要扯,这样只会拉长面试的时间。某些知识点不会,直接说。面试官就接着下一个问题了,也能让面试官更全面的了解自己。

3、算法薄弱

遇到算法题,总是想着用暴力法解决,写的代码有点难看。多去刷刷题,没有基础的,每种类型的刷几道简单的就行,像我这种比较初级的程序员,考的基本是简单的算法题。

有赞面经

一面电话 (1h)

  1. 讲讲最近写的项目
  2. 讲讲自己写的打印插件,vue-iframe-print,和其他打印方式对比。分页问题,默认背景图如何显示(知道有 css,但是记不住是那个),自定义样式等等
  3. 权限系统(RBAC),具体实现,接口权限校验。通用接口如何校验,可复用的业务接口如何校验
  4. 讲一讲OAuth
  5. 微前端(项目在用) 为什么要用微前端,和 iframe 对比了一下。
  6. 实现一个水平垂直居中?flex:1 含义? 一道场景题
  7. margin 塌陷?有没有遇到过其他 css 问题?
  8. vue 响应式原理
  9. 组件 data 为什么是一个函数?
  10. vue Object.defineProperty 缺陷?数组 7 个方法怎么重写的?
  11. dep 依赖搜集与 watcher 派发更新流程?dep 是发布者还是订阅者?怎么知道每一个 watcher 要通知哪一个 dep?
  12. keep-alive 原理?
  13. 讲一讲虚拟 dom
  14. 讲一讲vue diff 算法
  15. 为什么使用 key 能提升 diff 性能
  16. this 指向的理解?声明时和运行时指向?箭头函数指向?修改 this 指向?
  17. call,apply,bind 区别?讲一下实现一个 bind 的思路
  18. 函数柯里化概念,常用场景?
  19. 关于缓存的一些东西?如何提高缓存命中率?
  20. 详细描述一下输入 URL 到页面打开的过程,尽量详细些?
  21. 数组和链表在计算机中存储的方式?计算机中增加一个数组元素的方式?
  22. 你有什么想问我的?

然后约了二面,视频 coding

一面视频 coding(45mins)

/**
 * 1. 实现一个函数,判断两个变量值是否相等
 *
 * 注意
 * - 数据类型不限于示例,尽可能考虑边界
 * - function 引用相等即可
 */

const foo1 = {
  a1,
  b"1",
  cNaN,
  d: [
    {
      a1,
      b2,
    },
  ],
  f: {
    a1,
  },
  gnull,
};

const foo2 = {
  a1,
  b"1",
  cNaN,
  d: [
    {
      a1,
      b2,
    },
  ],
  f: {
    a1,
  },
  gnull,
};

function isEqual(target1, target2{}
console.log(isEqual(foo1, foo2), "isEqual");

/**
 * 2. 实现 getValue 函数来获取path对应的值
 */

var object = { a: [{ b: { c3 } }] }; // 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 了,没做好心理准备~~~,也没复习这方面的。。。。

  1. 大数相加: 给定两个字符串形式的非负整数 num1 和 num2 ,计算它们的和。leetcode 415. 字符串相加[2]
  2. 写一个事件 Event 类,实现 on,off,emit,once 功能,同时 on 要支持 debounce。eg:on('click',function(){},500)
  3. 介绍下让自己成长最大的项目?
  4. 你觉得现在遇到的最难的问题是什么?
  5. 为什么要做微前端?
  6. 回到写的第二道题,说到了 setTimeout 设定的时间,函数能准确按时执行吗?setTimeout 怎么能做到准时?
  7. js 是单线程还是多线程?为什么?支不支持多线程?支持多线程的方式有哪些?node端多线程知不知道?进程和线程的区别?进程内存计算机如何分配?线程资源如何分配?
  8. 跨域的解决方案
  9. 如何实现移动端 1px 边框
  10. 什么是html 可替换元素?
  11. 一个图片对应多个 cdn 地址,如果第一个地址不能用了,需要换成下一个,怎么做?
  12. vue 生命周期详细描述下?改变组件 data 里面的东西会触发什么生命周期?
  13. vue2.x 响应式原理?Object.defineProperty 的一些参数?
  14. for in可以遍历出来那些东西?for in可以遍历数组吗?可以遍历出那些东西?
  15. vue组件 scoped作用?实现原理?其他的css隔离方案?
  16. 怎么用ES5 去实现ES6类的继承?
  17. 你觉得 eslint 有哪些规则比较有用?
  18. http1.1和http2的区别?http1.1中做了哪些项目优化?http1.1中用的哪些优化手段,会在http2中失效?http2.0还存在什么问题?http3了解吗?

聊了近一个半小时,终于结束了~~~面试小哥说让我等会,告诉了我卫生间在那,就走了,面试体验还是挺不错的,有些不知道的问题。面试官会换种问法,实在答不出来也会跟你说答案。

三面(50mins)

  1. 自我介绍
  2. 说一说最近一年做的最好的业务?你觉得你做的最出彩的地方是哪里?
  3. 处方打印,不同格式如何设置?
  4. 离线缓存 存在什么问题?
  5. 讲一讲权限系统?除了RBAC,还了解哪些权限设计吗?RBAC的优点?
  6. 给你一个需求:除了预设角色,某个人可以单独做其他的事情,怎么办?
  7. 讲一讲你们做的微前端?父应用如何加载多个子应用?路由整合是如何做的?
  8. 讲一讲局部打印的实现?
  9. api-proxy是如何实现的?业务越来越复杂,nginx是不是每次都要改?怎么解决?怎么做一个全局代理?在本地如何调试线上代码?
  10. 讲一下项目中定制化需求如何处理?更优雅的方式?面试官举了一个有赞的场景例子:关于不同商家后台,某个商家多了一个菜单?某个商家在通用页面A中有特殊的两个按钮?如何处理这种个性化的问题?深入一点,如何把个性化需求开放给其他商家自己开发?
  11. 如果让你写一个single-spa,你怎么做?两个子应用的app.js如何切换?js、css如何隔离?作为攻击者,如何突破用proxy实现的一个沙箱环境,或者说子应用如何才能访问父应用的window对象?
  12. 讲一讲项目中的全键盘操作?keyup监听怎么做的?addEventListener第三个参数?如何阻止冒泡事件?怎么阻止部分按键?
  13. 讲一讲oAuth 2.0
  14. 你为什么想出来看机会?对下一份工作期望是怎么样的?你现在是怎么学习的?
  15. 你有什么想问的?

接着就让我等一下,估计是去讨论去了,自己也知道,接下来如果有hr来,就80%过了。找个理由说hr不在的,基本就凉了。。。

四面(HR 40mins)

等待的时间是非常煎熬的~ 一会(忘记了是多久,差不多10分钟?),HR小姐姐来了,换了个位置,开始面对面谈。

  1. 刚刚聊下来感觉怎么样?
  2. 对自己1-3年的规划
  3. 前端方面有没有犯过比较大的故障?绩效好的情况下为什么要考虑机会?
  4. 你觉得自己还能在现在的业务中成长多少?或者说你还能为现在的业务做什么?
  5. 平时自己的学习方式?
  6. 你希望自己3年以后能达到什么水平?你觉得自己和P6差距在哪?
  7. 平时的工作节奏?
  8. 你对加入有赞的一些期待是什么?薪资是怎么样的期待?有没有其他offer?
  9. 你有什么想问的?

问了下什么时候能给结果?也说了自己有三个offer,年前需要给答复,HR小姐姐说,明天尽快。

等我到门口的时候,又问了下离职时间。这个时候自己才感觉有戏~~~~

拿offer & 提离职

第二天中午,hr给我电话了,下午发了满意的offer。接着自己就去找主管提离职了,主管说有点突然,他要开车回家,就搁置了一下,到晚上的时候,自己又主动找了下主管,当时也没说出结果,最后晚上十一点多,大领导打电话来问我离职的原因,自己说了成长和钱的问题,最后和主管约定了离职日期。

一些感想

离职想法产生之前,自己并没有太多准备。遗憾的是没有把大厂都面一遍,字节是离职前一周的面的,没什么准备,卒。网易找了内推,hr说资历太浅,卒。脉脉上找了个阿里内推,给我投个H5技术专家,气死人😤,卒。总体来说,没有个三年经验也挺难的,我2021.2投的,算是一年半经验,很多大厂简历都过不去。

幸运的是,年前拿到了offer,避免了年后的激烈竞争😎

学习资源

  • 人人都能看得懂的Leetcode力扣刷题教程合集[3] 不错的算法视频讲解
  • 种一棵树,最好的时机是十年前,其次是现在[4] 分享个人学习的东西
  • 字节飞书的学习计划 - 超清楚(必看)[5] 字节前端知识梳理,很清楚,建议收藏
  • 冴羽的博客[6] 淘宝大神总结的前端基础
  • vue 源码分析[7] 个人感觉讲的不错,带你从头实现一个vue
  • 大厂面试题每日一题[8] 没事就来刷一刷
image.png

参考资料

[1]

【面试】2020年底面经: https://alexwjj.github.io/views/fe/interview/2020%E5%B9%B4%E5%BA%95%E9%9D%A2%E7%BB%8F.html#%E7%BB%93%E6%9E%9C

[2]

leetcode 415. 字符串相加: https://leetcode-cn.com/problems/add-strings/

[3]

人人都能看得懂的Leetcode力扣刷题教程合集: https://www.bilibili.com/video/BV1wA411b7qZ

[4]

种一棵树,最好的时机是十年前,其次是现在: https://alexwjj.github.io/

[5]

字节飞书的学习计划 - 超清楚(必看): https://bitable.feishu.cn/appNuDKPaGtimrdkB0JnXmpoktZ

[6]

冴羽的博客: https://github.com/mqyqingfeng/Blog

[7]

vue 源码分析: https://www.bilibili.com/video/BV1LE411e7HE

[8]

大厂面试题每日一题: https://q.shanyue.tech/

社群

字节跳动 IES 团队预备招聘社群,加我好友即可加入社群。

加入社群后你能收获什么:

  • 我和我的同事们会在群里和大家一起聊聊字节跳动对前端工程师的要求。
  • 收集一些大家的疑问,整理成 QA 文档发布,解答一些常见疑惑。
  • 这是一个氛围轻松的群,大家可以聊技术,也可以聊生活中的趣事。
  • 这个群会长期发展下去。
  • 如需内推,可以私聊我,一对一指导简历。

目前这个群仅限200人,现在还剩下50 个名额。即使你不打算很快面试,也可以先加入社群哦,绝对是你今年做的非常正确的一个选择!

加好友记得备注 "IES" 才可通过




点个在看你最好看



浏览 48
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报