一年半前端人的求职路

首发我的博客 🔥

种一棵树,最好的时机是十年前,其次是如今css

我的状况

2018.9开始实习,2019.7毕业于某二本。老东家前端团队100人左右,社招基本不算实习经验,算是一年半经验出去战斗。html

1、先说缘由

一、想看看外面的世界

2018.9年实习 -> 2019.7转正 -> 2021.3离职,没见过外面的世界,本身说不上来老东家的一些好与坏,只是感受在一家公司呆久了,无论是同事、环境、技术相关,都趋于一种小变化的节奏。至于这是好是坏,因人而异吧。前端

二、我的成长

写了好久的类似业务,感受对本身的成长来讲,帮助很小。一直是vue,一直是toB,一直都是his系统。近一年以来,基本也是本身在负责两个项目,很想和别人一块儿作项目,学习大佬的姿式。也很想作作其余的产品,或者toC等等,想让本身能接触更多的东西。打听了有赞技术挺强,用的也是大厂偏心的React,本身想转这方面的,也是为了一个大厂梦,因此本身须要作出一些改变。vue

三、生活压力

结婚须要房子,杭州的房价又不低,必须得去奋斗,说白了仍是缺钱。提离职以前也大概了解了老东家的涨幅,下家给的翻倍,没办法拒绝。也是为了提升本身的base,为之后作作准备。node

2、面试结果(按顺序排)

一、微点(offer)

出去面试的第一家,3轮技术+一轮hr,给的薪资还能够,其余年终1-3个月,单休+五险一金最低,本身就不考虑了react

二、涂鸦(现场挂)

信心满满的去现场面,被锤了一顿。次要缘由是:我给的pdf简历,重点的地方用其余颜色标记了。结果涂鸦hr打印出来的简历这些标重点的都没了。面试官也很无奈,只能拣其余能看见的关键字问,我又不太熟,就只能GG了。给本身的打击挺大的。。。主要缘由仍是本身菜😂nginx

三、海康(一面20mins挂)

一面二十多分钟,而后给我挂了😂git

四、端点(offer)

一面电话,二面现场,三面HR电话。技术栈react,前端七八十人左右,给的薪资也还行,据说那边90%是3个月年终,原本是要去的,后面有了有赞的offer。程序员

五、有赞(offer)

先后大概一周,年前最后一个工做日收到offer,本身提了离职。这里写下主要的问题吧,有想看个人回答的能够去博客瞅两眼【面试】2020年末面经github

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

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

面试中我的问题

一、话太多

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

二、答非所问

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

三、算法薄弱

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

有赞面经

一面电话 (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 = {
  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 了,没作好心理准备~~~,也没复习这方面的。。。。

  1. 大数相加: 给定两个字符串形式的非负整数 num1 和 num2 ,计算它们的和。leetcode 415. 字符串相加
  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,避免了年后的激烈竞争😎

学习资源

image.png

相关文章
相关标签/搜索