Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

面试分享:一年经验初探阿里巴巴前端社招 #22

Open
jawil opened this issue Aug 9, 2017 · 246 comments
Open

面试分享:一年经验初探阿里巴巴前端社招 #22

jawil opened this issue Aug 9, 2017 · 246 comments

Comments

@jawil
Copy link
Owner

jawil commented Aug 9, 2017

一般阿里社招都是招3-5年的P6+高级工程师,当初自己一年经验也没有想过有这个面试机会。

虽然没想着换工作,但是经常关注一些招聘网站的信息,某一天,在某boss上有个人找我,叫我发一下简历,我一看是阿里的某技术专家,虽然之前也有阿里的在某boss上给我要简历,但是我深知自己经验不足,然后给boss说我是16届的,只有一年经验,然后就没有然后了。这次我依然这么回复,但是这boss说,没关系,他喜欢基础好的,让我可以试一试,于是我也抱着试一试的心态发了简历。

简历发过去之后,boss就给我打了电话,让我简单的介绍一下自己,我就噼里啪啦说了一些,还说了一些题外话。然后boss就开始问我问题。

由于面了四轮,所以最开始的面试记忆有点模糊了,细细回想,又感觉记忆犹新。

1.电话初探

1.说一下你了解CSS盒模型。

我就说了一下IE的怪异盒模型和标注浏览器的盒模型,然后可以通过box-sizing属性控制两种盒模型的变换。

2.说一下box-sizing的应用场景。

这个也不难,简单说了一两个应用场景,具体就不一一细说了。

3.说一下你了解的弹性FLEX布局.

这个我也比较了解,各种概念和属性能想到的说了一大堆,也扯到了Grid布局,基本这个也没啥问题。

4.说一下一个未知宽高元素怎么上下左右垂直居中。

说了一下flex弹性布局的实现,说了一下兼容性,扯到了postcss的一些东西,然后说了一下常规的兼容性比较好的实现。

5.说一下原型链,对象,构造函数之间的一些联系。

这个我之前写过相关的文章,自己也有比较深入的理解,所以这个也不在话下,噼里啪啦说了一大堆,也不知道面试官听得咋样。

6.DOM事件的绑定的几种方式

说了三种,然后说了一些冒泡,默认事件,以及DOM2,DOM3级的一些标准。

7.说一下你项目中用到的技术栈,以及觉得得意和出色的点,以及让你头疼的点,怎么解决的。

这个因人而异,开放性问题,主要考察平时项目的一些积累吧,这个我回答感觉也比较ok。

8.有没有了解http2.0,websocket,https,说一下你的理解以及你所了解的特性。

这个我看过一些文章,但是没有什么印象,扯了一些概念,但是回答的不是很深。

第一轮电话初探,大约面了50分钟,就记起来这么多,还有一些细节问题可能淡忘了,总体来说,面的都是以基础为主,然后boss说把我简历推荐给内部,进行正式的社招流程。

一轮技术面

然后当天晚上一个女的面试官就给我打电话了,说八点半进行下一轮技术面试,没想到效率这么快,我都没怎么准备。
这次就直接省略自我介绍了。

1.webpack的入口文件怎么配置,多个入口怎么分割啥的,我也没太听清楚。

这个自己就说了一下自己的理解,以及自己用node写的多入口怎么配置,然后面试官说不是多入口配置,然后我又说了一下自己的理解,然后这题就过了。

2.我看到你的项目用到了Babel的一个插件:transform-runtime以及stage-2,你说一下他们的作用。

这个我也还算比较了解,就说了一下ES的一些API,比如generator啥的默认不转换,只转换语法,需要这个来转换,然后说profill啥的,扯了一下stage-1,stage-2,stage-3,这个问题回答还算清楚。

3.我看到你的webpack配置用到webpack.optimize.UglifyJsPlugin这个插件,有没有觉得压缩速度很慢,有什么办法提升速度。

这个我主要回答了一下,我之前也没怎么了解,一个想到是缓存原理,压缩只重新压缩改变的,还有就是减少冗余的代码,压缩只用于生产阶段,然后面试官问还有呢?我就说,还可以从硬件上提升,可以得到质的飞跃,比如换台I9处理器的电脑。。。。

4.简历上看见你了解http协议。说一下200和304的理解和区别

这个噼里啪啦说了一堆,协商缓存和强制缓存的区别,流程,还有一些细节,提到了expires,Cache-Control,If-none-match,Etag,last-Modified的匹配和特征,这一块之前有过比较详细的了解,所以还是应答如流。

5.DOM事件中target和currentTarget的区别

这个没答上来。。。

6.说一下你平时怎么解决跨域的。以及后续JSONP的原理和实现以及cors怎么设置。

我就说了一下Jason和cors,然后问我JSONP的原理以及cors怎么设置,这一块自己也实践过,所以还是对答如流的。

7.说一下深拷贝的实现原理。

这个也还好,就是考虑的细节不是很周全,先是说了一种JSON.stringify和JSON.parse的实现,以及这种实现的缺点,主要就是非标准JSOn格式无法拷贝以及兼容性问题,然后问了我有么有用过IE8的一个什么JSON框架,我也不记得是什么了,因为我压根没听过,然后说了一下尾递归实现深拷贝的原理,还问了我typeof null是啥,这个当然是Object。。。

8.说一下项目中觉得可以改进的地方以及做的很优秀的地方?

这个也是因人而异,开放性问题,大致扯了一下自己的经历,也还OK。

最后问了有什么需要问的地方,面试到这里基本就结束了,大约面了一个多钟头,还是蛮累的。总体来说,回答的广度和深度以及细节都还算OK,觉得这轮面试基本没什么悬念。

二轮技术面

过了几天,接到阿里另一个面试官的电话,上一轮面试通过了,这次是二轮技术面,说估计一个钟头。这次依然跳过自我介绍之类的,直奔主题。

1.有没有自己写过webpack的loader,他的原理以及啥的,记得也不太清楚。

这个我就说了一下,然后loader配置啥的,也还ok。

2.有没有去研究webpack的一些原理和机制,怎么实现的。

这个我简单说了一下我自己了解的,因为这一块我也没深入去研究,所以说的应该比较浅。

3.babel把ES6转成ES5或者ES3之类的原理是什么,有没有去研究。

这一块我说了一下自己的思路,大致也还OK,我也没去深入研究怎么转换的,之前好像看过类似的文章,自己也只观察过转换之后的代码是啥样的,至于怎么转换的规则,真的没去深入观察。

4.git大型项目的团队合作,以及持续集成啥的。

这里我就说了一下自己了解的git flow方面的东西,因为没有实战经验,所以我就选择性说明了这一块的不熟练,然后面试官也没细问。

5.什么是函数柯里化?以及说一下JS的API有哪些应用到了函数柯里化的实现?

这个我就说了一下函数柯里化一些了解,以及在函数式编程的应用,最后说了一下JS中bind函数和数组的reduce方法用到了函数柯里化。

6.ES6的箭头函数this问题,以及拓展运算符。

这一块主要是API和概念的问题,扯了一些规范以及严格模式下其他情况this只想问题。

7.JS模块化Commonjs,UMD,CMD规范的了解,以及ES6的模块化跟其他几种的区别,以及出现的意义。

这个也是说了一下自己的理解和认知,自己对模块化历史以及一些规范都有所涉猎,这一块也还凑合。

8.说一下Vue实现双向数据绑定的原理,以及vue.js和react.js异同点,如果让你选框架,你怎么怎么权衡这两个框架,分析一下。

主要是发布订阅的设计模式,还有就是ES5的Object.defineProperty的getter和setter机制,然后顺便扯了一下Angular的脏检测,以及alvon.js最先用到这种方式。然后扯了一下vue.js和react.js异同点,权衡框架选择,调研分析之类,噼里啪啦说了一大堆。

9.我看你也写博客,说一下草稿的交互细节以及实现原理。

这一款就按照自己用过简书或者掘金,SG这类草稿的体验,详细说了一下,这个开放性问题,说到点基本就OK。

最后面试官问我有什么想问的吗,面试到这里基本就结束了,差不多面了一个小时,说过几天就会给答复,如果过了就会去阿里园区进行下一轮的技术面。

三轮技术面

上一轮发挥感觉没前两轮发挥好,所以还是有点不自信的,没想到第三天后,就来电话了,通知我去阿里园区面试。

因为阿里西溪园区距离我不到十公里,我就踩着共享单车一点钟就出发了,天气比较热,飘在路上,百感交集,身边一辆法拉利轰鸣而过,又一辆兰博基尼呼啸而过,我心里一万头草泥马奔腾,MLGB,心里暗想,为神马开这车的人不是此刻看文章的你?

走到半路了,面试官给我打电话了,说我怎么还没到,说约定的是两点钟,我一下子就懵逼了,短信只有一个游客访问ID,并没有通知我具体时间,反正不管谁的疏忽,我肯定是要迟到了,于是我快马加鞭,踩着贼难骑的共享单车,背着微风,一路狂奔,到阿里园区已是汗流浃背,油光满面,气喘乎乎。。。

面试迟到了,印象肯定不好,加上满头大汗的形象也不太好,加上自己饥渴难耐,这面是估计要GG了,一进来就直奔主题,这次是两个大Boss面试我。

第一个面试官

1.先自我介绍一下,说一下项目的技术栈,以及项目中遇到的一些问题啥的。

这个问题就是个开场白,简要说明一下,问题都不大,这个面试官就是第一次打电话给我面试的那个boss,所以技术那块boss心里也有个底细,所以没再问技术问题。

2.一个业务场景,面对产品不断迭代,以及需求的变动该怎么应对,具体技术方案实现。

具体业务场景,我就不一一描述,Boss在白板上画了一个大致的模块图,然后做了一些需求描述。
然后需求一层一层的改变,然后往下挖,主要是考察应对产品能力,以及对代码的可维护性和可拓展性这些考察,开放性问题,我觉得还考察一些沟通交流方面的能力,因为有些地方面试官故意说得很含糊,反正就是一个综合能力,以及对产品的理解,中间谈到怎么实现,也问到了一些具体的点,记得问到的有一下几个。

① 怎么获取一个元素到视图顶部的距离。
② getBoundingClientRect获取的top和offsetTop获取的top区别
③事件委托

第二个面试官

1.业务场景:比如说百度的一个服务不想让阿里使用,如果识别到是阿里的请求,然后跳转到404或者拒绝服务之类的?

主要是考察http协议头Referer,然后怎么判断是阿里的ip或者啥的,我也不太清楚。

2.二分查找的时间复杂度怎么求,是多少

。。。排序的还算清楚一点,查找真的不知所措,没回答上来,也没猜,意义不大,不会就是不会。

3.XSS是什么,攻击原理,怎么预防。

这个很简单,跨站脚本攻击XSS(cross site scripting),攻击类型主要有两种:反射型和存储型,简单说了一下如何防御:

①转义
②DOM解析白名单
③第三方库
④CSP

自己对web安全这块系统学习过,前前后后大约了解了很多,对于XSS,CSRF,点击劫持Cookie安全HTTP窃听篡改密码安全SQL注入社会工程学都有一定了解,所以这个自然也不在话下。

4.线性顺序存储结构和链式存储结构有什么区别?以及优缺点。

我是类比JS数组和对象来回答的,反正还算凑合吧,自己都数据结构这块多少还是有些印象,所以入了前端,对数据结构和算法确实一直淡忘了。

5.分析一下移动端日历,PC端日历以及桌面日历的一些不同和需要注意的地方。

这个我能想到的大致都说了一遍,不同的场景交互和细节以及功能都有所偏差,以及功能的侧重都可能不同。

6.白板写代码,用最简洁的代码实现数组去重。

我写了两种实现方式:
ES6实现:

[...new Set([1,2,3,1,'a',1,'a'])]

ES5实现:

[1,2,3,1,'a',1,'a'].filter(function(ele,index,array){
    return index===array.indexOf(ele)
})

7.怎么实现草稿,多终端同步,以及冲突问题?

这个回答的不算好,本来也想到类比git的处理方式,但是说的时候往另外一个方面说了,导致与面试官想要的结果不一样。

最后说目前的工作经验达不到P6水平,业务类稍弱,阿里现在社招只要P6的高级工程师,但是可以以第二梯队进去,就是以第三方签署就业协议,一年后可以转正,就是俗称的外包。多少还是有点遗憾,面了四轮面了个外包,最后放弃这份工作了。

最后,感谢boss一直以来的关照和器重。

@marsprince
Copy link

marsprince commented Aug 9, 2017

草榴的前端技术这么强?

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

在阿里面前还是微不足道,洒洒水 @marsprince

@Hugo-seth
Copy link

一年就这么高的水平了,压力山大。。。

@marsprince
Copy link

大兄弟来个会员呗,好人一生平安呐

@watsonnnnn
Copy link

好人一生平安

@mqyqingfeng
Copy link

好多不会……压力好大 ╮(╯▽╰)╭

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

等一下,我看能不能搞两个邀请码

@marsprince
Copy link

来北京不@jawil,美团大量招聘前端工程师

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

深度广度细节挖坑都面了,反正面试官都是大牛级别,最后没有接受外包这种方式进入,面了四轮,多少有点遗憾,也算是一种经历和体验 @mqyqingfeng

@watsonnnnn
Copy link

大佬也来抢码了 @mqyqingfeng

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

今年还没考虑去北京,明年可能会去,发现邀请码要进行两部验证才能买,要求又变高了😓@marsprince

@linmi
Copy link

linmi commented Aug 9, 2017

来掘金工作

@iceshou
Copy link

iceshou commented Aug 9, 2017

哥们你已经非常牛逼了,真的,看来我也得继续加油了。

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

这货是小萌吗 @linmi

@jawil jawil changed the title 面试分享:一年经验初探阿里前端社招 面试分享:一年经验初探阿里巴巴前端社招 Aug 9, 2017
@lin-xin
Copy link

lin-xin commented Aug 9, 2017

好多题不会,看来我还是静静敲我的代码吧

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

面试造火箭,进去拧螺丝,大佬好好静静,不需要都会😄 @lin-xin

@1067011734
Copy link

2年的感觉白活了

@jin5354
Copy link

jin5354 commented Aug 9, 2017

lz 底子这么强都被工作年限卡,看来市场上 junior 岗位确实少,1年经验又难以冲刺 senior 职位,和 lz 一届,共勉吧。

@chinawzc
Copy link

chinawzc commented Aug 9, 2017

厉害 向大家学习

@yy523697597
Copy link

太厉害了,顺带求个码@jawil

@weiliang903
Copy link

一年经验已经很厉害了

@hezhongfeng
Copy link

牛逼啊~好强

@rxctp
Copy link

rxctp commented Aug 9, 2017

已经follow 求个邀请码

@xygcxy
Copy link

xygcxy commented Aug 9, 2017

草榴就是6啊 同届共勉

@wangqilinqqq
Copy link

牛逼 666~

@MrErHu
Copy link

MrErHu commented Aug 9, 2017

真的假的,草榴的前端在国内,不会被逮捕吗?

@jiangqizheng
Copy link

且行且努力,好吧,我是来求邀请码的 :)

@gaoupon
Copy link

gaoupon commented Aug 9, 2017

上班时间打开你首页的网址,把我吓尿了 :) beg for code

@jawil
Copy link
Owner Author

jawil commented Aug 9, 2017

邀请码来之不易,且用且珍惜,有缘人得。@所有人
ee39eb74d18337e2 2017-08-09 17:14:07 |   |   | 未使用 | 邀请

d1efe3e05445cc28 2017-08-09 17:14:07 |   |   | 未使用 | 邀请

@Kenshin-liu
Copy link

半年经验,前天面的电话初探,跟你问题差不多..... 说是让我等一面 不知道会不会被刷

@lxp-git
Copy link

lxp-git commented Mar 31, 2018

17届的,18年才把自己当前端,还有机会吗😅什么都做什么都不通。向大佬学习

@amandakelake
Copy link

还差两个月满一年经验……看看自己可怜巴巴的40个star,再看看大佬的4000+
表面数字,实质几个层次的技术差距,以君为勉

@jawil
Copy link
Owner Author

jawil commented Apr 2, 2018

有机会一起共事哦,欢迎砸简历 jawil1024@gmail.com,现在我们部门也招一年的 P5 @amandakelake

@jerry9926
Copy link

1024 膜拜一下

@Carrie999
Copy link

飘过

@dawufenfen
Copy link

弱弱地问现在过了四月了,还招一年的P5么QAQ @jawil

@jawil
Copy link
Owner Author

jawil commented May 17, 2018

今天还有人在群里问了,招,不过名额不多了 @dawufenfen

@yinxin630
Copy link

@dawufenfen 大麦网招p5, 有兴趣可以来试试~ 坐标北京望京

@dawufenfen
Copy link

dawufenfen commented May 18, 2018

收到!感谢! @jawil
我在杭州哈 @yinxin630 ,不过还是谢谢你。

@Elm1992
Copy link

Elm1992 commented Jun 22, 2018

兄弟,你面的核心部门?

@Mrcxt
Copy link

Mrcxt commented Jul 3, 2018

你们都太厉害了,学不过,学不过

@imwillhayes
Copy link

P6前端薪资有多少?

@yinxin630
Copy link

大概20~32k吧

@Sessionking
Copy link

妈呀。看了一下,发现啥也不会。

@Harhao
Copy link

Harhao commented Oct 15, 2018

跪望大佬,想问一下下面这题

  • DOM事件中target和currentTarget的区别

targetcurrentTarget,是不是在绑定事件的时候,触发事件。如果被绑定事件的父dom节点里面有子dom节点,如果触发到子dom节点,通过event.target获取到的是子节点的信息;触发父dom节点,event.target获取的是父dom节点的信息。而event.currentTarget无论通过子dom节点触发还是父dom节点触发事件,获取的都是父dom节点信息(也就是被绑定事件节点的信息)??

@komagic
Copy link

komagic commented Oct 15, 2018

e.target 指向触发事件监听的对象。
e.currentTarget 指向添加监听事件的对象。

@JunyWuuuu91
Copy link

这也.....平均水平吗,一年的经验能这样。我都半年了,还停留在JS一些JS框架上。

@GrowthCoder
Copy link

大佬在么?最近也面了个阿里外包岗😂不知道去不去

@jawil
Copy link
Owner Author

jawil commented Dec 5, 2018

外包的话建议是最好不去,不过你需要综合自己的情况加以考虑,想清楚就行 @GrowthCoder

@GrowthCoder
Copy link

外包的话建议是最好不去,不过你需要综合自己的情况加以考虑,想清楚就行 @GrowthCoder

大佬现在在哪呀

@hezhongfeng
Copy link

@GrowthCoder 他已经在阿里了

@fulvaz
Copy link

fulvaz commented Dec 6, 2018

求p5岗位

@GrowthCoder
Copy link

@GrowthCoder 他已经在阿里了

🐂

@liuzhiyang0113
Copy link

强,我都宁愿相信是研究生毕业一年了。。。

@NatPagle
Copy link

NatPagle commented Mar 8, 2019

接近三年经验的我,还是个业务工程师,重学前端迫在眉睫!

@Dashsoap
Copy link

好多不会……压力好大 ╮(╯▽╰)╭

然而你进去阿里了。。。

@PLQin
Copy link

PLQin commented Apr 14, 2020

好多不会……压力好大 ╮(╯▽╰)╭

然而你进去阿里了。。。

你咋知道

@Dashsoap
Copy link

好多不会……压力好大 ╮(╯▽╰)╭

然而你进去阿里了。。。

你咋知道

冴羽大大的ES系列教程 还是蛮出名的吧哈哈哈

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests