不带劲的前端烤面筋(顺便总结一下咸鱼找工作的这一路)
-----------------12/25--------------------
拖了很久的正式批面试走完,20号收到拼多多offer,第一场和最后一场面试都是拼多多,决定去了,更新一下拼多多二面的面经。
-----------------10/14更新--------------
9号南京面的小米,晚上网易开奖失败了,没什么心情去准备第二天的面试了,10号以送人头一轮游的心态面的百度上海,没想到居然走完了三轮
楼主决定百度能过就去百度,不然就去小米了
结束秋招了,从8月4号提前批开始面拼多多,到10月10号面完百度,想作为开门红的拼多多至今泡在池子里处于薛定谔的备胎状态,不知道收官之战能不能有个惊喜
拼多多 学霸批挂,正式批 offer
网易内推 放弃面试,网申开奖失败
美团内推 放弃面试
快看漫画 一面挂于git
有赞 表面笑嘻嘻,二面挂
阿里 春招一面挂,秋招内推简历挂(哎,海量hc的国际部)
腾讯 提前批一面挂
快手 一面挂
bilibili 二面自己拒绝了
趣店 一面完自己要求结束
贝壳 笔试挂
京东 放弃面试
58 准备咕咕咕
猿辅导 一面挂
爱奇艺 笔试挂
滴滴 二面挂
电信研发中心 笔试挂
新浪 笔试挂(少有的全ac居然挂)
网易互娱 一面挂
百度 开奖失败
应该还有很多挂面,楼主没有921那种整理的习惯忘了
老虎证券 两轮技术,十天后意向书
oppo 1业务+1部长面+1hr 现场两方拒签了
华为 校招13级 16k
转转 2技术+1hr 15k
小米 2技术+1hr offer
拼多多 offer
接下来慢慢更新面经,可能再写一写从开始找工作到现在的一些流水账。
--------------------------------------------
拼多多
1、实习的时候做了什么?
2、从什么时候开始接触前端?
3、vue组件生命周期?
4、组件之间如何通信?
5、redux是怎么进行工作的?
6、js如何实现继承?
7、new这个操作做了哪些事情?
8、js的基本数据类型和引用数据类型分别有哪些?有什么区别?
9、怎么实现深拷贝?
10、有一个列表,实现点击某一个li标签,弹出元素内容(事件委托),事件委托的好处(感觉没答道点上)
11、什么是闭包?有什么优缺点?即特征是什么样子?
12、js的垃圾回收机制
13、假设现在有一个数组,长度是99位,元素是1-100里边的值,数组是无序的也是不重复的,怎么快速的去找到这个数组和1-100相比缺的元素?(用元素作为新数组索引)
14、什么是稳定排序和不稳定排序?哪些排序是稳定的,哪些是不稳定的?
15、快排的思路,时间复杂度
16、css的position有哪些属性值?分别是相对于谁定位的?
17、IE盒模型和W3C盒模型有什么区别?css3中要怎么设置?
18、用css画一个三角形(用border的遮盖原理)
19、ES6中的let和const与var的区别?
20、promise
--------------------------------------------
百度
一面 1.5h
比较重基础,全程基本手撕前端代码,并且要求写完整,很抠细节
1.两栏固定,中间自适应布局,方法越多越好,楼主写了flex,float+overflow:hidden/负的margin和绝对定位三种,这里问l了flex:1是设置的什么属性,面网易的时候答出来了,结果这次就记得个flex-grow...,还问flex有哪些属性,好多属性名真的是想不起来了,描述了一下他们的作用和取值,真的尴尬。。。后悔国庆节摸鱼没好好复习,楼主自己提了overflow:hidden 形成bfc,问了一下bfc
2.防抖和节流,实现一个防抖函数,思路是用定时器,楼主这里记错了clearTimeout的用法有点尴尬(后面还会详细写细节,先赶紧回忆一下问题怕忘没了)...另外还有给防抖函数设置clear和flush方法用于清除定时器和立即执行,这两个方法楼主是写在函数内部的,被问到写在函数的prototype上可不可以,答案是不可以,访问不到会报not defined,因为函数自己作为一个对象访问他的原型属性应该是通过自己的__proto__属性即访问的是Function.prototype,挂在自己的prototype属性上是供其作为构造函数时创建的实例访问。
3.正则匹配图片url,并对匹配项进行反转,楼主是猜着写的给repleace的第二个参数传入一个以匹配字符串为参数的回调函数,函数内部split转化为数组再reverse再join,还问了贪婪和非贪婪匹配,之前没有了解过也是蒙着答..
4.数组去重,用多种方法要求复杂度O(n),提示可以用es6,楼主用了Set,被问Set内部的时间复杂度,第二种用对象去重(数组元素作为键),这里如果代码写的不简洁有多余的if else等也会要求优化,被问到如果数组元素不是基本类型值比如对象怎么去重,楼主用的JSON.stringify将对象的JSON字符串作为键,然后又问如果这个对象很复杂,它的JSON字符串很长,这样作为键会占用很大的空间怎么优化,没有答出来。
5.对可能是number,string,boolean,array,object类型的值进行深拷贝,用了JSON和递归两种方法,写的时候会有细节没写好要求改对
6.手写所有选择器优先级权重顺序
7.display有哪些取值
8.跨域方法,手写jsonp,问函数内定义的callback外面访问不到怎么办,楼主想半天没答出来,答案是挂载到window对象上
想到再补充
二面 1h左右
先自我介绍,楼主主要说了说项目,实习项目vue,校内两个项目JQuery
1.vue 的diff
先自己说一下diff算法
画了一个dom树,问给dom结点设置key和不设置key的区别,不设置key用什么判断两个节点的可比较性(sel)
如果用子节点数组的索引变量作为子节点的key有什么缺点,应该用什么作为key
答应该用字符串,索引值是会动态变化的,比如本来的三个子节点a,b,c的key值分别为 0 1 2,删掉第一个子节点,后面两个结点b,c的key会变成 0 1,这样会认为old a和b,old b和c是相同的结点,所以应该用字符串,另外用索引变量每次子节点数组发生变化其他结点的key也可能会变化,性能上也会比使用字符串更差。
2.还看过vue或者react的什么源码,讲一讲,楼主讲了数据驱动,响应式的原理
3.选一个项目说细节,问自己觉得哪里是技术难点,怎样解决的,有没有一些自己的创新,会对里面的点去提问,其中有提到promise和webStorage,讲完项目后面试官说你从这两个方向选一个你熟悉的我给你出道题,我选了promise
4.接下来promise题目,自己实现一个promise,以及.then()和.all()方法,楼主以前是看过921的博客写相关内容的,当时比较紧张写了个promise构造函数外壳之后里面不知道从哪里下手,面试官特别好(找工作以来最佳面试体验)一步一步引导我写出来的,
首先考虑内部属性(列举一部分)
status,记录promise的状态 取值可以为pending、fulfilled和rejected,pending状态
resolveArr,存放resolve回调函数的数组
rejectArr,存放reject回调函数的数组
实现then和all方法
在Promise.prototype上定义then和all
要满足链式调用,所以then和all都要写成return new Promise的形式
then的作用是将参数中的两个回调函数分别push入resolveArr和rejectArr,
all要将多个异步合并为一个,满足所有promise fulfilled才fulfilled,有一个rejected则rejected,
所以要有一个数组记录每一个promise的状态,并设置一个计数器,每当有一个promise 变成fulfilled,计数器+1,如果计数器达到了promise的个数,就去调用resolveArr中的方法,并以数组的形式保存这些resolve的结果,传递给all的resolve回调函数;如果有一个promise 变成rejected,则调用该promise的reject回调函数,把调用结果传递给all的reject回到函数。
当时写完后面试官笑着说你可以回去写篇博客了,所以这里先写个大概思路,楼主会自己实现一下然后写篇博客出来再回来补充。
5.平时的学习习惯和方法,红宝书、阮老师、mdn、掘金、写博客,因为大学里没有前端课程,说了下和同学组的FED小组会去一起讨论问题,被面试小哥表扬了一下这种形式2333
6.有什么问题想问,问了下新人培养的方式
二面结束小哥一开始说“今天的面试就到这里了”,然后又纠正了一下说是“本轮面试到这里”,我觉得应该是二面过了,果然是酱紫
三面
同样的自我介绍+抠项目 blabla省略
问了一下 ajax 原理 (xhr)
ajax跨域 答了CORS 和FETCH
描述从url到页面显示的过程,dns查询、http、tcp/ip这些
cookie和session
数据库中的索引(可能因为楼主前两个校内项目是全栈项目)
设计模式 讲讲MVC,楼主先讲了从整个软件开发角度的MVC,然后说了前端方面的MVC框架然后自己讲了下MVVM,比较了下JQuery和vue
算法题 文件中有100w个数,取里面最大的100个,要写出一些伪码来,楼主觉得自己写的肯定不是最好的方法就不贴了
你觉得百度有哪些地方吸引你
你觉得百度哪些地方要改进(紧张)
有什么问题要问我
问了问部门相关的问题,以及百度的工程师门怎么学习提升自己
the END,达成BAT过一二面成就hhh,至于结果嘛....ycymm加油
-----------------------------------------------------------
小米
问了一些基础,具体想不起来了,写写有印象的问题
一面
感觉是leader之类的,问了很多设置一个业务场景怎样去实现这样的问题
1.两个组件,一个是轮播图点击小图换大图,另一个是传入一个图片的url会返回该图片颜色的rgba,现在利用这两个组件实现新组件满足点击小图整个网页换肤为轮播图颜色的功能,由于这两个组件可能后续还会升级维护,所以不可以自己修改内部,只能远程引入,轮播图也不提供返回图片url这样的接口,没想好怎么整╮(╯▽╰)╭
2.git pull 和 git fetch区别
3.设计一个团队开发流程的git工作流,要求每天发布一个版本,重点就是发布到主分支还是每天的分支上,应该是发布到主分支
4.函数作用域,有哪些改变方式apply call,怎样不在运行时才决定this(用箭头函数)
5.抛开vue,自己设计双向绑定会怎么实现,还是用的脏检测...
谈了谈可以提前去实习的问题
最后看了看表,时间快到了,哎忘了问你node了算了不问了(真可怕)
然后和面试官握了手(还是第一次)
-------小插曲--------
因为小米没有用微信之类的叫号是人工叫号,所以应该是通过一轮面试后面试官让同学再去签到进行下一轮的安排,然后我的一轮面试官不知道这回事,
我面完出来,工作人员:"面试官说什么了吗,签到之类的?”
我说没有啊
工作人员:那你的面试结束了,请从这边离开(指电梯)
???
我冲说不行我要进去问面试官过没过,工作人员想拉住我也跟进去了,然后他们俩沟通了一下,于是有了二面(真可怕*2)
-----------------------
二面
1.js的运行环境(果然还是躲不过node),简单说了说浏览器环境和node的区别
其他的一些基础blabla
前端调试,devTools断点的使用,楼主说平时都是console.log的感觉面试官有点小无语2333
这次这个面试官知道签到的事情,去签到有了hr面
hr面
问了下怎么学前端的和其他offer和薪资
口头offer
----------------------------9/20--------------------------
这阵子跑了好多地方,现在稍微闲下来了,按时间倒叙整理一下还能记得的问题,攒一波人品等网易开奖
转转(9.30已收到意向书)
一面qq视频:
约的今天下午两点半
1. es6 extend 和ES5做对比
2.es6 解构赋值的常用场景
3.es6新增特性你最欣赏哪三点
4.描述一下你对node中stream的理解(以为我的项目后端是node,我说是php这个问题跳过了)
5.关于性能优化的点(补充笔试题中没提到过的)
6.get与post的区别(问了一下get的大小上限是多少)
7.描述一下你对keep alive的理解
8.说一下五种常见的状态码
9.0-10w中有多少个0(考虑时间复杂度和空间复杂度)
10.正则匹配电话号码
11.递归 斐波那契数列
12.优化一下11题的递归函数,加一下缓存
一面结束让加了二面qq号 2.es6 解构赋值的常用场景
3.es6新增特性你最欣赏哪三点
4.描述一下你对node中stream的理解(以为我的项目后端是node,我说是php这个问题跳过了)
5.关于性能优化的点(补充笔试题中没提到过的)
6.get与post的区别(问了一下get的大小上限是多少)
7.描述一下你对keep alive的理解
8.说一下五种常见的状态码
9.0-10w中有多少个0(考虑时间复杂度和空间复杂度)
10.正则匹配电话号码
11.递归 斐波那契数列
12.优化一下11题的递归函数,加一下缓存
二面 前端leader:
1.介绍项目
2.封装axios,为请求增加相同的查询字符串,说思路
3.应用题:如果天平两端都允许放砝码,并且假定所有的砝码都是整数克。为了称出从 1 克到 1000 所有整数克 的物品,最少需要几个砝码
4.写一个URL解析函数,“http://zhuanzhuan.com/?user=lilei&sex=male&age=21”解析出url的查询字符串,最好用正则
5.vue生命周期
6.对转转的了解程度
然后是面试官介绍了一下部门(安利了我“大转转FE”公众号)
7.入职后未来半年的学习规划
最后说后面会有hr面
----------9.29------------
hr电话面
1.为什么选择做前端
2.项目中遇到过什么困难是怎么解决的
3.目前收到的offer和薪资
4.期望薪资
趣店
今天上午面的,不分岗位研发总面,过了再分岗面
主要问了项目和JQuery
然后问什么时候去实习,问了一下是先签实习协议看表现再转正,溜了溜了
网易 南京场
投的杭研,面试官和hr好像是考拉的
一面:
自我介绍+项目相关问题
1.promise相关 .then()的第二个参数与.catch的区别,先.catch后.then如果catch到错误和没catch到错误的情况下后面的.then指定的回调函数会不会执行
2.异步编程问题 A B C三个组件访问同一个接口I取得数据,如果有一个组件(假设是A)已经发起了请求,那么另外两个就不能再发请求,等待A请求完成后使用A的缓存,除非A请求失败了再由下一个组件发起请求,省略具体的ajax过程
3.实现一个体现流程的组件,通过后端返回的step码(0,1,2...)来渲染不同的流程(类似查询应聘状态那种),到达某一步则对应的之前的小圆圈和流程线变色
4.流程图的圆圈和下方对应的文字实现水平居中(flex-wrap:wrap设置换行 主轴方向默认是水平方向,justify-content:center),又问了一下flex各个属性,主轴和侧轴的意思
5.下面的代码输出什么(当时答错了)
var a =1; function x(){ alert(a); } function y(){ var a = 2; x(); } y();//输出 16.闭包,写一个例子
7.http协议报文头有哪些字段,和内容协商有关的是哪一个
8.vue响应式原理
9.想起来再写...
二面:
自我介绍+项目相关问题
1.数组API中能改变原数组的方法
2.Promise SetTimeout 宏任务微任务控制台输出
3.实现动画的方式
4.flex:1 设置的是哪个属性
5.想起来的话再补充
二面小哥说前面的一面肯定问了很多技术问题了,就不问太多了
hr面:
好难...本来都松了一口气的,感觉好多地方有坑
1.项目中遇到过什么困难,怎么解决的
回答了查资料,看博客之类的,hr说看看资料就能解决好像不算什么困难(懵住)
2.实习的时候和需求之间做过哪些确定(进度上、质量上还有其他方面忘记了)
3.对城市的选择
4.offer怎么选(应该早点看牛客的hr面筋就知道不要提薪资了QAQ)
5.为什么想来网易
6.怎么学前端
7.有没有学到的东西应用到实践中的
总得来说态度一定不要急...然后不要给自己挖坑
先写这两个吧,哪天不咸鱼了再补充 _(xз」∠)_
---------------9/23---------------------
OPPO
一面业务面
1.自我介绍
2.问专业(楼主软件工程),专业课成绩怎么样,学没学过数据结构(吓),然后问了个快排(虚惊一场)
3.数据库索引是什么
4.前端基础问题:
a.undefined和not defined区别
b.js数据类型
c.用private声明变量的坏处...我还真没遇到过js这么写,他说那算了(划掉)
d.全局变量的坏处
e.闭包的作用和缺点
f.画圆形,我这里用了border-radius
g.画饼图,每个部分按百分之多少给不同的颜色,感觉是想问canvas
h.然后....问美工给了图怎么实现,答了先划分布局再实现细节blabla
i.又问美工给的图怎么没误差的取到颜色,我说喜欢用mdn提供的在线工具,后来才知道其实他是想问会不会ps,答了会(楼主以前喜欢做鬼畜视频,但是还是第一次被问这种问题。。。)
j.看到简历写了vue,问了双向绑定原理
k.项目中遇到的问题
5.看了一下个人博客,聊了一下blabla
6.对城市的选择
7.有什么问题要问
吐槽一下...从我住处过去倒了四次地铁接近两个小时,结果就面半小时,今晚出结果过了的话明天可能还要再去一次...
-----------9.30来补充----------------
第二天确实又坐了两个小时地铁去复试。。
部长+hr两轮面试
部长面:
项目+在校期间活动+成绩 各种综合问题
hr面:
被告知要保密,问得比较犀利
当晚被通知第二天去参加签约答疑会
第三天 ...又是两个小时地铁
hr介绍了一下公司和薪资,然后要现场签两方,因为还没考虑好,就没有签。
-----------------------------------------