首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

宜搜笔考题

2012-12-17 
宜搜笔试题1、实现将数据读到指定文件内。题目给出一部分代码,好像说是要补充什么的。public void method(Str

宜搜笔试题
1、实现将数据读到指定文件内。
题目给出一部分代码,好像说是要补充什么的。

public void method(String filename;byte[] contentbuf){
FileOutputStream out=new FileOutputStream(filename);
out.write(contentbuf);
}

2、找出最大子字符串
3、122345,第三位不是4,3和5不互联。
4、实现字符串反转,使时间和空间复杂度最小。

5、12个球,怎么在3次内通过天平找到不同重量的那个?13个呢?

6、JVM heap内部结构及各部分功能。

7、数据库连接池的工作原理。

8、String、StringBuffer、StringBuilder的区别。
9、
public class Test{
private static int x=5;
static{
x+=10;
}
public void main(String[] args){
System.out.println("x="+x);
}
static{
x/=3;
}
}


[最优解释]
字符串相等那问题看字符串多长,如果不长的话就扫描第一个串时每个字母的偏移量(比如A=1,B=2……)加到一个变量中,第二个字符串的偏移量从变量中减去,扫描完两个字符串以后如果等于0,说明相等
如果很长的话就创建一个有26个字母的数组,同上面的方法,结果看看有大于0或者小于0说明不等,可以按规则增加数组的长度,比如有字母又有数字
[其他解释]
引用:
我是这样理解的,首先x被初始化为5,然后执行x+=10,在执行x/=3.不知道是否理解正确?引用:引用:第九题是15?


显然是5,x是类成员变量。


对,就是这个顺序执行的。
[其他解释]

第9题:静态代码块在类被加载时最先加载且被加载一次,虽然方法写在前,但是静态代码块的执先顺序优先,故最后得出的结果是5;
[其他解释]
第二题补充一下,比如:str1=“abssklgh”,str2=“absklgifn”,最大子字符串为“sklg”。
[其他解释]
第三题是要打印出所有符合条件的排列组合。
[其他解释]
还有一个题,比较两个字符串是否相等(字符串相等,满足的条件:字母不区分大小写,不区分顺序。比如abc=bca,A=a),编写算法实现。
[其他解释]
很好,谢谢分享
[其他解释]
1.   out.close();  ?

[其他解释]
...
引用:
很好,谢谢分享

[其他解释]
9题是要坑爹么...
既然考的是main方法不是static
[其他解释]
我就会第一题:out.close();
[其他解释]
引用:
第二题补充一下,比如:str1=“abssklgh”,str2=“absklgifn”,最大子字符串为“sklg”。


第二题能说清楚点吗?不是很理解要干么
[其他解释]
我的失误,题目中有static,就是要判断最后哦打印的内容
引用:
9题是要坑爹么...
既然考的是main方法不是static

[其他解释]
就是求两个字符串的最大公共子串。这个网上很多的。
引用:
引用:第二题补充一下,比如:str1=“abssklgh”,str2=“absklgifn”,最大子字符串为“sklg”。

第二题能说清楚点吗?不是很理解要干么

[其他解释]
第九题是15?
[其他解释]

我运行了一下是5
引用:
第九题是15?

[其他解释]
引用:
第九题是15?




显然是5,x是类成员变量。
[其他解释]
我是这样理解的,首先x被初始化为5,然后执行x+=10,在执行x/=3.不知道是否理解正确?
引用:
引用:第九题是15?


显然是5,x是类成员变量。

[其他解释]
不错,好好看看
[其他解释]
该回复于2012-11-08 14:33:53被管理员删除
[其他解释]
第二题最长子串问题使用后缀数组来排序
[其他解释]
实现字符串反转,使时间和空间复杂度最小。
public class StringRevese {

/**
 * @param args
 */
public static String reverse(String s){
char[] arr=s.toCharArray();
int length=arr.length;
for(int i=0;i<length/2;i++){
arr[i]=(char) (arr[i]+arr[length-i-1]);
arr[length-i-1]=(char) (arr[i]-arr[length-i-1]);
arr[i]=(char) (arr[i]-arr[length-i-1]);
}
s=String.valueOf(arr);
return s;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="abcdefghigk";
str=reverse(str);
System.out.println(str);
}

}

这种写法知识运用了在交换两个数组元素位置时,没有引入第三方变量,节省了空间,不知道这样性能算怎样?
[其他解释]
求两个字符串最大公共子串第一种方法:
public class StringTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
String s2=sc.nextLine();
String subString = getSubString(s1, s2);
System.out.println("两个串中的最大子串是:"+subString);
}
private static String getSubString(String s1, String s2) {
String maxString, minString;
maxString = s1.length() > s2.length() ? s1 : s2;
minString = (maxString.equals(s1)) ? s2 : s1;
for (int x = 0; x < minString.length(); x++) {
for (int start = 0, end = minString.length() - x; end <= minString
.length(); start++, end++) {
String temp = minString.substring(start, end);
if (maxString.contains(temp)) {
return temp;
}
}
}
return null;
}
}

这种方法性能可能不是特别好
[其他解释]
12个球那题。觉得楼上的有问题啊,因为不知道不同的球到底是中还是轻啊,这个的确难,人人上有答案我就不贴了,有兴趣的可疑百度
[其他解释]
12个球题:

第一步:6个一组,共两组,称一次,保留重的一组。
第二部:3个一组,重复步骤一的逻辑。
第三步:任意取两个称量。,如果天平不平,重的就是。如果天平平衡,那么没称的那个就是重的。

13个:

利用12个球的称量方式。
在12个球的称量第一步中,如果天平平衡,那么结果直接得出。如果天平不平衡,那么继续12个球逻辑。

[其他解释]
122345第三位不为4,,3不相连的一种实现方法:
import java.util.Set;
import java.util.TreeSet;

public class MyTest {

    public static Set<String> set = new TreeSet<String>();

    public static void perm(char[] n, int beg, int end) {


        if (beg == end) {
            addNumber(String.valueOf(n));
        } else {
            for (int i = beg; i <= end; ++i) {
                swap(n, beg, i);
                perm(n, beg + 1, end);
                swap(n, beg, i);
            }
        }
    }

    public static void swap(char[] n, int x, int y) {
        if (x == y 
[其他解释]
 str.contains("35") 
[其他解释]
 n[x] == n[y]) {
            return;
        }
        char temp = n[x];
        n[x] = n[y];
        n[y] = temp;
    }

    public static void addNumber(String str) {
        if (str.charAt(2) == '4' 
[其他解释]
 str.contains("53")) {
            return;
        }
        set.add(str);
    }

    public static void main(String args[]) {
        char[] number = new char[] { '1', '2', '2', '3', '4', '5' };
        perm(number, 0, number.length - 1);
        System.out.println(set.size());
        int cols = 10;
        for (String s : set) {
            System.out.print(s + " ");
            if (cols-- == 1) {
                System.out.println();
                cols = 10;
            }
        }
    }

热点排行