您的位置:首页 > 编程语言 > C语言/C++

阿里巴巴技术实习生面试,c++方向

2014-04-26 12:15 337 查看
跟腾讯比起来阿里的效率真是太高了,通知我下午3点半到,4点开始面试,连续三面,7点20结束,网站上的状态就变成面试已完成,坐等消息了。

一面:

面试官先问我几个项目的问题,我就写过一个管理系统的项目,java,mysql。面试官先问我数据库怎么建的,我把三个表,外键,索引都告诉他,然后说有一个字段用户没有查询需求,没建索引。他说考虑用户需求很好,索引也是需要空间的。

然后就是几个问题,我简历里写熟悉各种数据结构,所以问了我好几个数据结构的题

先是一个问烂的题,判断一个链表是否有环,每年都有人问,每年都有人挂。不赘述了,链接里讲的很详细

第二个:有一个栈,除了push(),pop()之外还有个min()操作,要求时间复杂度O(1)。这个题我做个,他一描述我马上说两个栈,然后后面的就忘了。。。我又说可以用一个队列一个栈,他说你还是顺着两个栈的思路想吧,我想了一会他提示我,一个正常栈正常操作,辅助栈正常pop(),push的时候,如果需要push的元素小于当前栈顶就正常push(),不然就push栈顶元素,相当于开辟了O(n)的空间记录当前最小值。

第三个:有若干记录,学号和成绩,学号唯一,要求维护一个数据结构,动态插入学号和对应的成绩,成绩0-750,都是整数,同时给出学号,能查询对应的成绩和排名。

学号用字典树维护就可以,叶子节点记录成绩。再维护一颗线段树记录0-750区间内的人数。查询名次就是查询成绩比当前成绩高的一共有多少人。

然后基本就没有了。。。。聊了聊LRU,每问什么问题,一面面试官说过了,去二面吧。

二面:一面完马上就是二面,基本只有喝口水的时间。二面房间的外面写着终面面试间,结果终面完还有一个终面。。。。二面上来先聊聊成绩,学习什么的,是否读研,我说不读,然后问我用什么浏览器,我说firefox。然后问我标签页是用进程还是用线程实现的 。我想了很久,没说话,他说就是问进程和线程的区别。我答了区别,说应该是用进程实现,因为标签页之间共享的内容不多,没必要用线程。后来想起来top的时候只有firefox进程,我就说是线程实现的,原因不知道。然后问我玩什么游戏,我说LOL,他说LOL的数据报是怎么发送到服务器的,我把TCP到MAC层粗略讲了讲,然后就没了。然后是一个数据结构题,给很多子网掩码,查询某个IP的子网,我先说字典树,他说空间消耗大,然后我用bitmask,4G的空间,每个IP枚举子网长度,他问有没有更快的,我说没有了。他说可以建256叉树,四次能判断完。最后是一个逻辑题,三个人a,b,c,a说b说谎,b说c说谎,c说ab都说谎,问三个人是否说谎。用离散数学的方法可以得出只有b说真话,推导过程比较简单,就不说了。

三面:三面是2v1,一个技术人员一个HR,让我写了一份代码,HR问了问非技术方面的问题,然后就完了,其实时间挺长的,但是问题比较散,每什么困难的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: