2019最新成为HR专家的100门必修课全套课程
限时抢购仅需19元(原价3600元)

阿里巴巴云计算 认领

物流/运输  杭州   1-10人  国企/上市公司

  1. 首页
  2. 公司
  3. 阿里巴巴云计算
  4. 阿里巴巴云计算c++研发面试
  5. 阿里巴巴云计算c++研发面试经验&面试问题

阿里巴巴云计算c++研发面试经验

面试失败 杭州 难度一般

阿里巴巴云计算c++研发面试经验&面试问题

应聘公司
阿里巴巴云计算
面试职位
面试时间
2011-10-10 — 2011-10-10

面试问题

技术面试2(50分钟左右)<br> 貌似是一个技术主管来面试的。先是聊了聊天,还让我自我介绍了(这个问题面试前一定要好好准备,说得没有条理会给面试官留下一个不好的印象)。然后出了一道多线程的题目给我。<br>一个系统中有很多的任务在等待执行,这些任务由一个任务等待队列来管理。现在有一个调度器线程负责调度这些任务。现在系统中资源R1有m个,R2有n个,对于每个任务Task[i],它对A的需求量是Pi,对B的需求量是Qi,运行完所需时间是Ti。<br>(1) 如果同时可以有多个任务一起运行,要使所有的任务以最短的时间跑完,你会怎么设计?要用到几个线程和几个信号量?会遇到什么样的问题?<br>(2) 如果任务之间的调度顺序是确定的呢?<br>(3) 如果对于每个任务Task[i],它要在对所申请的B资源用完之后才会去使用所申请的A类资源,这样你会如果优化你的设计?<br>这个我完全凭自己的感觉去回答了。<br><br>总结:(1)对于一个知识点,不要仅仅停留在大概知道是怎么回事的阶段。只有你能清楚地向别人解释这个是怎么回事的时候,你才是真正的懂了,所以要多和同学讨论,多和旁边的人交流,多动手写写自己的学习心得、技术博客。<br>(2)平时在写代码的时候就要注意多考虑一些问题,这样写会有什么Bug?养成习惯之后就应该能写出漂亮的代码了。

面试过程

技术面试1(大概45分钟左右)<br><br> 进去先是聊天,面试官说他以前也是浙大的,比较亲切。然后问了聊了下我的考研情况,为什么决定第二次考?第二次准备考试的时候是如何提高你的英语水平的?(我和他说了第一次英语没过线)。然后让我介绍了一下在公司做的项目(我工作过3个月),在这个项目中你遇到过什么印象比较深刻的问题?是如何解决的?<br><br> 然后是15分钟写代码。写一个函数实现如下功能:向该文件读入一个文件,统计文件中每个单词的出现次数,并以标准输出流的形式显示出来。我是用Map实现的,思路很简单:就是每读入一个单词,判断在Map中是否有该元素,如果有则将该单词对应的Value值加一,如果没有则将该元素加入Map中。写好之后给他看,指出了我的代码中存在的一大堆问题:<br><br>(1) 没有包含头文件;<br><br>(2) 函数类型最好是bool的,而不是void的类型;<br><br>(3) 这样把标点符号也作为一个单词来统计了,不大符合题意;还有一些想不起了。<br><br>接着是很多的扩展性问题:<br><br>Q:如果文件很大,内存是放不下的,所以不能以标准输入流的形式来读入文件,这时候该怎么办?<br><br>A:可以把该文件分成多个小的文件,然后分别处理,最后再做一个二次统计。<br><br>Q:那按你的实现方法,做二次统计的时候会遇到什么样的问题?<br><br>A:可能该文件的关键字很多,导致Map中放不下那么多的关键字;<br><br>Q:那怎么办呢?<br><br>A:在分割文件的时候做处理,按字典序来分割文件,比如首字母为a的单词放到一个文件中,这样来做文件;<br><br>Q:这样分割之后你有什么样的方法来提高你程序的效率?<br><br>A:可以用多线程,不同的文件同时处理,而且他们之间也不用同步互斥,所以实现起来会相对简单点。<br><br>Q:如果这样处理,速度的瓶颈出现在什么地方?<br><br>A:应该是CPU的处理速度吧。。。。<br><br>Q:不对,应该是对磁盘的访问,多个线程要求同时访问磁盘的时候,其中一个必然要阻塞。有什么解决办法么?<br><br>A:把他们放到不同的磁盘上应该就可以了吧。<br><br>Q:对,这个就是所谓的分布式计算了,这其中会遇到很多问题,比如其中一个磁盘坏了怎么办?不同磁盘如何实现信息的通信。(啪啦啪啦讲了好多。。。。)<br><br>第一面结束。

我要分享c++研发面试经验

正在加载验证码...

其它公司c++研发面试经验
阿里巴巴云计算其它面试经验