昨天中午12点刚参加完有道移动开发实习生笔试,以下是我尽可能回忆的题目。
题目总共分为两类:1.选择题(不定选项数)和填空 2.写程序
一、选择题(不定选项数,少选给一半分,选错或多选不给分)和填空
1.有以下一个函数
int Fib1(int index)请问它的时间复杂度与n的关系
{
if(index<2)
{
return 1;
}
return Fib1(index-1)+Fib1(index-2);
}
A) 线性关系 B) 二次方关系 C) 三次方关系 D) 指数关系
(提示:考察的是用递归实现的斐波拉契数列的时间复杂度)
2.(布丰投针问题)
设地面上有无数条等距的平行线,距离为H,现在随意抛一支长度为L的针(L<H),求针和其中一条木纹相交的概率_______。
3.下面有关C++与Java的关系的错误的有()
A.(忘记了)
B.在面向对象的多态实现中,C++与Java是不同的,在C++中,父类中只有具有virtual修饰的方法才表现为多态;而在Java中,不管有没有virtual或abstract,都表现为多态。
C.C++是静态语言,Java是动态语言。
D.C++直接编译为机器码,然后由计算机执行;Java编译为中间码(字节码),然后必须在具体某台安装了的Java虚拟机的计算机上编译为相应的机器码,才能执行。
4.int a=10;
int b=5;
int &i=a;
int *k=&b;
int *&j=k;
以下哪些不会让a的值变成5:
A)i=*k;
B)j=&i;
C)(忘记了)
D)(忘记了)
5.下面哪些是服务器脚本:
A)JavaScript B)JSP C)PHP D)ActionScript
6. 我们知道进程由很多线程组成,下面哪些是多个线程共享的:
A) 堆 B)静态变量 C)寄存器 D)栈
7.Android系统是基于一下哪一个系统:
A)UNIX B) Linux C) Symbian D) Solaris
(其它3个选择题不记得了)
二、程序题
1.编写函数实现将含有环的单向链表的环逆向,如果单向链表不含有环则不做任何操作。
例如
将环逆向后
2.编写函数实现寻找二叉树中任意两个给定节点的最近共同父节点。
3.我们知道n个数的排列共有n!种,如果所有的排列按照字典表的先后顺序排序,那么3个数有123、132、213、231、312、321。编写函数实现:给定一个字符串,求它在所有排列的字典表的下一个排列,如23541的下一个是24531。