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

来源:互联网 发布:freebsd 安装python 编辑:程序博客网 时间:2024/05/29 14:23

跟腾讯比起来阿里的效率真是太高了,通知我下午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问了问非技术方面的问题,然后就完了,其实时间挺长的,但是问题比较散,每什么困难的。

0 0
原创粉丝点击