23年底,两年前端菜狗被裁后的面试经历

前言

ps1:前言包含了自己的个人背景、心路历程、和自己的碎碎念,想看面经的同学可直接通过目录拉到下方

ps2:掘金上多是大佬面经,大佬们都比较厉害,大厂offer拿到手软~ 中小公司的面经不是太多,所以自己也想回馈下社区。本人真·菜狗,往下看就知道啦

个人背景

双非一本毕业,非计算机科班,目前毕业两年。

校招进的前东家,没换过其他公司。前东家是互联网某细分领域下的top1,勉强算个小厂吧,进公司一年后转入核心业务线,非常忙,做不完的业务需求,一年中除了每次放假前后的那两天,其余都是业务需求满负荷。

再加上我自己也比较菜,对技术也没了最开始的热情,一直在繁重的业务需求中麻痹自己,自己的技术并没有多少成长。导致我的项目经历特别的贫瘠,两个项目,一个是自己主R的模块重构,第二个是基于司内的埋点sdk搭建的预警系统,在面大厂的时候也被面试官直接说项目太简单了,没难点......

自己主要是用vue,写过node项目,webpack会基本配置(菜狗无奈...)

十月被裁

今年,其实不止今年,从去年前年开始已经能感受到大环境不好了。从校招就可看出来,我是21年进公司,当年和我同一批进公司的研发,大部分都是双非本或是双非硕。两年后的23年校招,我们组进到面试流程的,9个人中,7个211/985,6个硕士。

21年进公司后,公司其实一直在裁员、组织架构调整,并且频率逐年提升。我是今年10月份被裁,我这波已经是今年的第三波了,这还没算上小于10%的小规模裁员,听说年底还有一波。

n+1,还算满意,所以和前东家交接后直接开开心心走人啦~

躺平半个月

知道被裁的时候只有开心,因为当前的工作太累太累,base也不高,自己已经在计划着跑路了,正好被裁,还能拿一笔赔偿~

在家躺了两天,等了个周末就和对象回老家啦(对象也辞职了)。

回家后在父母店里帮帮忙,和老友吃吃饭,半个月很快就过去了。

(和老友们聊天其实真的让自己成长了挺多,在外面漂久了亦或者是当程序员当久了,一些很现实的问题我一直在逃避:买房、买车、结婚...... 这里就不扩展啦,免得跑题了)

10月底回到北京,回到北京后老毛病肾结石又犯了,硬撑了好几天,最后还是去医院做了碎石手术,恢复了好几天才将体内碎石全部排完。

面试经过

11.5号正式开始准备面试,这时其实已经开始焦虑了:有开支没收入、同批被裁的前同事已经在开始找工作但是不太理想约不到面试。

改简历、背八股文、刷算法题、投简历......

自己在准备阶段比较随性,并没有很高压,LOL世界赛每场都看、学累了就出去玩一天吃一天,所以在11.20才正式开始面试,此时距离被裁已经过了一个月。

最终结果

11.20~12.6,历时近三周,过简历约面试的有18家,参加了11家的面试

最终拿到两个offer:

一家做k12教育的,教育行业的那几个大公司之一,进去后是核心业务线,不是太卷,早9晚7,很少加班。不过涨幅给的很低、也没啥福利、并且自己对k12教育不太看好,就拒了。

第二家是做社区app的,规模还可以,有一定的知名度和用户量,涨幅给到20%+,房补餐补都有,不过早10晚9,思考了下还是接下了,赚钱嘛不磕碜~

碎碎念

最近行情真不行,大家能苟着还是苟着吧,互联网寒冬真不是空穴来风......

周围的同批被裁的大多还在找着工作,甚至上批被裁的少数也还在找工作,今年寒冬,年末更是寒上加寒。

经过这次面试,更加确信是真的菜,卷不过大佬们,在职的时候还想着多准备下冲个大厂,但真到自己失业了,一个多月没上班时只有焦虑,并没有躺平的闲适,所以有了offer就直接接下了。

