您的位置:首页 > 其它

2012/11/11 vmware 笔试题目

2013-04-15 02:58 253 查看


2012/11/11 vmware 笔试题目

今天在上海交大闵行校区,笔试了vmware。写一篇日志,记录下笔试的题目。
试题形式:90分钟。20道不定项选择题,占60%分数;2个写程序的题目,占40%分数。全英文。
ps: 晚上在北邮人论坛上和同学们讨论了下,试题一共至少有四套,上海北京各两套。我做的是 version 1, Shanghai. 北京的版本,时间是150分钟。30个不定项选择,有三道或四道写程序题目的两种。难度,因为没做过,不好衡量,不过上海的题目少并不就比北京的版本简单。
从后往前写吧,因为后边的题目记得清楚些。题目后边的 ref 是我搜索到一些相关技术文章,供我写完这篇随笔后慢慢学习使用。

一. 写程序题目:
1. 给定一个 int 类型的数,在一个已经排序好的数列 int[] 中查找该数出现了多少次。例如 [1 1 2 2 2 4 6 7 7 8 9 10], f(7) = 2。设计一个你认为最理想的算法。描述算法,并给出时间复杂度。
  我是用 java 写的,算法是构建一个 Hashtable<Integer, Integer>, key 和 value 分别是数字和该数字出现的次数。然后在这个Hashtable 中查找给定数字出现的次数。构建 Hashtable 的时间复杂度是 O(n),n 是数列长度,查找给定数字的时间复杂度是 O(1)。
  ps: 据同学告诉我,题目要求是不能用 java.util.* ,所以我可能做错了%>_<%
2. (第二个题目描述很复杂,而且我做到这道题的时候,已经不到10分钟了,我按照我记得的复述一下,不一定正确)分配存储空间,有一种 aligned_malloc 方法,它每次动态分配的存储空间是2的次方,比如 16, 32, 64...,根据实际需要的 size 来确定分配的 aligned memory。实现下面两个函数:
  1) void * aligned_malloc(int size, int alignment)
  2) void * aligned_free(void * memory)
  ref: http://msdn.microsoft.com/zh-cn/library/vstudio/8z34s9c6.aspx
这道题目是 Cracking the coding interview 上的第 16.9 题(或其变种?)
  Write an aligned malloc & free function that takes number of bytes and aligned byte(which is always power of 2)
  e.g. align_malloc(1000, 128) will return a memory address that is a multiple of 128 and that points to memory of size 1000 bytes.
    aligned_free() will free memory allocated by align_malloc.
SOLUTION
1. We will use malloc routine provided by C to implement the functionality.
  Allocate memory of size(bytes required + alignment - 1 + sizeof(void *)) using malloc.
  alignment: malloc can give us any address and we need to find a multiple of alignment.
  (Therefore, at maximum multiple of alignment, we will be alignment -1 bytes away from any location.)
  sizeof(size_t): we are returning a modified memory pointer to user, which is different from the one
  that would be returned by malloc. We also need to extra space to store
  the address given by malloc, so that we can free memory in aligned_free by calling free routine provided by C.
2. if it returns NULL, then aligned_malloc will fail and we return NULL.
3. Else, find the aligned memory address which is a multiple of alignment (call this p2).
4. Store the address returned by malloc (e.g., p1 is just size_t bytes ahead of p2), which
  will be required by aligned_free.
5. Return p2.
  

1 void* aligned_malloc(size_t required_bytes, size_t alignment) {
2     void* p1; // original block
3     void** p2; // aligned block
4
5     int offset = alignment - 1 + sizeof(void*);
6     if ((p1 = (void*)malloc(required_bytes + offset)) == NULL) {
7         return NULL;
8     }
9     p2 = (void**)(((size_t)(p1) + offset) & ~(alignment - 1));
10     p2[-1] = p1;
11     return p2;
12 }
13
14 void aligned_free(void *p) {
15     free(((void**)p)[-1]);
16 }


二. 选择题目
  每一道题目都需要一定的时间,所以这部分我记得的比较乱,而且我记住的许多是我不会或者拿不准的题目,毕竟比较困难的题目在脑海中会盘桓的比较久一点。我随便写下我记得的吧,下面的标号不是实际的题号。

1. 这是第一题,给定一个数组和数组的排序过程,然后问是那种排序,我选的是堆排序。不过选项中有个 shell sort,我忘了是它是怎么实现的了...

2. GET 和 POST 的区别,当然,题目本身不是这么问的,每个选项都很细节,我不确定。记得有 GET是不是比 post 更安全, post是不是能传输更多的信息, post 的传输数据量是不是无限的。
  ref: /article/4901240.html
    http://zhidao.baidu.com/question/7984230.html
    http://youngsin2009.cnblogs.com/

3. Etag 标签和 http 协议中什么选择相关联,我选择了 if-modified-since,回来之后,百度了下,还应该选 if-matched/if-none-match
  ref: http://en.wikipedia.org/wiki/HTTP_ETag
    http://baike.baidu.com/view/3039264.htm

