阿里巴巴面经

应聘公司:阿里巴巴

职位:研发工程师

形式:电话视频面试

写在前面的话

          本人算是大四IT男,大学这几年,浑浑噩噩的也是慢慢的就过来了,从开始不懂事只知道玩,到慢慢的开始知道去自己学一点东西。今天才刚把阿里的技术面试给面完,算是通过了技术面试了,所以就想写一篇博客来记录一下这一个周以来关于阿里面试的点点滴滴,主要是回忆一下面试过程中的技术问题,留在自己的一点财富吧。

       另外说一句,现在已经快12月份了,可能也会好奇为啥现在还会去面试阿里,按理说BAT等等的互联网公司早就面试完了...

       楼主在8月份的时候参加了阿里巴巴的内推,然后通过了前两轮的电话面试,后来阿里通知8月底的时候去杭州那边进行终面。结果当时就由于各种各样的原因(主要还是自己太渣),就没有过。也就不能再参加阿里的校招了。前几天的时候突然接到了阿里技术保障部的一个部门,问我对监控工程师这个岗位有没有兴趣(ps:细节能够决定很多事情,我当时知道自己没过之后,就主动联系了我之前内推部门的那个manager,意思就是如果有机会再帮我推荐一下),随后对我进行了一些面试...就开启了这一周三次面试的开始。关于内推的电话面试,其实也有很多技术可以谈一下,但会在之后的时候重新写一篇博客。说不定以后还是能用得到,就记录下来吧。

       自己觉得重要的内容会用绿色字体标记,并且后面跟着!important

第一面

       当时我正在浙大这边跟着导师做项目调研,而且也没有预料到会接到阿里面试的电话,所以当时还是有点紧张,刚开始说话的时候都有点颤音。

       首先是最普通不过的自我介绍,这里我自己的方法就是把自我介绍的内容写下来,然后之前也参加过面试,所以就对这部分内容比较熟悉。自我介绍首先可以一两句话介绍自己的家乡和学校专业,然后可以按照时间顺序来叙述自己大学这几年做过的事情,比如说参加过什么培训,自学过什么方面的知识,参加过什么比赛等等吧。然后可以总结性的说一下自己有哪些优点和缺点,当然这个是指的技术方面的,比如我会说自己的项目多,但是深度不够等等。有实习经验的也要提一下,最后可以介绍一下自己最近在学习哪方面的知识等等。当然这个只是我自己的想法而已。

接下里就是让我项目介绍了。这里我介绍的是一个叫做校园文件分享的项目,其功能就类似于百度网盘了,没什么特别的。我就按照先框架,然后功能,然后关键流程,最后自己所做的工作这样的流程来介绍的。

       下面我就按照问答的形式来介绍面试的问题:

1、问:“觉得项目中遇到的最大的难点是什么?”。这个我就按照自己的事实说了难点。

2、问:“平时在项目中遇到难点是如何解决的?”

     我的回答是一般都是通过google来进行搜索,通过更换各种不同的关键来尽最大可能的查询这方面的知识,然后查找到一些大神发的帖子啊或者技术文章,然后通过这些文章自己来钻研这方面的技术。