自己可能并不适合前端这一行吧,希望自己之后可以尝试下更多可能性:提升学历 or 宇宙的尽头?

面经

ps:只列举了5个公司的面试题,其他没录音就没做记录

公司A(一面挂)

做设计稿编辑器的,类似蓝湖,公司总的100多人,前端30来个,所有研发7、80个

是自己的第一次面试,八股文准备得不好,直接挂了

  • 介绍下BFC

  • display属性有哪些值

  • 讲一下flex弹性布局

    • 怎么改变布局下元素的顺序?
  • 讲一下ES6的常用语法

  • for...in 和 for...of的区别

  • 改变this指向的方法有哪些

  • 如何实现一个call方法?说思路

  • 数组的reduce方法有用过吗?具体的用途?

    • 如果空数组调用reduce会发生什么?
  • 使用过git吗?常用指令?

    • rebase、reset、revert区别?
  • 需要在本地实现一个聊天室,多个tab页相互通信,不能用websocket,你会怎么做?

  • 说说的vue的响应式原理

    • vue3是怎么实现的?
  • proxy能够监听到对象中的对象的引用吗?

    • 如何让proxy去监听基本数据类型
  • vuex用过吗?知道vuex的原理吗?

  • 用过react吗?

  • 用过ts吗?

  • 用过node吗?说一下你维护的那个node项目

  • 有做过工程化的事情吗?说一下你对工程化的了解,对webpack的了解

  • webpack的rule,loader的执行流是怎么样的?

  • 有自己写过loader、plugin吗?具体讲一下

  • tree-shaking了解吗?讲一下

    • tree-shaking的操作是文件级别还是函数级别的
  • CI/CD了解吗?

  • 设计模式了解吗?讲一下了解的、用过的

  • 有做过性能优化吗?

    • 页面非常卡顿,卡顿不是因为数据很多,而是因为有很多计算,导致掉帧了,如何找出卡顿的原因?如何去debug找出来?
    • 如果有几百个函数需要执行,怎么去处理?
  • 10*10的100个方格,里面有很多障碍物,某个地方有个出口,你怎么去寻找最短路径?说想法

两道手写题:

  1. 实现promise.all
  2. 翻转二叉树,二叉树的左右节点翻转

公司B(offer)

做k12教育的,就是教育行业的那几个大公司之一,进去后是核心业务线,感觉不是太卷,早9晚7,很少加班

一面
  • 自我介绍

  • 着重问了项目:重构

  • 讲讲js数据类型

  • 介绍下BFC

  • 如何判断出一个元素是数组还是对象

  • 讲讲重排重绘?

    • 两者的关系
  • v-if、v-for绑定在同一元素怎么办,优先级?

    • vue3下优先级有区别吗?
    • 怎么避免?
  • 讲讲v-model的原理

  • vue的最佳实践是什么?

  • 如果需要你起一个新的vue项目,你会怎么去做,会用哪些工具、框架,需要怎么组织文件结构?

三道代码题:

js 复制代码
// ```1、输出结果
Promise.resolve().then(() => {
  console.log(0)
  return Promise.resolve(4)
}).then((res) => {
  console.log(res)
})
​
Promise.resolve().then(() => {
  console.log(1)
}).then(() => {
  console.log(2)
}).then(() => {
  console.log(3)
}).then(() => {
  console.log(5)
}).then(() =>{
  console.log(6)
})
// ```
​
​
// ```2、描述下列代码的执行结果
foo(typeof a);
function foo(p) {
  console.log(this);
  console.log(p);
  console.log(typeof b);
  let b = 0;
}
// ```
​
//# 3. 数字千分位
​
// ## 题目
​
// 将数字按照千分位生成字符串,即每三位加一个逗号。不考虑小数。<br>
// 如输入数字 `78100200300` 返回字符串 `'78,100,200,300'`
​
/**
* 数字千分位格式化(字符串分析)
* @param n number
*/
二面
  • 自我介绍

  • 主要就是问项目,两个项目都问了特别久,深挖

  • 如果线上除了事故级别的问题,大批量的用户不能提交了,如何去处理?

  • 讲讲vue2、vue3的区别

  • 有了解composition api底层怎么实现的吗?

  • vue2的响应式、双向绑定如何实现的?

    • 在这个方面vue3和vue2有何区别?
    • Vue3具体是用proxy怎么做的?
    • Vue3通过proxy监听数组和对象有何区别?
    • 数组的length是2,forEach的时候,长度增加为10了,forEach会重复执行吗?如果会那vue会怎么去做的?
    • 监听一个数组,数组变更了,那么数组的函数怎么会达到二次执行?
  • 说说虚拟dom

    • 虚拟dom能提升代码性能吗?
    • 有些框架不用虚拟dom但是他们的性能也不错是为什么?
  • vue是怎么把template模版编译成render函数的?

    • 什么是AST呢?
  • vue中还有其他方法实现v-model双向绑定吗?

两个手写题:

  1. 编写一个vue组件,组件内部使用插槽接收外部内容,v-model双向绑定,实现折叠展开的功能

  2. 利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a5b1c5

    • 如果需要是连续的呢?比如aabcccccaaa会变为a2b1c5a3
    • 再优化一下,如果只有一个元素那就将1给去掉
三面

三面是现场面,两个面试官,一个是该业务线的leader,另一个是该业务线的研发leader。没录音,主要问了个人规划、自己对裁员的看法、你觉得为什么裁的是你不是别人、你的优缺点等等这些偏hr的问题

公司C(二面挂)

也是做教育的,大前端,3、40人,有一些外包,现在急需前端,一般8、9点走

一面
  • 自我介绍

  • 介绍下最近的一个项目

  • 有做过h5和iframe和app的通信吗?

  • 聊一下微信授权

  • 有做过PC端项目吗?

  • vue的组件间的通信

    • 你提到eventBus,如果两个组件,组件A执行的emit触发事件,下一行写了一些代码,组件B on监听事件;那么是组件A的emit的下一行先执行还是on先执行?
  • setTimeout延时写成0,我们一般什么情况会这么做?

  • 微任务、宏任务描述一下

  • 讲讲虚拟dom

    • 虚拟dom渲染到页面的时候,框架做了什么动作
  • 了解了下上家公司的工作信息

  • 用过node吗?怎么用的?

  • 最近在了解其他方面的知识吗?

  • ai方面了解吗?

两道代码题

  1. 给定一个二维数组,其中只包含0和1。我们定义1相邻的区域是指1与1是上下左右相邻的区域。请编写一个JavaScript函数,找出给定二维数组中所有1相邻的区域。
  1. 封装一个函数,接收多个promise,其中只要有一个promise resolve或者reject了,那它整体就resolve了

    • 什么场景会用到这种实现?
二面

体验比较差,面试官对我的项目没有兴趣后,就让我自己讲项目,期间一直在做自己的事情,全程没有反馈,最后也意料之中的挂掉了

公司D(一面挂)

公司不大,100多个人,做游戏的,八个前端,偏中后台,不卷,很肯定的说晚上七点就能走,不加班

面试官不错,问问题由浅入深,不过自己有些没答上来就挂了

  • 自我介绍

  • 如何研究vue2/vue3的原理,你是怎么学习的?

  • 对源码的哪一块记得比较清楚?

    • 我:响应式,面试官:那说下响应式吧
  • webpack,自己写过loader和plugin吗?

  • 深问项目

  • 如果本地存储的草稿>5M了,有什么其他方案能够解决

  • new一个对象的时候会做些什么?

  • es6的class和es5的function的关系?

  • es5怎么实现继承?

  • 父类上的引用类型的属性,子类继承下来,还是那个引用类型吗?

    • class类的继承呢?
  • js代码执行顺序(事件循环)

    • 微任务产生的微任务是在本地循环还是下次循环?
    • 在嵌套的微任务,用户去对页面进行交互,能成功吗?
    • 换成宏任务可以成功吗?
  • 口述一下节流函数的实现

  • 口述一下,实现一个函数,接收字符串,返回对应的布尔值

    bash 复制代码
    - () true
    - ())) false
    - (()) true
  • 什么情况下会产生跨域?

    • 服务端请求服务端会跨域吗?
    • webpack或者vite中可以使用proxy解决跨域,它解决跨域的原理是什么?
    • 为什么跨域的时候有时候请求会发两次?
    • 那为什么非要有这个预检请求呢?
  • Vue2和vue3哪个更熟悉?

  • v-if和v-show的区别?

    • 它两在对页面产生重绘重排上面有什么不同?
    • 分别为一个组件设置v-if和v-show,值由false变成true,或者由true变成false,组件的生命周期会怎么执行?
  • v-if和v-for共同作用在一个元素,谁的优先级更高?

    • vue3呢?
    • 你觉得为什么vue3调整了优先级呢?
  • created和mounted的区别

    • 能在这两个声明周期里面通过this拿到method,data,$refs这些吗?
    • 比如我在created发起ajax请求,ajax完成之后,在其回调里面能拿到回调吗?

公司E(一面挂)

也是做教育的,技术上感觉比前两家做教育的更厉害点

追问的几个点没答上来,面试官不太满意

  • 自我介绍

  • 离职原因

  • 已经加入公司了还是还在找?

  • 除了vue有用过其他框架吗?

  • vue3有哪些新功能?

    • composition api和公共逻辑、公共组件有何区别?
    • 为什么vue3中组件能支持多个根节点?讲讲原理
  • vite的构建流程说一下?

    • 线上构建流程呢?
    • 说说vite和webpack的差异?
  • webpack的module、bundle、chunk分别指的是什么?

  • 一个vue单文件组件的构建过程?

    • 一个vue单文件是怎么生成线上的代码的?
  • vue的样式隔离是怎么做的?

    • scope是怎么做的样式隔离的?讲讲原理?
    • 如何打破scope的限制?
    • 为什么用deep就可以击穿scope的样式限制?
  • vue的祖孙组件的通信方案

  • 除了vuex还了解过其他的数据管理方案吗?比如mobx?

两个代码手写题

  1. 自定义实现eventBus

    • 需要支持on、once、off、emit
    • 如果emit的时候需要传入参数,怎么处理?
  1. 手写防抖、节流

建议

  • 目前工作真的不好找,能苟还是苟着吧~
  • 大公司进不去的话,可以试下中小型公司,中小型公司问的问题更偏实际开发一点,其中两个公司甚至完全没问八股文,全程死磕实际开发遇到的重难点。
  • 前端对算法要求不是太高,leetcode的easy全刷完,middle刷几个高频题就行。如果时间紧迫,单纯为了面试速成,推荐可以看看这个链接,只刷最高频的80%就足够了
相关推荐
y先森41 分钟前
CSS3中的伸缩盒模型(弹性盒子、弹性布局)之伸缩容器、伸缩项目、主轴方向、主轴换行方式、复合属性flex-flow
前端·css·css3
前端Hardy41 分钟前
纯HTML&CSS实现3D旋转地球
前端·javascript·css·3d·html
susu108301891144 分钟前
vue3中父div设置display flex,2个子div重叠
前端·javascript·vue.js
IT女孩儿2 小时前
CSS查缺补漏(补充上一条)
前端·css
吃杠碰小鸡3 小时前
commitlint校验git提交信息
前端
虾球xz3 小时前
游戏引擎学习第20天
前端·学习·游戏引擎
我爱李星璇3 小时前
HTML常用表格与标签
前端·html
疯狂的沙粒3 小时前
如何在Vue项目中应用TypeScript?应该注意那些点?
前端·vue.js·typescript
小镇程序员4 小时前
vue2 src_Todolist全局总线事件版本
前端·javascript·vue.js
野槐4 小时前
前端图像处理(一)
前端