宜信19秋招Java笔试,自己做的答案,欢迎大家批评指正
一、选择题
1、执行以下程序后的结果为:( C )
public class Test {
public static void main(String[ ] args) {
StringBuffer a = new StringBuffer(“A”);
StringBuffer b = new StringBuffer(“B”);
test(a,b);
System.out.println(a+”,”+b);
}
private static void test(StringBuffer x, StringBuffer y){
x.append(y);
y=x;
}
}
A.AB,B
B.B,B
C.A,B
D.A,A
2、有一群人来某奇怪的办事处办理业务,所有人取过号(从小到大)之后,这个办事处突然希里能按照年龄高低力理业务,但是同年龄的人按第之前所取号从小到大办理业务,下面那个排序算法不适合应用在此处 ( A )
A.归并排序
B.快速排序
C.冒泡排序
D.直接插入排序
3、己如一颗二叉树前序遍历和中序遍历分別为ABDEGCH和DBGEACHF,则该二叉树的后序遍历为多少?( C )
A.DGEBFHAC
B.DEGBHACF
C.DGEBHFCA
D.DEGHBFCA
4、3维空间中的6个平面最多将空间分为几个部分?( C )
A.41
B.44
C.42
D.43
5、把N*N的二维数组X顺时针旋转90度,数组下标从0开始,X[i][j]在旋转后的新矩阵中的位置为( D )
A.X[N-1- j][i]
B.X[i][j]
C.X(j][N-1-i]
D.X[N-1- j][N-1-i]
6、若使用KMP匹配算法,串’ababaaababaa’的next数组为 ( B )
A.012121111212
B.011234223456
C.012345678999
D.0123012322345
7、给棵完全二叉树,当叶子节点的数目为2018.则该完全二叉树所有节点的可能数目B
A.4065
B.4035
C.4067
D.4063
8、下面有关JVM内存,说法错误的是? ( A )
A.方法区用于存储JVM加载的类信息常量、静态支量、以及编译器情译后的代码等数据,是线程隔高的
B.原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
C.虑拟机械描述的是Java方法执行的内存模型,用于存储局部支量,操作数栈,动态链接,方法出口等信息,是线程隔高的
D.程序计数器是个比较小的内存区域。用于指示当前线程所执行的字节码执行到了第几行,是线程隔高的
9、在双链表中,删除元素p需要做的操作是( B )
A.p->nex->next=p->next;p->previous->previous=p->previous;
B.p-> previous->next=p->next;p->next-> previous=p-> previous;
C.p-> previous->next=p-> previous; p->next-> previous=p->next;
D.p-> previous->next=p->next->previous;p->next->previous=p-previous->next;
10、请问下列程序将输出多少个“宜信”?( B )
int main(void)
{
int t;
for(i=0;i< 2;i++){
fork();
printf(“宜信”);
}
return 0;
}
A.7
B.6
C.5
D.8
11、下列哪个数组表示一个最小堆?( D )
A.[30,21,15,6,3,1,5]
B.[6,3,21,1,5,15,30]
C.[1,15,3,6,5,30,21]
D.[1,3,5,21,30,15,6]
12、由权值分别为1,26,5,9,12,16的叶子结点生成一棵哈夫曼树,它的带权路径长为( A )
A.228
B.69
C.52
D.159
13、有关下述Java代码描述正确的选项是( B )
public class TestClass {
private static void testMethod(){
System.out,println(“ testMethod”);
}
public static void main(String[ ] args){
((TestClass)null).testMethod();
}
}
A.编译通过,运行异常,报NoSuchMethodException
B.编译不通过
C.运行正常,输出testMethod
D.编译通过,运行异常,报NullPointerException
E.编译通过,运行异常,报Exception
F.编泽通过,运行异常,报lllealArgumentException
14、下面两个程序的时间复杂度分别是多少?C
int fun1(int n)
{
if(n <= 1) return n;
return2*fun1(n- 1);
}
int fun2(int n)
{
if(n <= 1) return n;
return fun2(n -1) + fun2(n- 1);
}
A.均是O(2^n)
B.fun10是O(2^n)和fun20是O(n)
C.fun10是O(n)和fun20是O(2^n)
D.均是O(n)
二、填空题
15、下面有4种二叉按索树
A.B-树
B.kd-树
C.红果树
D.伸展树
其中对大规模的数据(不能全部存放于内存中)的存取适合采用( ) ,处理与几何有关的问题适合使用( ),( ) 扩充后可支持对历史版本的访问。
16、将长度为1的线段随机析成三段则这三段能构成=角形的概率是少____
银行有编号为1到W的W个贷款窗口,且每个窗口都有一个贷款申请人。现银行提供N种贷款方式供给贷款申请人,每个申请人可以选择其中一种方式。如果相邻两个窗口的申请人的贷款方式一样,则将可能产生坏账,求有多少种状态可能产生坏账?
字符串查找,是字符串操作中一个很有用的函数。你的任务是实现这个函数:对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。
如果 source = "source" 和 target = "target",返回 -1。
如果 source = "abcdabcdefg" 和 target = "bcd",返回 1。
O(n2)的算法是可以接受的。如果你能用O(n)的算法做出来那更加好。