4. 数据库有两个选择题,一个是 pattern expression 的,选取某 column 中以字符串 abcd 开头的项,答案是 A,表达式部分是 LIKE 'abcd%' ; 另一道数据库的题目是 database index 是用哪些数据结构实现的,选项有 b tree, b+ tree, b- tree, AVL tree 还有一个忘了,我只选了 b+ b-树,应该是漏选了。
  ref: http://en.wikipedia.org/wiki/Database_index
    http://www.linezing.com/blog/?p=798#nav-1

5. 有两道虚函数表的题目,Vmware 好像很看重这个,因为我看到在2010年和2011年的笔试面试中都有这方面的题目,当然,它不是直接问你概念,而是很具体的例子和细节,所以尽管我之前看了好几篇虚函数表的文章,依然不是很确定做没做对。
  ref: http://blog.csdn.net/haoel/article/details/1948051/

6. 完全二叉树,有 N 个node, 问叶子节点有多少个。
  我通过举列子试验,得出答案是:N/2 和 (N+1)/2

7. 死锁问题。有3个 processes,每个process 都需要4个同一类型的 resources。问如果不发生死锁,那么至少 (at least) 需要多少个 resources?
  选项有9、10、11、12 四个。 我选择的10。

8. toplogical sort 问题。一个单项无环图 (a directed acyclic graph),有这些边 (<1, 2> <2, 3> <3, 4> <1, 4>),问这幅图的 toplogical sort 是什么?
  拓扑排序方法如下:
  (1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.
  (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.
  (3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止

9. Brain teaser 题目有两三个吧。记得一个排队买电影票的问题。题目是有10个人排队买电影票,电影票每张 5$,其中5个有 5$ 的纸币,另外5个人只有 10$ 的纸币,问有多少种排队方法,让售票员顺利卖给他们票,同时不需要准备零钱?
  选项有41, 42, 43... 这道题我想了会儿没想出来,就随便选了一项,继续往下做了。
  ps: 在论坛上求教后,答案是:42。
  卡塔兰数。
  对于任意一个位置满足 f(n5)>f(n10)就是合法排列~这个在编程之美上有这个题
 另一个题目是:有5只小白鼠,实验瓶子里装的是不是毒药,小白鼠服用一个瓶子里的药水,如果5分钟后小白鼠死亡,则证明该瓶子中装的是毒药。问最多可以测试多少瓶药水。我选择的是 32。
  选项的数字都不小,我猜测的,2的5次方是32...

10. 一个 process 中的 threads 之间共享的有什么。很多个选项。我选择了 shared memory, states, virtual address space, Signals, File Descriptor.
  ref: http://www.samba.org/~tridge/talks/threads.pdf

11. Demand Paging, 一类操作系统的 memory management 中的 Page replacement algorithm。给定了一串 page 数组,系统只能保存三个 page,两种算法 a). fist-in-first out b). last modified 问各需要多少次 page replacement 操作。
  ref: http://en.wikipedia.org/wiki/Demand_paging
  ref: http://en.wikipedia.org/wiki/Page_replacement_algorithms

12. 什么影响操作系统的 virtual address space? 选项有 physical memory size, CPU cache size, bus size 等等。看了下下边的wiki,答案应该是和总线的大小有关系,
  "a 32-bit OS,
the process has a 4 GiB VAS: each one of the memory
addresses (from 0 to 232−1)"
  "By default, 64-bit processes have 8TB of user-mode virtual address space"
  ref: http://en.wikipedia.org/wiki/Virtual_address_space

写到这里发现大部分的题目都已经被我写出来,看来我的记忆力还可以 :-0) 但愿我能通过笔试

--------------------------------------以下内容和本文题目无关--------------------------------------
ps:
  写完这篇文章,发现自己......尤其是论坛上同学指出第一个写程序的题我可能不符合题目要求。。。内心更加忐忑了。。。依然 0 offer,心情比较 blue,也许我做不成程序员了吧~ 本科在北邮学习的计算机和通信(貌似大部分北邮的专业都是这些课),研究生,先是和本科来自MIT, Cam 的同学们一起学 AI, 发现是“数学”;接着又师从诺贝尔奖得主学习光纤,发现是“物理” o(╯□╰)o
找工作了,发现还是写程序的工作需求大,自己也想尝试做程序员,奈何一方面自己水平菜另一方面今年行业整体形势不好,找工作屡屡受挫。。。找工作疲了,发发牢骚,生活还要 move on~
  论坛上,很多人都还没有offer,有人发帖念叨念叨,一个mm的回复说的很好:
【 在 bupt2010karl 的大作中提到: 】

  同lz,目前是0 offer,烦躁,想去的去不了不想去的还得逼自己去笔试还有论文。这个冬天格外寒,多少次想放弃却吐吐槽还要继续,多少次想算了只要有公司要就签了但还是放不下心中那个小小梦,怀疑,犹豫,彷徨,放弃,坚持,好多时候觉得放弃要好多理由坚持却只需一个理由:为青春少点遗憾,不管结果会怎样至少曾经也那样执着地追求过。一个人的北漂真心不容易。。。。。。大家都加油吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: