阿里一面

2016-03-09 AnnatarHe 更多博文 » 博客 » GitHub »

life

原文链接 https://annatarhe.github.io/2016/03/09/interview-in-ali.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


3月4号在V2EX上看到有人说可以帮忙内推。我就去发了邮件。6号终于回我邮件表示同意了。

8号周二接到电话,约面试时间。今天,9号面试了。

说起来,我觉得自己答得不好,也老是Get不到面试官的问题。

介绍

开头先来了个自我介绍。由于第一次面试,超紧张,都不知道说的什么。名字,学校,专业,项目。

聊爬虫

然后面试官应该是看着我的简历来的。问我爬虫如何实现,我说了一些。然后问我如何登录,我说写cookies。

又问如何登录,我就说在浏览器里登录然后拷贝cookies出来。他明显愣了。说:哦,这样也可以啊!

我就纳闷为什么不行呢?

然后问我如何防御这样的爬虫以及爬虫的应对策略。

我说基于IP地址结合用户操作频率来判定用户是否是机器人,给个验证码,然后判定。

应对方式是结合Google的图片算法库来解析图片数据,获得验证码。

他提醒我phantomjs可以做...我其实有点儿纳闷?哎,这货能解析图片了?不是个无头浏览器嘛,不是写测试用的吗?我写过的吧!

问了有很多具体实现,只是他好像知道了具体实现觉得技术难度并不高。虽然我也觉得吧。

对了,问我如何爬取,我说curl库,其实回答的时候有些颤抖。这么简单?

其实爬虫问得很细的。我有很多问题答得并不是很好。

ES2015

中间说到ES6,我说我特别喜欢。然后问我ES6都有什么特性。我当时紧张得就说了几个arrow function, class, module的。还有解构,Promise,generator什么的啊!!!我老是用的几个特性为毛不说!好烦啊!!!

趁着arrow function问我this。我觉得面试官一定是一副生无可恋的表情,内心一定是

唉,又问一遍,烦不烦

我内心也是

你们面试官是不是都有剧本

我确信自己是知道的,动态绑定,arrow function自动绑定父scope。不过觉得自己当时说的时候略紧张。可能没说完整什么的。

说到class我自觉地说了三个继承的实现,分别是Object.create(), Foo.prototype = new Bar(), 构造器调用

万万没想到啊,竟然还往下问,其他的呢!

我确实是懵逼了。我写继承一般都用第一种方法啊。这个把我问倒了

问我module。我说我用的ES2015的module,然后问require.js,我就说知乎大神都不让学了,我没学。他明显笑了一下。(不知是呵呵,还是觉得好玩)

然后就没问AMD, 和CMD,我都准备好了好吗,好歹问问我为什么Node的模块是同步加载的这种问题啊,哎,无处装逼让我好难过。

然后问问如何兼容。Babel,问构建工具,Webpack

好像也没什么问的。

聊daxuedogs.com

又说说我在简历上写的另一个项目,大学狗们。

问我为什么放弃react技术栈。我说因为react及其周边组件的不稳定所以放弃了。

然后问我基础。我倒是觉得这一段是我自己引导着回答的。毕竟看了很多面试题,大部分都问prototype, extends, scope, 变量提升。

作用域这边问了我chrome devTools 用得如何。说来惭愧,我竟然还不知道devTools那边不仅有断点调试,还有个作用域的显示。学到了一招。

对了,在继承的时候,我说我用的不多,他说写React要用吧,我说对啊。是要继承React.component

然后没有问下去。

说说Vue吧,好像什么都没说。对了Redux,问我为何放弃,我就说API变动频繁而且不喜欢它的API,我更喜欢Vuex。

没有深入问单向数据流的问题...我觉得这个问题应该是工程化里面应该知晓的知识吧。顺带着问问我RxJS也行吧。前两天刚看了一点儿文档,好吧,又没装到逼。

SPA

中间还说到了SPA,他问我为什么说SPA好。我就说响应速度要快很多,资源不用重复加载。

然后问缺点,自然是SEO

然后问解决方案,我说服务端渲染,像是react那样的。不然就只能看搜索引擎了。

然后他说了什么我忘记了

今天也查到了一些资料。有几个解决方案,一个检测UA,发现是爬虫就转到镜像站点。这个方案好像有点儿黑

另一个更好的方法是HTML5的history API。如何让搜索引擎抓取AJAX内容?

哎,之前虽然知道这个东西,也有尝试过,然而却不知道还可以用来优化SEO。又学到了!

布局相关

问我flex布局的相关问题,我是否现在大部分都用flex,我说是,他让我说一点儿,我有点儿无所适从,说这些属性?说了点儿column

