新鲜的刚出炉的热乎乎的淘宝和DeviceVM面经 - 行者无疆 始于足下 - 行走,思考,在路上

新鲜的刚出炉的热乎乎的淘宝和DeviceVM面经

xiaohanyu posted @ Wed, 23 Jun 2010 01:27:47 +0800 in Work with tags work linux , 3458 readers

折腾的一天,两场面试,感觉都还凑合。

第一场是华数淘宝的面试,关于华数淘宝和淘宝之间有什么区别和联系,我也没有细究,反正上午十点到了西湖国际大厦后只看到了taobao的字样。来到了前台,填写了一份履历表,一会一位男员工走了出来带着我来到了一个沙发处。有好几个桌子,都是面试官和学生们面对面地谈。

首先还是自我介绍。我就毫不客气巴拉巴拉地说了一通,连自己骑车玩户外的事情都吹了一通。面试官微笑,蛮厉害的嘛。接下来就开始考题目了。第一道题目是c语言指针的问题。问:

char *p = "abcd";
printf("%d", sizeof(p));
char p1[] = "abcd";
printf("%d", sizeof(p1));

我大概是脑子进水了,两个简单的问题都答错了,弄了一个非常尴尬的开端。然后又问我有没有用过内存拷贝函数?"memset?"我问。“不是,memcpy。算了,有没有用过strcpy”。“这个,用过”。“那你写一下这个函数的实现”。然个后我就很不争气的写了一个非常糙的实现,还是在面试官的提醒下才改对的,两个明显的bug。尴尬。

接下来问我对排序了解多少,知道哪些排序。我说我对那种[tex]O(\lg n)[/tex]的排序比较熟,他让我举例,我就把能想到的选择排序、冒泡排序、插入排序、快速排序、归并排序、希尔排序等等都说了。然后他让我描述一下快速排序的实现,我就balabala讲了一通——其实要让我写,短时间内我还真不一定能写出来。快排到此为止。又问我那些是稳定排序和不稳定排序,我说这个我真不清楚了,可能要看具体实现——很尴尬。“还有别的排序方法吗”,“有,当然有,比如桶排序——还是创新工厂的面试时学会的……”。我又balabala的吹了一通,把决策树都说上了,这些排序总算是问完了。

问我了解设计模式不?我说看过几页《大话设计模式》。然后他问了一个单例模式?我就傻眼了,嘟囔着说不出来。其实这东西一直想去研究,一直在拖。接下来问我程序的内存空间是如何管理的。我就说栈和堆的东西。蒙混过关。然后问我“给你两个栈,如何模拟一个全功能的队列?”我想了想,给了一两套方案,不过终究不完美。

中间问我java的vector是怎么回事?java有vector的?我愣了。然后他说那就说说c++ stl里面的vector和list是怎么实现的吧,又什么区别。这个问到点子上了。记得大二时扫《c++ primer 3rd edition》时恰好仔细研究过,我就balabala的说了一下vector<int> v的v.capacity()和v.size()的区别,看得懂的应该不用细讲,看不懂的看官,你的c++比我还差,赶紧回家补补。问完这个又问我进程和线程有啥关系。一个进程开辟出来的内存,其子线程是否能够访问等等,答得一般。

又问我在实验室做的项目(一个windows mobile界面开发的项目),问我GUI库中的button的onclicked()的动作是如何相映处理的。我就把Win32 API里面的消息循环机制又吹了一通。面试官表示很满意。

最后问我linux shell命令的东西,比如如何找出一个分区内占用空间最大的目录,我说用"du -h . | sort",如何看磁盘使用量——"df -h",如何查找文件等等,由于日常经常用linux小打小闹,所以这部分答的也还算可以。

大概就谈了这么多,最后他送我出去,还郑重地握了握手,感觉还凑合吧。

然后回到玉泉吃了个午饭,就赶往滨江区DeviceVM参加下午一点的面试。公交+打的跌跌撞撞到了盾安大厦DeviceVM公司,接待我的是一个ppmm。二话不说,先给了我一套题目,说时间一个小时,标记的必做,没有标记的选作——这个标记主要根据你应聘的职位来标的。我的娘,题目总共有十几页,大概是16种类型,不过我只需要做6、7种必做的。类型分布大概如下:

  1. c/c++(what's operator overloading, what's copy constructor)
  2. oo(class, instance, inheritance, polymorphism, how to modeling)
  3. gtk(layout, glib)
  4. qt(qmake)
  5. linux file system(/proc directory, how to mount multiple file systems)
  6. linux device driver(what's io port? how to install and remove driver?)
  7. php
  8. javascript
  9. regular expression
  10. windows API
  11. xml
  12. uml
  13. networking
  14. python(list, tuple, dict)
  15. shell script($PATH, find command)
  16. logic
  17. personal information

我不管是否必答,先把自己会的都答上了。其实题目都不是很难,只是考的比较广泛,这就看你平时的积累了。而且每种职位大概只有7个部分是必答的。我应聘的是linux c++开发工程师实习,Qt和Gtk必考,可是我只有了解,却基本不会,倒是把Shell和Filesystem基本都答上了……汗。

答完了给了我一份履历表,填完履历表过来一位男面试官。看着我简历问我一些问题。首先让我阐述下c++的多态性是怎么回事。我就balabala胡侃了一通,把RTTI和函数指针都侃出来了,面试官表示满意。然后让我介绍了下实验室项目,我又balabala说了一通,面试官表示还不错。问我有没有用过javascript,我说只用过document.write()……又问我如何写一个程序,探知另外一个c++可执行程序的堆内存使用情况。这个问题不太明了,他说就是让你写个调试器类似的东西,我说没什么思路,他说可以利用c++的运算符重载,重载一下new和delete,让new和delete输出一些信息。不过我头脑中没有任何重载new和delete的想法和回忆,晕了。

最后他问我实习时间可以保证多少。我说最多到十月中旬,问我什么时候考完试,我说7月6号。然后就这样结束了。我也不知道这么问究竟什么意思,淘宝的面试官也这么问我,不知是悲剧呢,还是心里觉得我这个人还有点潜质,打算发offer了。

Ok,到此为止。

Avatar_small
treblih said:
Wed, 23 Jun 2010 06:13:02 +0800

哥们代码第2行多了个i

Wayne said:
Wed, 23 Jun 2010 09:48:24 +0800

没想到面试题考的这么广泛,比起阿里巴巴的校园招聘考题复杂得多了。

Avatar_small
Lox said:
Thu, 24 Jun 2010 01:57:43 +0800

@treblih: 多谢兄弟提醒,已经修正。

Avatar_small
Lox said:
Thu, 24 Jun 2010 01:58:14 +0800

@Wayne: 不知道校园招聘咋样。我直接发hr的邮箱。

御宅暴君 said:
Tue, 07 Jul 2015 10:51:37 +0800

最后结果怎么样啦!(敲碗

御宅暴君 said:
Tue, 07 Jul 2015 10:52:21 +0800

第一题里的答案分别是 5 和 4 吧。


Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee