2020.8前端找工作记录

码农天地 -
2020.8前端找工作记录
记录一下自8月中旬离职之后准备以及找工作的经历,会提到个人感受到的招聘情况和一些前端面试题.会按照以下几个点来展开.背景信息(个人相关)整体找工作的感受整体节奏(时间安排)面试题整理(含算法题)感悟和总结背景信息(个人相关)

普通二本,计算机专业,三年工作经验(一年爬虫,两年前端+全栈),前端岗位,技术栈主要是vue.js + node.js.简历上稍微好的点应该就是在猎豹的工作经历和爬虫的工作背景.整体看来就是很一般般的.

整体找工作感受

在经历整个过程之后对找工作前的一些点的思考,希望减少一些同学对今年就业形势的误判.

整体就业形势的感受

因为受疫情影响,整体经济大形势是不好的,很多企业都在裁人,所以整体hc减少,工作不好找,这是在脉脉或者v2ex论坛里面很多人的反馈.但是我个人感受是今年招人的还是挺多的,就拿我的情况来说,我找工作一直用的boss直聘(boss招聘打钱),上面有300+条消息都看不过来(这个有点小诀窍,下面会提到),只有第一周我回了一些比较中意的hr简历,剩下的两周都没有再投简历.
结合约面试的情况来看,招聘主要集中在滴滴,美团,字节这三家.boss上发消息的10个里面有6个字节的.美团换着部门面面了三次,滴滴面了两次.面了三周的时间,基本上每天两场.最后陆陆续续拿到了6个offer.
后来我也分析了,整体hc减少是不假,但可能是10个小厂减少了20个hc,一个大厂涨了12个hc这样的情况,hc少了但是更集中了.
我的结论就是,有些事别老听别人说,要小马过河,自己去试试.
另外,我也有点困惑,今年找工作的这个情况到底是3年的工作经验带来的还是猎豹的工作经历带来的.

Github项目star数和个人博客对面试的影响

我在github上有一个500+ star的项目,还有平时有写博客的习惯,我从改简历开始就琢磨这些点该怎么表达更好,尽管我在每次自我介绍的时候都会提到在开发之余我会写写自己的项目和博客,但是目前github项目基本没有人问的,博客也只有百度5面和去哪儿二面的时候才有问到.
所以,这部分怎么说呢,属于锦上添花的,要搞好核心能力,不要把这些看太重,除非你这这两点非常非常优秀.

关于视频面和现场面

视频面确实方便,面试成本低,写代码也更方便,但是呢,视频面节奏比较慢,基本上不会一面之后立马二面,我见过最快的视频面隔了一个小时进入下一面,其他的都隔着1-3天不等.不如现场面痛快,今年的现场面基本上都能当场轻松的拿到offer.

boss上遇到的一些问题

我发现把boss的求职状态设置成[在职-暂不考虑]比设置成[离职-随时到岗]更有用,设置成[在职-暂不考虑]然后每天还正常的刷boss会收到更多的消息,个人感受,无实际依据.boss上有一部分人,不是hr也是不是team leader,但是也会找你要简历,这部分八成是赚内推奖励的,我的简历就被莫名其妙的推过几次,对于这种情况我不置可否,但是如果你有确定的内推人的话,最好甄别一下这种情况,把内推奖励留给小伙伴.整体节奏(时间安排)

第一周,主要用来回顾一下基础知识,看了下一些比较重要的知识点,没怎么看面试题,面试题基本上都是通过面试来查漏补缺的.同时开始约下周的面试.
第二周,开始面试,基本都是视频面,上午一场下午一场,好留出来时间整理遇到的问题.周六日基本不约面试,同时开始约下周的面试.这周的面试基本上全挂一面,惨不忍睹,当然也有拿offer的,作为保底.这不重要,重要的是查漏补缺,找出自己准备的和面试的差距.好有的放矢.
第三周,面试节奏放慢了一点,面试题都过了一遍了,所以这周基本上都能进二面了,也拿到了一些offer,这时候去推掉第二周拿到的offer.
第四周,这时候面试节奏更慢了,基本上是第三周面试进入比价靠后的面试和一些临时约的面试.这时候拿到的offer之后去推掉上周的offer.这周之后基本上面试结束,找工作告一段落,纠结纠结手里的offer,作出决定,然后等着入职就行了.

面试题整理常规知识点

在第一周的时候整理基础知识的时候侧重回顾的一些知识点,这里列一下

js基础知识从输入url到获得页面经历的所有事情(越细越好)原型链继承es6新特性DOM事件和事件流盒子模型事件循环BFCFlexPromise原理以及手写代码vue响应式原理vue虚拟dom & diff算法前端性能优化防抖和节流HTTP缓存常见算法(排序洗牌等)面试中遇到的高频题(跟上面会有重合)事件循环原型链vue响应式原理HTTP缓存防抖和节流vue3解决什么问题Vue 为什么不能检测数组和对象的变化,怎么处理(为什么通过索引操作数组不能触发响应式)vue router原理v-model实现原理vue.nexttickhttps的过程性能优化promise(基本上要求可以手写Promise.all方法,这个问的最多)async/await从输入url到看到页面经历的所有事情(越细越好,这道题知识点非常多)跨域形成原因以及解决方案深拷贝和浅拷贝(也会问到JSON.stringify JSON.parse这种方案的弊端)箭头函数和普通函数有什么区别最近在看什么新技术低频但是需要注意的面试题CSRF & XSSchrome设置小于12px字体node和浏览器事件循环有何不同webpack tree shakingmap & set前端有哪些技术(腾讯面试题,面试官会顺着你说的技术一个一个展开问)实现一个call/bind(call,apply,bind区别)get 和 post 的区别BFCyield如何给localStorage加上max-age功能Object.defineProperties都有那些参数,以及参数解释requestAnimation手写原型链和js各种继承模式让你重新做你做过的项目有什么可以改进的地方让一个元素消失的几种做法,有何不同,对子元素的影响如何遍历对象(接下来会问有何不同)搜索框输入需要注意的点(其实还是在问防抖)原生实现inserAfter事件委托应用场景,e.target和e.currentTarget区别HTTP缓存,对应字段,cache-contron都有那些值new过程都发生了什么面试遇到的算法题排序算法(冒泡,快排)洗牌算法v1.2.3 v0.3.0 这样的版本号比大小(找简单方法,不要随便写一个循环的版本)广度优先遍历用O(n)的复杂度合并两个有序数组数组生成树形结构
    var arr = [
        { id: 1, value: "节点1", p_id: 0 },
        { id: 2, value: "节点2", p_id: 1 },
        { id: 3, value: "节点3", p_id: 1 },
        { id: 4, value: "节点4", p_id: 2 },
        { id: 5, value: "节点5", p_id: 0 },
        { id: 6, value: "节点6", p_id: 5 },
        { id: 7, value: "节点7", p_id: 6 },
        { id: 8, value: "节点8", p_id: 6 },
    ];
    // 输出
    [{
        "id": 1,
        "value": "节点1",
        "p_id": 0,
        "children": [
            {
                "id": 2,
                "value": "节点2",
                "p_id": 1,
                "children": [
                    {
                        "id": 4,
                        "value": "节点4",
                        "p_id": 2,
                        "children": []
                    }
                ]
            },
            {
                "id": 3,
                "value": "节点3",
                "p_id": 1,
                "children": []
            }
        ]
    },
    {
        "id": 5,
        "value": "节点5",
        "p_id": 0,
        "children": [
            {
                "id": 6,
                "value": "节点6",
                "p_id": 5,
                "children": [
                    {
                        "id": 7,
                        "value": "节点7",
                        "p_id": 6,
                        "children": []
                    },
                    {
                        "id": 8,
                        "value": "节点8",
                        "p_id": 6,
                        "children": []
                    }
                ]
            }
        ]
    }]
数组L型输出
// L型输出
var arr = [

    ['1', '2', '3'],

    ['4', '5', '6'],

    ['7', '8', '9'],

];
// 输出大致顺序 1 4 7 8 9 2 5 6 3
数组求排列组合
// 数组排列组合
var arr = [
    ['A', 'B', 'C'],
    [1, 2, 3],
    ['X', 'Y', 'Z'],
];
// 输出类似 A1X A1Y A1Z ...
实现一个函数 find(obj, str),满足
var obj = {a:{b:{c:1}}};
find(obj,'a.b.c') //1
find(obj,'a.d.c') //undefined
乒乓球比赛判断输赢(这个表达起来费劲,但是是个贴合实际开发场景的例子.不常见,但是不难)

这些是能回忆出来的部分,算法题普遍没有那么难,递归比较多,另外能用简单的方式就用简单的方式,这样才能凸显能力.

感悟和总结一定要避免类似面试官问你项目中遇到什么问题没,你说没问题都解决了这样的回答,基本必挂(网易二面经验)上面的面试题同一个问题会有不同的表述,所以要认真审题,搞清楚问的知识点,避免面试官问在第三层,而你只答在第一层这样的事情,太拉跨(腾讯一面经验)找工作是个概率的事情,面试的次数多了就会中内推有时会可能会有意想不到的加持(面作业帮的体会)日常我们要留意构建自己的基础知识体系,这样在面试准备准备的时候不用恶补太多基础知识

最后希望在找工作的同学保持心态,都能顺利找到理想的工作.

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

加个好友,技术交流

1628738909466805.jpg