一年半前端人的求职路

首发个人博客 🔥

种一棵树,最好的时机是十年前,其次是现在

个人情况

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)

  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,避免了年后的激烈竞争😎

学习资源

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴见到您,您可以尝试以下的方法来快速找到工作:1. 尝试使用社交媒体,例如LinkedIn,Twitter和Facebook来建立网络。2. 通过网上搜索可以找到许多前端开发的职位。3. 参加技术会议,了解行业动态,开拓社交网络。4. 阅读一些有关前端开发的技术书籍,加强技术知识。5. 尝试参加技术竞赛,提高自身实践能力。 ### 回答2: 作为一个专科非计算机专业,有一年半的前端开发工作经验,找到工作可以按以下几个步骤进行。 1. 提升技能:作为非计算机专业且只有一年半的工作经验,通过持续学习和提升技能来增加竞争力非常重要。可以选择参加在线教育平台的前端开发课程,学习最新的前端技术和框架,提高自身能力。 2. 项目展示:将自己的前端开发项目整理成一个个有吸引力和实际效果的作品,并创建个人网页或使用码云、GitHub等开源平台进行展示,以吸引潜在雇主的注意。 3. 拓宽网络:通过参加相关技术社区、技术论坛、行业交流会议等活动来扩展自己的人脉。将自己的项目分享给他人,获得反馈和建议。积极参与讨论和交流,与从业者建立联系。 4. 网络求职平台:创建个人求职资料,包括简历和个人介绍,将其上传至各种网络求职平台,如猎聘网、智联招聘等,并设置个人求职意向为前端开发岗位。定期更新自己的简历和求职状态,关注潜在的招聘机会。 5. 面试准备:前端开发是一个技术密集型的职业,对面试的准备非常重要。研究常见的面试问题,准备好自己的技术、项目经验和解决问题的能力的介绍,进行模拟面试来提高表达和应答能力。 6. 主动求职:在网络平台上寻找适合自己的岗位,并主动向相关企业投递求职材料。此外,还可以通过个人介绍信、电话或社交媒体等方式主动联系一些目标公司,表达自己的兴趣和能力。 最后,要有耐心和积极的态度面对求职过程中的挑战。尽可能扩大自己的求职范围,包括大小企业、初创公司、外资企业等,有时候一份小公司经验也可以成为进一步求职的契机。 ### 回答3: 作为专科毕业生,非计算机专业出身,在前端开发领域拥有一年半的工作经验,要快速找到工作,可以采取以下几个步骤: 1. 提升前端技能:在前端开发领域,技能是非常重要的。通过学习相关课程、阅读专业书籍、参加培训班等方式不断提升自己的技能水平。可以学习HTML、CSS、JavaScript等基础知识,并深入了解常用的前端开发框架和工具。 2. 扩大职业网络:建立起广泛的职业网络非常重要。可以通过参加技术交流会议、行业研讨会、加入前端开发者社区等方式结识更多的同行,并向他们学习和寻求职业建议。同时,可以利用社交媒体平台,如LinkedIn等,积极寻找工作机会和与潜在雇主建立联系。 3. 完善个人简历和作品集:同时将自己的工作经验和相关项目整理成简洁、有吸引力的个人简历和作品集。简历要突出自己的前端技能、项目经验和成果,并注重语言表达和排版的规范。作品集可以展示自己的项目实践,尽可能包含多个不同类型和难度的项目,以证明自己的能力。 4. 主动积极找工作:除了等待招聘信息出现,还可以主动积极地找工作机会。可以浏览招聘网站、社交媒体和专业网站上的招聘信息,并针对性地投递个人简历。同时,也可以向自己熟悉的前同事、朋友和家人寻求帮助,了解是否有职位推荐或内部招聘机会。 5. 持续学习和更新知识:前端开发领域的技术日新月异,保持持续学习和更新的态度非常重要。可以关注行业动态,参与在线课程和技术社区,并不断尝试新的开发工具和技术,以保持自己的竞争力和吸引力。 通过以上步骤,你可以有效地增加自己找到前端开发相关工作的机会。记住,保持积极态度、灵活适应市场需求,并展示出自己的热情和学习能力是非常重要的。祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值