移动终端开发的笔试题:
一.简答题
1.用线性表,二叉平衡树,哈希表存储数据,比较各个的优劣。
2.给定一个十进制数,转换成N进制。
3.给一个程序代码进行分析。主要是内存管理方面的。有4个小题目,如下:
(1)C程序将内存分为哪几类(答案在《程序员面试宝典》第175页)
(2)结合题目中给出程序代码,分析一些变量是属于(1)类中的哪一类。(答案《程序员面试宝典》第175页下面的实例)
(3)分析题目中程序代码关于内存分配的语句。内存分配失败后,结果是什么?
(4)delete与 free的异同。判断题目代码中使用是否正确。(答案《程序员面试宝典》第81页)
二,系统设计
对于一个递增数组,我们可以采用二分查找法判断数组是否存在数x。但现在有一不太规则的数组A’,但它又具备一定的规则性:在某一范围是递增,如数组序列:{15,16,17,21,1,4,6,7,100,124,156,…},在前4项是递增的,第5项到第9项也是…在这样的数组中,如何查找数x是否存在了。请详细给出你的算法。并分析算法的时间复杂度和空间复杂度。
研发测试笔试题:
一、简答
1 linux/unix远程登陆都用到了ssh服务,当网络出现错误时服务会中断,linux/unix端的程序会停止。为什么会这样?说下ssh的原理,解释中断的原理。
2一个最小堆,也是完全二叉树,用按层遍历数组表示。
(1). 求节点a[n]的子节点的访问方式
(2). 插入一节点的程序void add_element(int *a,int size,int val);
(3). 删除最小节点的程序。
3 关于hash,有表A,用100%表示,它的粒子度是0.1%,同样的表B,两张表组成一层。要将A均匀映射到B,B的每10%里面有1%对应该于A的10%。另一问,如果有超过十层以上,要实现它们之间的这种映射,hash函数应该怎么实现。
二、算法
1有一个数,比如N=123,一共有三位,所有位的值加起来是6。我们找出另外一个数141,也是三位,所有位加起来也是6,这样和123有同样关系的数还有很多,我们将求一个有这种关系并且是所有数中只比基123刚刚好大的数定义为F(N)。如果不存在,则F(N)=-1.现在有一个数n,它的位数小于1000.它的值小于10^500.求F(F(N))=-1。不记得问什么了?是问迭代过程怎么实现还是问什么时候停止的。反正是一个迭代
2 求一个全排列函数:
如p([1,2,3])输出:
[123],[132],[213],[231],[321],[323].
求一个组合函数
如p([1,2,3])输出:
[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]
这两问可以用伪代码。
三、设计
有两个十亿数据的表,表是xxID,xx,xx,xx之类的几个项,存的是url之类的,只说是存到硬盘的,中间没说内存限制什么的。
其中有一问是实现数据查找中的and ,or ,sub(与集, 交集,差集) 。其中要实现and(sub())之类的功能。
还有并行实现…不记得了。
另外一问是当查找(比如and运行)出前100位时,怎么让它停下来,不要再查找了。怎么实现这种高效查找前100位的运行。