3、问:“介绍关于项目中数据库等优化等问题”。首先,通过横向切割文件表,将其分成多个表,比如分成Datas_1,Datas_2等等,然后在存的时候根据id进行hash,这样能够加快表关联时候的查询速度。另外,适当的建立索引而不过分的追求索引,因为索引在插入的过程中会同时更新索引,降低了效率。(因为我当时说的是我自己做的有包括数据库优化等等这一些方面,所以面试管让我具体介绍一下。

4、问:”这个项目的出发点是什么,大概指的就是项目的需求是什么。

      回答也是按照实际情况来说,就不具体细说了,毕竟回答只适合我自己的项目。

关于项目方面就问了这么多,技术细节都没有问,都是从总体上来问一些,所以我觉得在准备自己的项目过程中,不仅要自己真正的去参与了其中,并且从软件工程的角度出发来认真的分析项目各个方面,包括需求分析、调研(市场上同类软件的优缺点)、代码量、概要设计、主要的类图、主要流程图、测试等等各方面!important

5、问:平时都逛哪些论坛? 

      答:CSDN、开源社区、dataguru等。

6、问:有没有经常逛一些国外的论坛? !important

      记得之前有过,但不经常,所以就想不起,就以经常打不开国外的链接为由稍微搪塞一下,紧接着就问我,那你之前说都用google搜索,是如何打开的?我就事实求是的说,通过豆荚的一个翻墙软件,但是有流量限制,另外通过谷粉的一个搜索引擎,这个服务器是在香港,相当于把你的请求转发到香港然后把结果弄回来。(稍微有点漏洞就被追问 = =)

7、问:有没有阅读过一些开源框架的源码?都是通过何种方式来进行学习和阅读这些源码?

      阅读过spring、hibernate以及hadoop这几个项目的源代码。我就以spring为例子,首先买了基本关于spring源码级别的书,了解最核心的部分,然后通过看一些教学视频来跟着分析源码,通过EA工具单独导出某些类之间的关系来进行分析,最后还是会去论坛博客看很多大牛写的文章。很多知识点都是重复介绍,这样也就加深了自己的理解和认识。

8、问:为什么会去阅读源码?以及学习了源码对你的开发的影响。

      这个也是因人而异了,所以可以提前思考一下这个问题。第二个问题我个人觉得从设计模式这个方面回答会比较好,可以提前准备框架中的设计模式,然后将其与自己的项目来结合一下,能够表现出你将开源的好的东西应用到了自己的项目。当然,还要自己再扩展一下。

9、问:介绍什么是大数据?(PS:我在自我介绍的时候谈到了自己最近在学习大数据和机器学习方面的内容)

     百度百科可以很好的回答你,当然不要去背,而是边解释边举例子来描述。

10、问:介绍自己在这段时间学习过程中,学习了哪些内容?

      我就挨着介绍了hadoop是什么,及其子项目的每个作用是什么等等。

11、问:介绍几种常用的机器学习算法?

      当时我对机器学习算法只是懂皮毛,所以就干脆说刚开始学习,目前还是处于开源软件的学习过程中,对机器学习算法还没有深入研究。(实事求是了,要不然被追问也就尴尬了)

12、给你一堆海量数据,你有哪些方法可以处理?

      这个我当时也没有回答好,这几天也没去思考面试官到底想问我什么~//TODO一下

13、平时的爱好?

      篮球,然后进行扩展描述。

14、性格上的优缺点?这个回答略...


      整个技术面就这样over了,最后面试官给我介绍了这个职位的具体工作,需要具备运维和开发的能力,然后我又向其说明了自己目前的情况。第二天就通知我一面通过,然后告诉我二面的具体时间和形式。(视频面试)

第二面

       第二面是有两个面试官(一面的面试官+经理(女)),但主要是那个经理来给我面试。整个面试持续了接近一个小时...

       首先是自我介绍+项目介绍,重复了的问题不再多说,主要是新的问题。

1、问:项目的难点?项目的优势

2、问:是否有过调研?(我就回答说做过百度网盘和华为网盘的调研,通过实际使用这几款软件)

3、问:如果让你实现,觉得网盘中的分类是如何做的?

     当时有点意外,稍微想了一下,回答说:如果让我实现,我会在文件上传过程中,通过解析文件名得到文件类型,然后存储的时候将类型单独作为一个字段,并且在其上建立索引。另外,我又向面试官表达了自己曾经做过文件分类,但是是通过递归扫描文件来做的(算是向面试官尽量表现自己的优势吧)

4、还有好几个问题都是与百度网盘和华为网盘有关的,记不清楚了,但是都需要自己临时来思考的。这种问题面试官都会给你留时间,而且面试官可能也不晓得正确答案是什么,所以就发挥自己的能力,尽最大可能回答吧。

5、问:为什么觉得自己的项目深度不够?是什么事情让你这么觉得?

6、问:那你是如何来提高自己项目深度不够这个问题的。

7、问:机器学习与大数据有关的问题。我利用一面和二面之间的这段时间,赶紧补充了一下机器学习算法方面的问题,我就按照分类和聚类的顺序挨着介绍了多个算法,包括这些算法有什么应用。

8、问:如果你利用阿里的数据,你可以做什么?

      答:首先提了一下阿里信贷,然后说将其应用到大学生群体中。另外一个就是利用数据来打假。

9、问:性格优点和缺点?

10、问:做过比较后悔的事?

11、问:在学习上,如果有一个机会你可以重新把握,你会把握哪一次机会?

12、常逛的论坛。!important(这个问题似乎很重要,我在HR面试的时候也都被问到了)

13、问:做过比较后悔的事?

14、问:上边说到的项目中,你们有几个人?是如何分工的?

15、问:你一般在项目中会处于什么角色?这些都是根据自己的情况来发挥的~但最好提前准备一下

第三面

这一面听声音是比较年轻的面试官,态度超级棒~

1、项目介绍

2、服务器是部署在什么地方的?然后数据库用的是什么数据库?

3、你说你的项目对于android平台为什么能够更好的适应屏幕?

     我们采用的win8metro风格的图标,所见即所得,用图标来代替文字。但是考虑到手机屏幕的分辨率千差万别,我们会在第一次启动的时候获取分辨率,然后通过一个算法来计算图标之间的间隙以及图标与边框的间隙,如果分辨率很大,就采用另一套图标。

4、还有一些项目的小细节问题,只要项目是你自己做的,一般都没问题。比如说你用户登录之后,在接下来的操作是如何验证的?

     在web中,我们通过session来存储已登录用户的信息,通过spring的AOP,每当发送action请求时,会首先判断用户的信息以及权限等,继而再进行操作。在android和windows平台中,通过一个static的map数组来存储信息。

5、问我哪几门学科学的比较好?

     设计模式,数据结构,操作系统,linux等等,然后附带强调了一下自己的成绩很好

6、介绍几种设计模式?然后让我介绍策略模式

      首先介绍策略模式大概是怎么一回事,是有什么作用,然后通过一个实际的应用(最好是自己的项目)来说明一下。

7、对于数据结构,印象比较深的?

      首先简洁的说一下数据结构主要有哪些内容,从链表,堆栈,到树图。然后着重说一下数据结构稍微难的部分,比如说对于红黑树、B+树、图等也有过一定的研究学习

8、介绍java的hashmap是如何实现的?

     这个就很简单了,稍微看一下源码就能晓得是咋回事了。我自己也写了一篇博客来专门介绍hashmap以及其他的数据结构

9、我问面试官为什么会选择留在阿里?

     面试官从技术以及更高一个层次来向我说明了一下(他得说了五六分钟,灰常有爱)

就很easy的结束了,然后没过多久,简历状态就显示通过了~~灰常感谢有爱的面试官。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值