下面哪个标识符是合法的?
A.9HelloWorld
B._Hello World
C.Hello*World
D.Hello$World
答案:D
以下java程序代码,执行后的结果是()
java.util.HashMap map=new java.util.HashMap();
map.put("name",null);
map.put("name","Jack");
System.out.println(map.size());
A.0
B.null
C.1
D.2
答案:C
Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述错误的是()
A.ArrayList和LinkedList均实现了List接口
B.ArrayList的访问速度比LinkedList快
C.添加和删除元素时,ArrayList的表现更佳
D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
答案:C
以下描述正确的是
A.CallableStatement是PreparedStatement的父接口
B.PreparedStatement是CallableStatement的父接口
C.CallableStatement是Statement的父接口
D.PreparedStatement是Statement的父接口
答案:B
下面有关重载函数的说法中正确的是()
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
答案:C
下列关于容器集合类的说法正确的是?
A.LinkedList继承自List
B.AbstractSet继承自Set
C.HashSet继承自AbstractSet
D.WeakMap继承自HashMap
答案:C
ArrayList list = new ArrayList(20);中的list扩充几次
A.0
B.1
C.2
D.3
答案:A
以下程序的输出结果是?
public class Example {
String str = new String("good");
char[] ch = { 'a', 'b', 'c' };
public static void main(String args[]) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " and ");
System.out.print(ex.ch);
}
public static void change(String str, char ch[])
{
str = "test ok";
ch[0] = 'g';
}
}
A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc
答案:B
下面的方法,当输入为2的时候返回值是多少?
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A.0
B.2
C.4
D.10
答案:D
提供Java存取数据库能力的包是( )
A.java.sql
B.java.awt
C.java.lang
D.java.swing
答案:A
最近公共祖先
将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给
定a, b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可
能是结点本身。
输入: 2 3
输出: 1
public class LCA {
//最近公共祖先
public int getLCA(int a, int b) {
while (a != b){
if (a>b){
a=a/2;
}else {
b=b/2;
}
}
return a;
}
}
求最大连续bit数
求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为
00000011,最大连续2个1
数据范围:数据组数:1<=t<=5, 1<=n<=500000
进阶:时间复杂度:O(logn),空间复杂度:O(1)
方法1:
public class Main6 { // 求最大连续bit数 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNext()){ int n=scanner.nextInt(); int count=0; int modCount=0; while (n !=0){ if ((n & 1) ==1){ count++; modCount=Math.max(modCount,count); }else { count=0; } n>>=1;//左移一位 } System.out.println(modCount); } } }
方法2:
public class Main { public static void main(String[] args) { //求最大连续bit数 Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); Stack<Integer> stack=new Stack<>(); int count1=0; while (n !=0){ while (n % 2==1){ count1++; n=n/2; } if (n % 2==0){ stack.push(count1); count1=0; } n=n/2; } int max=0; while ( !stack.isEmpty()){ int ret=stack.pop(); if (ret > max){ max=ret; } } System.out.println(max); } }