第一次电话面试


早上还在上课的时候实验室老师给我发QQ,他好像接了个外面公司的项目,需要人来做开发,下课到办公室去找老师的时候,刚到办公室,老师开始给我讲需求的时候,电话来了。。。。。。对方一开口说是淘宝的什么,我一开始以为是淘宝的客服打的电话,正准备挂的时候。。对面问起你是不是投了阿里巴巴的实习简历。。。。。心里第一想法卧槽。。。卧槽。。。阿里巴巴。。。我还以为我简历挂了,都放弃找实习了你来电话了,赶快快步走向实验室,面试官先让做了个自我介绍,说实话,没经验,又很紧张,边走边答,一开始都语无伦次,坐下之后就开始问我项目的东西,我主要说了一下TinyWebServer的东西,这是上学期写的一个小东西,主要是学完网络,然后想做个项目,刚好问了一下王月,王月推荐说可以写个http server练练手,然后就是在网上查资料,发现C++有很多成熟的网络框架,比如boost里的asio框架,是个跨平台的框架,但是自己不太想要用框架,想自己撸,上google搜how to write http server. 找到了几个老外写的博客,看了看博客,就开始动手了,几个博客都是用C实现的,我打算是用C++实现,写了大概半个月,写完还是很快的,博客作者提供的有源码,主要还是调bug,网络程序没有调试的经验,只能人肉调试,调试很痛苦,写完之后对http报文的一些字段比以前熟悉了一点,然后对网络程序整个通讯过程有了了解,至于阻塞这方面的东西,看了博客上的一些介绍,主要是fork()解决,这个真心不太熟悉,http server在CSAPP上有一点介绍,但是目前还没看到那里。面试官似乎对网络这块不熟悉,问了一点就点到为止了,然后就是问我github上的实现的机器学习算法的项目,这其实是大二的时候实验室老师给了一本《Machine Learning In Action》,这上面主要是讲的算法的实现,跟着敲完了一遍,收获就是觉得其实ML这方面还是要对数据敏感,然后就是经验了,还有就是自己原理不懂,然后寒假的时候在跟Stanford CS229 Machine Learning的课程,这主要是讲原理,很多数学知识,课程的讲义很多,全英文好几十页,目前还没啃完,《Machine Learning In Action》因为写的太早了,每个算法其实后面都有配套的小项目,我都实现过,然后特么的面试的时候想不起来了。。。。再后面就问了一个简单的算法问题,一个链表逆置问题,宝宝大二就撸过链表逆置了,在纸上随便画了两笔就开始讲了。。。。问我有几种方法。。。我说了两种,讲了下递推的方法,就是每次把头指针取下来向前挂,时间复杂度O(n),空间复杂度O(1),然后就是递归,简单来说原理就是开个栈,把链表跑一遍,跑的时候同时push进栈,然后跑完了,把栈里面的元素pop出来,pop一个挂一个。栈空了,链表就逆置了,这个方法当时我答空间复杂度答的有点问题,应该是O(n),因为存在栈的开销,但是这个简单的问题,当时没有给面试官解释清楚,这也是整个过程我觉得我答的最不好,最不专业的地方,然后后面就是让我测试一个简单的计算器软件,因为学长给我内推的是测试,本来想让学长帮我推个开发岗的,学长说其他部门不太好推,我也不太想过多麻烦别人,测试完全没接触过,所以这个问题答的就不行,后来一想,自己的答案答的太烂了,没主要还是没有把语言组织好,后面就问了一下自己的项目中有没有用到自己学得算法,刚好前几天在Udacity上看Web Crawl的时候对建index的时候,将数据结构从链表换成了dictionary,用哈希表实现,当时建了10000条index,lookup一个index从2.6缩减到0.02秒左右,面试三十多分钟就结束了,其他的问题就是一些说说自己的优缺点,这个答的也不是很满意,没有把自己想表达的意思表达出来,面试官理解成我学东西不深入,然后就是问问面试官一些问题,我就问了我简历写的咋样,有没有什么问题,面试官就说最好加上个人评价,我倒是觉得个人评价没有那么重要,面试就匆匆结束了。整个过程,说实话面完自己心里就有底了,没戏。。。。还是自己没准备好,问题不是难到没思路,还有就是在语言组织这块还是存在很大问题,还是得刷刷面经和leetcode,面完花了点时间把链表逆置的程序写完了,如下:

#include <iostream>
#include <vector>
/*******************
* @Author: Soyn
* @Brief: Reverse the list, the first telephone interview with Alibaba.What a pity.
* @CreatedTime: 15/3/16.
********************/
struct Node{
  int val_;
  Node *next;
  Node(int val) : val_(val) {}
};
void Print(Node *head)
{
  for(auto *p = head; p; p = p->next){
      std :: cout << p->val_ << " ";
  }
    std :: cout << std :: endl;
  }
Node *CreatedList()
{
  std :: vector<int> int_vector{1, 2, 3, 4, 5};
  Node *head, *tail;
  head = tail = nullptr;
  Node *curr;
  for(auto e : int_vector){
    curr = new Node(e);
    curr->next = nullptr;
    if(head){
      tail->next = curr;
      }else{
      head = tail = curr;
}
    tail = curr;
}
  std :: cout << "Original sequence: " << std :: endl;
  Print(head);
  return head;
}
Node* ReverseListIteration(Node *head)
{
  Node *new_head = nullptr;
  for(auto curr = head->next; head; head = curr, curr = curr->next){
  head->next = nullptr;
  if(new_head || !curr){
  head->next = new_head;
  new_head = head;
  if(!curr) break;
  }else{
   new_head = head;
  }
}
return new_head;
}

Node *new_head = nullptr;
Node* ReverseListRecursion(Node *head)
{
  if(head->next){
    auto curr = ReverseListRecursion(head->next);
    curr->next = head;
    head->next = nullptr;
    return head;
    }else{
      return new_head = head;
  }
}
void Test()
{
  Node *t = CreatedList();
  std :: cout << "I'm iteration version(time cost O(n), space cost O(1)): " 
  << std :: endl;
  Node* h = ReverseList(t); // output ===> 5, 4, 3, 2, 1
  Print(h);
  std :: cout << "I'm recursion version(Time cost:O(n) Space cost O(n)): "
  << std :: endl;
  ReverseListRecursion(h);
  Print(new_head); // output ==> 1, 2, 3, 4, 5
}
int main(int argc, char **argv)
{
  Test();
  return 0;
}

第一次面试还是没经验,后面面试的话应该会比这次要好一点,BAT也没有想象中那么难,希望后面能找到暑期实习吧,艺无止尽,自己还需努力,加油。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近互联网的内推阶段已到,我每天都能看见各种推送消息。前两天刚投了一个,被内推成功后,在官网完善了简历内容,今天下...
    小白ff阅读 3,818评论 3 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,707评论 25 709
  • 要懂得自己爱自己,只有懂得了自己爱自己,我们才能更好地爱别人……
    叶子与风阅读 2,415评论 0 0
  • 西塞罗说:春是一年中新生的季节,而人生新生的季节是一年只有一次的青春。 我就像大多数的高考毕业生那样,在兵荒马乱的...
    橙橙冉阅读 1,215评论 0 0
  • 被酒精消磨的。 夏日闭门不出,逃避温度与阳光。保住了皮肤,保住了肥肉,溜走了意志力。 遇到大小事件,伤神的,立即认...
    唐四月阅读 1,586评论 0 0