蚂蚁面完hr面备胎第21天,至今0offer,发波面经攒人品
备胎第三周了,当热忱慢慢消退,当希望被时间消磨,在漫长等待的日子里,每一天从梦中醒来,都不得不重新接受一次残酷的事实:是自己太菜了。
不过思来想去至今0offer原因也有可能是人品不行,发一波面经攒人品吧。前端岗,到目前为止面了蚂蚁(三面含一轮交叉加hr面,hr面没记录)、腾讯(提前批一面凉)、网易(二面完失联)、蘑菇街(昨天下午刚二面,等一个凉凉)。周六面头条,怀疑自己手撕代码那关怕是有点悬。
交代下背景,本科物理,实习从游戏策划转岗产品兼职写前端,最终决定滚去读研(hunwenping),最近跟导师做的项目也是前端相关的。
面经都是面完之后立刻记录的,除了个别一些遗忘了,大部分内容都在这了,所以没有特别说明的话,里面的“现在”指的都是刚面完的时候。
我觉得,从面试的情况也能看出来面试官/部门对前端工程师的理解和要求,也算是一种双向获取信息的过程吧。
腾讯-一面(3.3)30分钟
自我介绍
问了下和导师做的研究的细节
发起AJAX的具体过程
对ajax结果怎么处理
强缓存和协商缓存
(我不知道这两个说法,不过我后面说到的就是这两种缓存233,所以抱佛脚还是命中了)
服务器时间和本地时间不同步的解决方案
问了几个缓存相关的header
- Cache-Control
- If-Max
- Max-Age
etag和Last-Modified哪个优先级更高,一开始说错了,后来想起来了补充了下
同源策略,这个抱佛脚也命中了,虽然跨域的话不抱佛也能答一点吧
跨域
什么叫简单请求
跨域许可的headers里面能设置哪些许可
穿插问了cookie的细节,如cookie能不能跨域,这方面答得不是很好
DNS解析的具体过程,这个答得不好
我只答了NDS服务器和本地hosts文件- -
问了CDN
之前看到浏览器同时保持的HTTP连接数量是有限的,提了提,面试官好像不知道,不过他说CDN的主要目的不是这个
CDN的具体细节说不上来
开始聊js
js作用域,我用调用栈解释了下
js eventloop事件循环,这个表达的不好,不过提到了事件队列
其实是队列里面取一个event出来,压进栈,执行直到栈空,然后下一个event,脑子里有,一下子没想起来
Promise,我说Promise写起来还是很麻烦,喜欢async/await
面试官好像发现js比较熟。。不想问了,又开始问网络(嘤嘤嘤
不过这个抱佛脚也中了,但是CSRF答得不太好,面试官说CSRF可以下去再了解下
XSS
CSRF
两辆火车对撞,有只鸟在中间来回飞,问这鸟飞了多远距离
我答的是s/2
sv/2v
面试给的答案是
sc/(a+b)
我解释说我以为a=b,c近似于a、b
反思:腾讯面得太早,网络这块是弱项,偏偏又问一大堆,临时抱佛脚押了一些题,但是效果也就那样吧。当时(记录这段面经的时候)还以为答得马马虎虎,其实糟糕透了,所以一面凉了也不是没道理。不过腾讯的面试体验也不好,面试官冷冰冰地问这些面经里出现过无数次了的知识点,感觉很没意思。
阿里-一面(3.14)共40分钟
问了历史项目(三个都问了)
- 要求介绍VUEX
- mutations和actions的区别
问移动端和PC端哪个比较熟,要求讲讲布局
- 讲了flex和优点
- 讲了rem,讲之前rem的使用细节
说JS就不问了(捂脸
问正则熟不熟,说不是很熟,说了点简单的语法,提了下捕获组
问了研究生阶段有啥课程之类的,基础课程情况(其实就是想问我这个非科班生对基础知识的掌握情况
让说说知道的数据结构,问状态机有没有用过
问Promise
为什么会喜欢前端
聊了聊关于物理的事情QAQ
问有什么感兴趣的研究方向,说有看vue源码,说了下自己看过的部分
面试官介绍了下他的项目
阿里·二面(3.14下午)28分钟
问项目,这次主要问的导师这个项目和区块链游戏的项目,占了很大一部分时间
- 前者问具体方案、目前推进和效果、未来计划
- 后者问这游戏大概是咋回事,做了哪些工作,优化等等
又问VUEX了,VUEX原理、作用,问VUEX的意义(有没有必要)
下面是比较开放的问题
- 问院里面有几个同学搞前端,是不是小众,前端开发和其他方向有什么区别
- 怎么会从事前端
- 想深入研究前端的哪个具体方向
- 有没有研究过框架源码(我说对框架底层感兴趣
- 看框架源码有没有收获,讲一讲
- 怎么获取前端知识
- 我说了公众号、书籍、MDN、W3C、Stackoverflow等
- 唔,突然发现有个地方说错了,把阮一峰的《es6入门》说成张鑫旭的了。。。(现在才意识到,尴尬- -
阿里·三面(交叉面,3.18上午)24分钟
自我介绍、为什么做前端
先问对三大框架的了解(BB了一些)
为什么要用单向数据流替代双向绑定?
nodejs写过后台么?(没有,写过工具)
问课程学习情况,有没有学过其他编程语言(我不该说C++的...)
C++
抽象类和接口的区别?
支持不支持多继承?(c++支持,java不支持)
多继承有什么用(说了可能可以实现复用,然后又用组合代替继承的说法推翻了自己的观点,然后说可以组合两个类...)
虚函数知道吗?(不知道)
哦看出来了,你是只用c++写算法,没做过项目?(是的)
操作系统
内存管理方式(答了答分段、分页、段页)
进程上下文(答曰有印象,说不上来...)
网络
点击域名到显示网页全过程
DNS解析过程
路由器工作在哪一层?(网络层,答对了,但是问为什么说不上来)
HTTPS
HTTPS单向和双向的区别(没答上来)
HTTPDNS知道吗(不知道)
感觉你是不是在前端上花的时间比较多,基础知识上花的时间少(是的)
感觉这面面的不太好(捂脸)
可能要跪
反思:前两面感觉还可以,可能是项目相关的问的比较多,但是三面表现不太好。本来说有两轮交叉,最后只有一轮,怀疑是不是就是三面表现太差了。估摸着沦为备胎也是三面表现不好的原因吧,这样一想还能做备胎是不是算“福报”了...不过三面有点作死了,话题往自己很不熟悉的方向去了。不过三面的时候面试官会打断我发散性的表述,也没法把话题带跑。网易·一面(4.10)30分钟
感觉面试官冷冰冰的QAQ
首先问过去的实习经验(网易的面试官就完全不关心导师的项目啊,感觉格调有点低)(呃,后来二面的时候才想起来,网易那边没附件简历,所以没上面没导师的项目;而且网易有一点比较奇怪,我二月末投递的内推,后来变成简历筛选未通过,再后来hr突然打电话约面试emmm,可能是一开始不想招人)
问了一堆js和css经典面试题。。。
一开始还有一题简单的算法题:随机填了0和1的大数组,需要把1全排前面,把0全排后面,怎么处理?
我一开始给的方法是统计1的个数,然后再填充,面试官说空间复杂度太高了(???)
然后给了个滑动窗口的办法,从left找到第一个0,和right找到的第一个1进行交换,直到left大于right
VUE和REACT的差异
react和vue的router怎么实现的。。这个我跪了,回头研究下
不同浏览器js的差异
事件模型的差异
防抖
闭包
判断数组是数组(我先说了Array.isArray,不过面试官好像不太了解这个方法;后面说了判断prototype)
有一题考的是闭包应用,也是很经典的,for循环里面var定义的i++问题,问怎么解决(闭包、let)
讲讲es6新特性
CSS
垂直居中怎么实现(说了三种)
气泡框三角形,和该气泡框阴影(说了三角形三种实现)
盒模型(没直接问盒模型,问的是盒高度怎么计算)
正方形怎么实现
有什么想问的
网易·二面(4.12)25分钟
基本上一直在聊天……总体上比较轻松愉快
问是在寝室吗
答是在空教室
你们还有空教室?
答曰在人比较少的教学楼(逸夫馆)
自我介绍
问数据库和服务端开发的了解情况
如实说接触过,了解不深
socket通信了解过吗?
讲了下大作业
http三次握手知道吗?
不知道,问是不是tcp三次握手?
面试官邪魅一笑,http就没三次握手吗?
答曰回去了解下
状态码了解过吗
问500,这个忘了,不过说了下5xx是服务端错误,4xx是客户端错误,3xx是重定向
随后问200,答曰请求成功
react了解过吗
说最近大作业用了react和typescript
问pc端还是web端接触的比较多,为什么?
后面也问是不是一般不做低版本ie的兼容了
怎么和设计合作?
建立共同认知、搞UI库(听到UI库面试官嘴角往上一扯)
问还面过哪些公司?
网易、蘑菇街、阿里,吐槽了下阿里等了很久了,流程有点长
蘑菇街也面了?
毕业比较想去杭州,所以重点关注杭州这边的公司
上海不是离舟山很近吗?
杭州也很近唉,而且杭州安家成本低
比较想去什么样的公司
网易、阿里这样的
面试官问面了蚂蚁什么部门,后面又提了蚂蚁一个部门,问是不是很想去这种部门
老实说是的,不过投的不是这个部门,找学长投的,所以也不知道在什么部门
问有什么爱好
阅读:给面试官讲了下最近看的《 资本之都:21世纪德里的美好与野蛮》
还有什么爱好吗?
玩游戏:最近只玩炉石和阴阳师了,讲了下最近为什么比较忙(解释了下小学期)
有女朋友吗?
有,做大作业的时候认识的
女朋友也是做开发吗?
是,打算做嵌入式
以后想做什么事情?
all in前端
有什么想问的?
问了下去实习做什么事情?对面介绍了下业务,主要用react,也有做UI库,对体验要求比较高
还有什么想问的?
没有了
道别
想起来了。。网易面试官还问我safari了解过吗- -我说没有,没有苹果设备;面试官说现在不都兴苹果吗。。我说穷。。
反思:网易一面感觉自己答得挺好的,除了路由和history对象之外,其他的题基本上都答出来了。二面的如果要说有什么问题可能是太坦诚,不过我性格就这样了,坦诚点也没什么不好。蘑菇街·一面(4.11)28分钟
不知道面试官是不是有点紧张,一开始报部门的时候磕磕绊绊的,后来感觉还好;通话声音有点小,好在能听清。
中间还有一段时间陷入沉默,面试官到后面似乎不知道问啥了。
自我介绍
问项目、实习经验(这部分聊的比较多)
VUE双向绑定原理
ES6新特性
小程序怎么做全局状态管理(我说我的方式是localstorage)
遇到过什么困难
你有什么想问的?(问了贵司前端做啥工作)
蘑菇街·二面(4.16)1小时
感觉是我面过最有价值的面试了,基本都是场景题,和其他家的面试风格完全不一样,很有深度。
一开始甚至有点懵,总之学到很多东西,对之后的学习方向也很有帮助。
这个面试官很看重前端工程化、规范、协作相关的东西,其实这也是我考研的原因,结果反而答得不好,说明自己在这方面的努力还不够,主要还是太懒了。
VUE的render是怎么实现的?另外还问了react的,反正是框架底层,答得不好。
VUEX里面有哪些东西?
开发一个框架CLI,要做哪些事情?(目录怎么分配,请求怎么处理等等)
做node工具可以做哪些事情?(这边的回答感觉不够有深度,我提了两个:api缓存、测试的时候自动操作)
开发一个前端组件库,你要怎么做?
做一个模态框组件,你要提供怎么样的接口?(问代码规范)
发布订阅模式要怎么实现?(这里有点答错了,on和emitter的功能搞反了)
CSS的预处理器你用的哪种?你比较喜欢里面的什么功能?(大概是这个意思,大致讲了讲)
对webpack了解吗?(不知道...)
实现一个createPage,要怎么做?(createPage指的是vue初始化一个页面的工具)
有一个页面要开发,有产品、测试和另一个开发小伙伴,你要怎么做?
做了三个项目了,有什么特别有收获的地方吗?(没讲这三个项目,讲了下嵌入式作业用循环队列解决数据生命周期问题)
讲一下在git上提交一个工作,你要怎么做?
我们这招实习是希望招能转正的,招了你会来吗?实习时间?(会(如果阿里和网易都不要我的话),如实回答)
有什么想要问的吗?
面试官觉得我基础挺不错的,但是对前端整个工程体系的了解还是不太够,像webpack打包过程,node server等等,这才是真正体现前端核心竞争力的地方
回答问题的时候可以展开得更深入一点
如果有结果hr一周内通知
反思:蘑菇街一面面试官和二面面试官感觉差距非常大,一面没啥好说的,二面学到了很多,暴露了自己的一些不足,也提供了后面的一些学习方向吧。