然后问还有没有其他的布局方案,我说floattable还有flex,这个时候觉得面试官特别急,问我还有没有,我想不出了。

他说了一个position,恍然大悟,哦,原来还有这货,平常用得少了都忘记说了。哎,又跪了。

还有一个什么,记不得了。

这里还让讲了个clearfix,我特意说了个IE6的兼容方案。请看这里从两个恼人问题的解决来看 clearfix

感觉这题也回答的不好,他是想让我回答伪类的吧。得分点应该是content: '',我就说了display什么的,因为长时间没用过,记得不算太清楚。还是处理得不太好。

PHP相关

一开始刚上来其实就问我PHP相关的问题,哈哈,仰天大笑,PHP自认为写的还是可以的。

问我用什么框架,果断答到我大laravel。问我如何评价,我说很棒,代码优雅,确实办了不少事情,我现在不用的原因是感觉还是比较重的,还有一个原因忘记说了,我毕竟写JS比PHP多啊

然后问我就是上面说的爬虫了。

最后一点儿问我Nginx和PHP如何交互,我说通过php-fpm,因为fpm会起一个unix socket,然后nginx把请求转发进去。

面试官特别实诚,说没用过,并不清楚。

HTTP

中间其实有一段准备结束了,突然他好像看到了什么好玩的东西,就问了HTTP相关的问题。

他问

如何从HTTP网站加载HTTPS的资源,有什么问题吗?

我一听到,愣了。咦,有没有问题呢,https是加密资源哎,会不会有问题,脑海中激烈战斗。不对啊,我平常总是会引用bootcdn的静态资源啊,没什么问题吧。

面试官明显感觉我没有Get到他的问题,又说ajax请求呢。我想,不对吧,面试官这么问肯定是有问题的啊。然后回答,安全。

突然脑海里蹦出了,这题问的是跨域吧!然后果断回答。继而问如何实现,分别是服务端给Nginx加header,jsonp, iframe。

脑海里几乎把jsonp的实现写了一遍,然后问我iframe如何实现跨域....

好吧,从来没写过iframe,更别提跨域了。这道题GG了

答案在这里

其实感觉答window.domain好像就可以了

然后看到我在简历上有写http2,就问了http2为何能性能提升,我说复用链接,在提示下说了复用TCP链接。然后问到http1.1其实也实现了一个类似的,是什么。

确实是懵逼了。哎,有吗?

得到答案keep-alive,这么一说突然就想起来了。然后问和http2的区别是什么。

更懵了。这个确实不熟。今天查一下资料

答案应该是http2更加充分的运用了多路复用,只有一条连接就可以了。

然而面试官给的答案好像是server push。我就说在Nginx还没实现。他提醒我说可以试试Apache,尝试http2的完全功能。我想了想确实是,过两天去试试。

阿里大牛

问我为什么想去阿里,我说对阿里最熟悉,去年去过阿里,感觉很棒。

他说举几个名人吧。我说了死马,花肉(前男友特别多的那位,哈哈), 小胡子哥,还有徐飞(帮我内推的)。之后就没说了,其实想想还有杨森张雯莉, 朴灵,winter呢。

唉唉唉,连人名都说不清了 T_T

问题

最后问问题也没把握好,我最近比较纠结的TypeScript和RxJS的一些选型问题,和应用状态应该咨询一下的,结果当时紧张给忘记了

还有他们的项目兼容到多少,可以给我点儿参考的。也忘记了。

其他

问我有没有接触其他语言,我说我应该专心一点儿。他就没法问下去了

现在想想应该说说我C的。毕竟Github还有个关于数据结构算法学习的仓库,写得也不算太糟糕吧。

有好多东西没有表现出来

总结

将近一个小时的时间

我中间有问了我今天的表现如何,他说还好,只是没找到亮点。

说得确实是啊,没什么亮点表现出来,昨晚翻来覆去睡不着,自己的亮点在哪里呢?

可能就是全栈,和性能优化懂得多一些吧。别人可能是完全前端,而我是全栈都能写

关于性能优化我实在是有一肚子水没说出来,那个操蛋的国外服务器让我一辈子的性能优化功力都发挥了出来,我有太多东西要说的了。

可惜,没有说出啦。

这次面试,我觉得太糟了。

一方面是简历写得太简单,很多东西都没表现出来,面试官也不好问什么,也找不到重点问。

另一方面是面试的时候太紧张,有很多东西都说不出来。也Get不到面试官的问题。

还有就是功力不够扎实吧。看看书,看看博客。写一个牛逼的东西吧!