四年前端真实过往面试经历

本文正在参加「金石计划 . 瓜分6万现金大奖」

我这个人不喜欢也不擅长面试,从毕业到现在其实经历过的面试并不多,有记录的就更少了,以下是我在工作四年时面过的几家公司的一些面试题,分享出来,有的有的答案,有的没有,有的是认真答的,有的是胡扯的,仅供参考。

地点在杭州,时间在前两年八九月份。

非技术问题

各个公司都会问一些非技术的问题,像我这种表达不太好的人回答这些问题都很痛苦,所以我都提前针对每个问题写了一些答案,每次面试前都会看看。

  • 1.自我介绍

这个基本上必不可少,我会准备个一两分钟的介绍,大致介绍一下自己的过往经历,再补充一点简历上没有提到的东西。

  • 2.离职原因

这个也是大概率会问的问题,原因往往不是单一的,我一般就从工资、所做的事情两个方面来回答。

  • 3.你的优势和劣势是什么

这个是我最讨厌的问题之一,怎么说感觉都在说套话,工作负责?不惧挑战?抗压能力强?。。。

可能是我确实没啥明显的优势吧,之前面试有赞,主管面,我的回答是技术还不错,然后这个主管拼命问我,你具体哪方面技术好,我。。。

  • 4.入职一个团队,你给自己的定位和规划

定位是啥呢,直接说前端工程师是不是跟没说一样,那应该说啥呢,一个解决问题的人?项目负责人?工具人。。。

规划的话应该就是熟悉同事、熟悉公司、熟悉业务、熟悉代码、上手干了吧。

  • 5.介绍自己主导过的项目

我其实没主导过啥项目,所以一般就从过往项目里挑一个相对来说比较有难度的来讲讲,从评审一路将到实现、测试到上线。

  • 6.你希望加入一个什么样的团队

每个人心中肯定都有一定要求,如实说即可,比如人数多呀,团队氛围好呀,技术强呀,有大佬呀等等。

  • 7.如果让你负责一条新的业务线,你一般会先去做哪些工作

有过这方面经验的人比较容易回答这个问题,我显然没有,当初是一通乱答。

  • 8.对前端行业的未来有什么看法

我觉得前端很有未来,必将一统天下。

  • 9.职业规划

很惭愧,作为一个工作这么多年的老前端,我好像并没有啥规划,对于转型做产品或管理,没有啥兴趣,也没有这个能力,所以对35以后的日子感到深深的担忧。

  • 10.在过往开发过程中有遇到过什么样的难题,或者项目上有遇到什么难点

这个问题应该也是高频问题,我在工作中遇到的非常难的问题其实不多,或者说没有,毕竟都是普通业务,可能有些当时觉得挺难的,但是过来了就忘了。

比如遇到一些兼容性问题、一些实现问题、一些性能问题,我在第一家公司做的是智能电视端的前端页面开发,电视盒子的性能是很垃圾的,所以很痛苦。

第一次上手新东西也会有一些难度,比如第一次用Nodejs做后端项目、命令行工具、第一次使用Weex开发页面、第一次使用canvassvg等。

做一些可视化大屏、搭建系统、重交互的需求时也会有一定难度。

其他还有一些莫名其妙的问题,比如项目突然起不来了,打包突然报错了等等。

  • 11.你现在用的框架和我们公司使用的不同,你会如何快速上手

我目前熟悉的是Vue,但是众所周知很多大厂用的都是React,所以必然会有这个问题,我觉得熟能生巧吧,先把文档看一遍,然后再多写,多问,多看。

  • 12.你还有什么问题要问的

没有这个问题的面试是不完整的,如果是我不去的公司我一般会直接说没有了,如果是想去的,那么一般会问问如下问题:

1.团队主要做的事情是什么

2.团队组成是怎么样的

3.对个人有什么培养的机制吗

4.加班情况是怎么样的

5.有机会独立负责一个项目吗

6.如果我进去的话,会对我有什么要求或期望吗

7.电脑用的Windows还是Mac

8.有什么福利

9.会有技术上的分享、研究、产出吗

….

乌鸫科技

阿里内包,面了三四轮吧,总体来说比较简单,要我了但没去。

1.数组转树

[
    {
        p: '浙江省', 
        city: '杭州市'
    },
    {
        p: '浙江省', 
        city: '宁波市'
    }, 
    {
        p: '江西省', 
        city: '上饶市'
    }
]

数组转树,实际开发中应该经常遇到,相信你肯定会的。

2.手写深浅拷贝

深拷贝我在实际开发中用的都是JSON.parse(JSON.stringify()),目前来说还没遇到什么问题。

使用递归也很容易实现,当然,要实现的很完善还是不容易的。

浅拷贝使用循环、扩展运算符,或者Object.assign方法都可以。

3.Vuecomputedwatch有什么区别

功能不同,我觉得其实没啥可比性。

4.Vue直接delete一个数组的属性,和使用Vue.delete方法删除属性有什么区别

https://v2.cn.vuejs.org/v2/api/#Vue-delete

5.介绍一下重绘和回流

对页面的性能影响不一样吧,不过我在平时开发中也没特别注意。

6.首页白屏的优化方法

这个我只有理论知识,没有实践经验。

7.对微前端的了解

用过但不多,详见为了实践微前端,重构了自己的导航网站

8.节流和防抖

setTimeout:这个我在行。

9.promisesetTimeout在事件循环里有什么区别

一个属于宏任务,一个属于微任务。

可以看一下我之前写的js烧脑面试题大赏其中的一道。

10.Nodejs的使用情况

11.介绍项目

我一般会介绍我开源的几个小项目,这些年我开源的几个小项目

12.遇到的挑战

网易云音乐

面试前我还是挺自信的,因为写了几篇文章,做了几个开源的小项目,于是有点飘飘然,然后就在这个一面中被虐的体无完肤。

一面是电话面试,问的吧也全是我简历上写到的东西,但是基本全部答不上来,问到最后我已经懵了,这个面试对我的打击太大了,之前总是抱怨在公司做的事情太简单,没有什么可以深入的可以提升的,但是却没有想过去了解每天开发中涉及到的一些东西的实现原理,一边只做一个API调用者,一边又在好高骛远,从那以后也清晰认识到了自己的水平,感觉到进大厂是无望了。

1.引用ElementUI组件是怎么保证只引用到了该组件本身,不会把其他组件打包进去,webpack有什么插件可以解决

问的是按需引入的问题,当时基本不知道,后来写过几篇文章来分析浅析组件库实现按需引入的几种方式Vue组件库实现按需引入可以这么做

可以调用的插件有unplugin-vue-componentsbabel-plugin-component

2.webpack插件可以用来干什么,插件获取到的是字符串数据还是什么

webpack我其实并不怎么熟悉,只进行过一些基础的配置,插件和loader都没实际开发过,至于插件可以做什么,应该是想做什么做什么吧。

3.怎么实现一个Dialog组件,设计思路,如何挂载到全局,同时打开多个怎么控制层级,ElementUIDialog是挂在组件下的还是全局的,如果要挂在全局怎么实现

后面我就把ElementUI从我的简历中删掉了,因为我也只是用过,并没有看过它的源码。

如何挂载到全局,其实很简单,获取到组件的$el手动移到body下就可以了,但当时就是没想到,一直说如果要这样,我就自己实现这个组件。。。

4.Nodejs服务怎么做进程守护?pm2的原理是怎么样的

因为简历上写了使用过Nodejs做过几个小的服务端项目,所以。。。但是我也只不过是使用KoaExpressMySql之类的做过一点简单的接口服务,写过几个简单的命令行工具,再深入我也不会了呀。

5.jsBridge通信的原理,安卓和ios分别是怎么实现的

jsBridge的代码就在APP项目里,但是我却从来没有想着看一下,然后就凉凉了,于是后面写了这篇文章一文搞懂jsBridge的运行机制

6.介绍某个有难点的项目,立项原因,有遇到什么问题

7.创建项目用的Vue官方脚手架吗,自己封装的话有什么区别

虽然天天用,但是我也没去看过源码,显然也没答上来。

可以看到,问题虽然不多,但是我基本没有一个能答上来,羞愧无比啊。

有赞

有赞一面是视频面试,最后做了几到题,然后去现场一口气二三及HR面,现场也做了几道题,然后也问了一些技术问题,当时没有记录,现在已经没有啥印象了,反正答的不怎么样,负责人面,体验不咋地,问的问题感觉有点莫名其妙,HR问的就是一些常规的问题。反正最终没有音信,原因不详。

1.介绍一下事件循环

浏览器端事件循环:25题

Nodejs事件循环:26题

2.VuenextTick内部逻辑

内部利用的应该是微任务的执行时机。

3.promise原理,allrace方法有什么区别,有哪几种状态

有很多手写promise的文章,可以看看。

4.说一下都用了哪些es6的语法

那可太多了。

5.httpshttp的区别

这个只能背了。

6.lesssass有什么区别

7.letconst的区别

8.引用类型和基本类型有什么区别

9.判断对象类型的方法有哪些

10.Vue3相比Vue2有什么不同

11.浏览器本地存储有用过哪些

12.解决跨域的方法

13.介绍一下mapsetweakmapweakset,什么场景下使用

14.笔试题一

// 解析 URL 中的 queryString,返回一个对象 解析异常的 展示 ’‘
// 返回值示例:
/* 
{
     name: 'coder',
     age: '20',
     callback: 'https://youzan.com?name=test',
     list: [a, b],
 }
*/
function getQueryString(url) {}
console.log(getQueryString('https://www.youzan.com?name=coder&age=20&callback=https%3A%2F%2Fyouzan.com%3Fname%3Dtest&list[]=a&list[]=b'))

15.笔试题二

// 实现一个发布订阅,包含on/off/once/emit功能

16.笔试题三

// 计算两个大数字符串相加的结果
const a = '114421443244'
const b = '994237776777777'
function addNum(a, b) {}

题目总体来说不难。

鲸灵

一面视频、二面现场、三面视频、HR面视频,收到Offer,但是给的不多,所以没去。

1.介绍一下闭包

2.介绍一下原型链

3.promise的实现原理

4.介绍Vue的原理

5.介绍事件循环

6.Vue3新的特性

7.埋点、无痕埋点、可视化埋点

8.搭建系统的设计,一个模块要上搭建怎么设计

9.ABtest,怎么解决ABtest的问题,和埋点相关

10.对中台的理解,怎么设计中台

11.Vue的更新为什么是组件级的,而不是整棵树

12.微前端架构体系,电商业务中台解决方案

13.性能优化,结合项目说说,做过的,或现在想想有哪些可以做的

14.commonjs模块能做tree shaking

15.看Vue的源码你有什么收获

16.你觉得你能通过这次面试吗

二面的过程中我又变得很紧张,一部分原因是因为问的问题基本都比较大,而且之前基本都没有接触过,所以大部分都答不上来,后面的一些非技术问题因为没有怎么准备过,导致每个问题都回答的很艰难,自信到后期基本已经消磨殆尽,不抱什么希望,结束后听录音,发现自己没有几句话是能完整表述的,表达能力真的是我一大硬伤,这方面也没啥技巧,只能多面,多记录,多总结,然后慢慢改善了,最后强烈推荐面试最好都进行录音,回放可以让你更深刻的认识到自己的问题。

蚂蚁

这个是从简历池里把我捞起来的,问我为什么拒绝乌鸫,然后约了电话面试,一面挂。

当时没有记录,现在已经忘的差不多了,只记得开头的两道笔试题。

1.实现控制同一时间最多发送多少个请求

2.实现表单检验

总结

我当初的策略是按小公司、中等公司、大公司的顺序面,先面一些不会去的小公司,找找感觉,但是面了几个发现太小的公司问的都太简单了,于是就直接面一些可去可不去的公司,但是中途手痒投了网易云音乐,然后心就凉凉了,后来又有一些其他事情打断了面试计划,然后就继续在原公司苟着了。

看下来问的也还是八股文居多,虽然我很讨厌,但是该背还是得背,基本没有遇到纯做算法题的,不过听说现在不一样了,对我来说,雪上加霜了。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容