本文正在参加「金石计划 . 瓜分6万现金大奖」
我这个人不喜欢也不擅长面试,从毕业到现在其实经历过的面试并不多,有记录的就更少了,以下是我在工作四年时面过的几家公司的一些面试题,分享出来,有的有的答案,有的没有,有的是认真答的,有的是胡扯的,仅供参考。
地点在杭州,时间在前两年八九月份。
非技术问题
各个公司都会问一些非技术的问题,像我这种表达不太好的人回答这些问题都很痛苦,所以我都提前针对每个问题写了一些答案,每次面试前都会看看。
- 1.自我介绍
这个基本上必不可少,我会准备个一两分钟的介绍,大致介绍一下自己的过往经历,再补充一点简历上没有提到的东西。
- 2.离职原因
这个也是大概率会问的问题,原因往往不是单一的,我一般就从工资、所做的事情两个方面来回答。
- 3.你的优势和劣势是什么
这个是我最讨厌的问题之一,怎么说感觉都在说套话,工作负责?不惧挑战?抗压能力强?。。。
可能是我确实没啥明显的优势吧,之前面试有赞,主管面,我的回答是技术还不错,然后这个主管拼命问我,你具体哪方面技术好,我。。。
- 4.入职一个团队,你给自己的定位和规划
定位是啥呢,直接说前端工程师是不是跟没说一样,那应该说啥呢,一个解决问题的人?项目负责人?工具人。。。
规划的话应该就是熟悉同事、熟悉公司、熟悉业务、熟悉代码、上手干了吧。
- 5.介绍自己主导过的项目
我其实没主导过啥项目,所以一般就从过往项目里挑一个相对来说比较有难度的来讲讲,从评审一路将到实现、测试到上线。
- 6.你希望加入一个什么样的团队
每个人心中肯定都有一定要求,如实说即可,比如人数多呀,团队氛围好呀,技术强呀,有大佬呀等等。
- 7.如果让你负责一条新的业务线,你一般会先去做哪些工作
有过这方面经验的人比较容易回答这个问题,我显然没有,当初是一通乱答。
- 8.对前端行业的未来有什么看法
我觉得前端很有未来,必将一统天下。
- 9.职业规划
很惭愧,作为一个工作这么多年的老前端,我好像并没有啥规划,对于转型做产品或管理,没有啥兴趣,也没有这个能力,所以对35以后的日子感到深深的担忧。
- 10.在过往开发过程中有遇到过什么样的难题,或者项目上有遇到什么难点
这个问题应该也是高频问题,我在工作中遇到的非常难的问题其实不多,或者说没有,毕竟都是普通业务,可能有些当时觉得挺难的,但是过来了就忘了。
比如遇到一些兼容性问题、一些实现问题、一些性能问题,我在第一家公司做的是智能电视端的前端页面开发,电视盒子的性能是很垃圾的,所以很痛苦。
第一次上手新东西也会有一些难度,比如第一次用Nodejs
做后端项目、命令行工具、第一次使用Weex
开发页面、第一次使用canvas
、svg
等。
做一些可视化大屏、搭建系统、重交互的需求时也会有一定难度。
其他还有一些莫名其妙的问题,比如项目突然起不来了,打包突然报错了等等。
- 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.Vue
的computed
和watch
有什么区别
功能不同,我觉得其实没啥可比性。
4.Vue
直接delete
一个数组的属性,和使用Vue.delete
方法删除属性有什么区别
https://v2.cn.vuejs.org/v2/api/#Vue-delete
5.介绍一下重绘和回流
对页面的性能影响不一样吧,不过我在平时开发中也没特别注意。
6.首页白屏的优化方法
这个我只有理论知识,没有实践经验。
7.对微前端的了解
用过但不多,详见为了实践微前端,重构了自己的导航网站。
8.节流和防抖
setTimeout
:这个我在行。
9.promise
和setTimeout
在事件循环里有什么区别
一个属于宏任务,一个属于微任务。
可以看一下我之前写的js烧脑面试题大赏其中的一道。
10.Nodejs
的使用情况
11.介绍项目
我一般会介绍我开源的几个小项目,这些年我开源的几个小项目。
12.遇到的挑战
网易云音乐
面试前我还是挺自信的,因为写了几篇文章,做了几个开源的小项目,于是有点飘飘然,然后就在这个一面中被虐的体无完肤。
一面是电话面试,问的吧也全是我简历上写到的东西,但是基本全部答不上来,问到最后我已经懵了,这个面试对我的打击太大了,之前总是抱怨在公司做的事情太简单,没有什么可以深入的可以提升的,但是却没有想过去了解每天开发中涉及到的一些东西的实现原理,一边只做一个API
调用者,一边又在好高骛远,从那以后也清晰认识到了自己的水平,感觉到进大厂是无望了。
1.引用ElementUI
组件是怎么保证只引用到了该组件本身,不会把其他组件打包进去,webpack
有什么插件可以解决
问的是按需引入的问题,当时基本不知道,后来写过几篇文章来分析浅析组件库实现按需引入的几种方式、Vue组件库实现按需引入可以这么做。
可以调用的插件有unplugin-vue-components
、babel-plugin-component
。
2.webpack
插件可以用来干什么,插件获取到的是字符串数据还是什么
webpack
我其实并不怎么熟悉,只进行过一些基础的配置,插件和loader
都没实际开发过,至于插件可以做什么,应该是想做什么做什么吧。
3.怎么实现一个Dialog
组件,设计思路,如何挂载到全局,同时打开多个怎么控制层级,ElementUI
的Dialog
是挂在组件下的还是全局的,如果要挂在全局怎么实现
后面我就把ElementUI
从我的简历中删掉了,因为我也只是用过,并没有看过它的源码。
如何挂载到全局,其实很简单,获取到组件的$el
手动移到body
下就可以了,但当时就是没想到,一直说如果要这样,我就自己实现这个组件。。。
4.Nodejs
服务怎么做进程守护?pm2
的原理是怎么样的
因为简历上写了使用过Nodejs
做过几个小的服务端项目,所以。。。但是我也只不过是使用Koa
、Express
、MySql
之类的做过一点简单的接口服务,写过几个简单的命令行工具,再深入我也不会了呀。
5.jsBridge
通信的原理,安卓和ios
分别是怎么实现的
jsBridge
的代码就在APP
项目里,但是我却从来没有想着看一下,然后就凉凉了,于是后面写了这篇文章一文搞懂jsBridge的运行机制。
6.介绍某个有难点的项目,立项原因,有遇到什么问题
7.创建项目用的Vue
官方脚手架吗,自己封装的话有什么区别
虽然天天用,但是我也没去看过源码,显然也没答上来。
可以看到,问题虽然不多,但是我基本没有一个能答上来,羞愧无比啊。
有赞
有赞一面是视频面试,最后做了几到题,然后去现场一口气二三及HR面,现场也做了几道题,然后也问了一些技术问题,当时没有记录,现在已经没有啥印象了,反正答的不怎么样,负责人面,体验不咋地,问的问题感觉有点莫名其妙,HR问的就是一些常规的问题。反正最终没有音信,原因不详。
1.介绍一下事件循环
浏览器端事件循环:25题
Nodejs
事件循环:26题
2.Vue
的nextTick
内部逻辑
内部利用的应该是微任务的执行时机。
3.promise
原理,all
和race
方法有什么区别,有哪几种状态
有很多手写promise
的文章,可以看看。
4.说一下都用了哪些es6
的语法
那可太多了。
5.https
和http
的区别
这个只能背了。
6.less
和sass
有什么区别
7.let
和const
的区别
8.引用类型和基本类型有什么区别
9.判断对象类型的方法有哪些
10.Vue3
相比Vue2
有什么不同
11.浏览器本地存储有用过哪些
12.解决跨域的方法
13.介绍一下map
、set
、weakmap
、weakset
,什么场景下使用
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.实现表单检验
总结
我当初的策略是按小公司、中等公司、大公司的顺序面,先面一些不会去的小公司,找找感觉,但是面了几个发现太小的公司问的都太简单了,于是就直接面一些可去可不去的公司,但是中途手痒投了网易云音乐,然后心就凉凉了,后来又有一些其他事情打断了面试计划,然后就继续在原公司苟着了。
看下来问的也还是八股文居多,虽然我很讨厌,但是该背还是得背,基本没有遇到纯做算法题的,不过听说现在不一样了,对我来说,雪上加霜了。
暂无评论内容