个人觉得Taobao面试比Alibaba更有技术含量一些,同样也是分为两面,但是这次的确比较心虚,因为笔试的算法部分写的那个叫惨不忍睹,主要是改了又改……

    一面:开场同样是自我简介(貌似这是不变的定律),完了之后让我写了个字符串的hash函数,主要是考考代码能力吧,写了个类似BKDRHash函数的hash,然后给他解释了一番,之后貌似就没再扯什么技术,主要是扯项目上面的一些话题……

    二面:囧了,与Alibaba不同,Taobao所有的问题貌似都集中在二面了,比较难缠……

        问题一:一个LCA(最近公共主先问题),就是给你树中的俩个节点,求他们的最近公共主先……

        对于这个问题,其实有过ACM经历的都知道,典型的离线处理Tajian算法,在查询数比较多的情况下可以考虑这个,但是查询数不过得话,可以从这俩节点依次往上走就行(最水的方法)……

        问题二:让我实现C++ STL中的map……

        这个实际上其内部实现是红黑树什么之类的云云(实在记不太清),我就扯了以key来建立一个BST,因为这个存在退化,可以考虑平衡树什么之类的平衡技巧……总之感觉自己答的不够深刻……

        问题三:现在有两个类:

View Code
1 class A
2 {
3 int iAa;
4 A()
5 {
6
7 }
8 };
9
10  class B : A
11 {
12 int iBb;
13 B()
14 {
15
16 }
17 };

        现在用B定义一个变量b,在这过程中,在有A分配空间、调用A构造函数、B分配空间、调用B构造函数这四步,问起准确顺序……这个大家都知道的……

        问题四:一个IR系统应包含哪些模块……

        这个问题,主要是我扯的项目跟这个有关,估计她就随口问了吧,(PS:我们刚刚考过IR),所以还是背过……总之肯定是UI、查询处理、文本处理、建索引、搜索、结果排序……

        问题五:问下面这两种定义方式有什么不同?

View Code
1 char ch;
2  char * p = (char *)malloc(1);

        首先可以从编译器的角度,对于第一个变量ch的引用是直接引用其内容,但是对于变量p,由于它是指针类型,是取其内容作为地址再去内容,多了一级……

        另外,考虑存储空间,如果它们都处在局部函数内,ch和p肯定都在栈中,但是p所指向的空间是在堆中……

    差不多就这些问题了,其他的都是些没用的,平时上什么网啊、班级有没有同学来面试的啊之类云云……

    然后就木有了,等通知……希望没有悲剧……