首页 > 程序人生 > 程序员面试技艺 > 百度社会招聘Android方向笔试题及答案解析
2014
11-11

百度社会招聘Android方向笔试题及答案解析

1.java 基础题,下面的代码输出结果是什么?

public static void main(String[] args) {
    String str = new String("abc");
    char[] ch = {'a','b','c'};
    change(str,ch);

    System.out.print(str+" ");
    System.out.print(ch);}
    public static void change(String str,char[] ch){
        str = "gbc";
        ch[0] = 'g';
    }
}

答案:这道题考察的东西很多,看似简单,实则考察了java的基础知识,对内存的理解,对面向对象的理解,对==,equals,hashcode等的理解。总体来说不难,但是这个原理理解却不是那么容易的。结果是:abc,gbc

2.HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法

参考这篇文章:http://josh-persistence.iteye.com/blog/1975956

3.Activity的启动模式有哪几种

参考这篇文章:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html

4.介绍Handler机制

参考这篇文章:http://blog.csdn.net/stonecao/article/details/6417364

5.线程考核,解析sleep、wait、join、yield方法,以及notify和notifyAll是如何控制线程同步的

参考这篇文章:http://blog.csdn.net/xh16319/article/details/8032877

6.android 存储方式以及各自用法

参考这篇文章:http://blog.csdn.net/zhangtengyuan23/article/details/10701597

7.ListView中BaseAdapter的使用和优化;在ListView中的item放置一个按钮,如何使用按钮对不同的item响应不同的事件

参考这篇文章:http://www.cnblogs.com/loulijun/archive/2011/12/28/2305016.html

8.编程题:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复

第一种:用Math.random,使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机

public static void main(String[] args) {

    StringBuffer resRand = new StringBuffer("");
    int maxnum = 0;

    while (true) {
        String num = (int) (Math.random() * 100) + "";
        if (maxnum < 10) {
            if (resRand.toString().contains(num)) {
                continue;
            }
            resRand.append(num + ",");
            maxnum++;
        } else {
            break;
        }
    }
    System.out.println(resRand.substring(0, resRand.length() - 1));
}

第二种:用Java.util.random,在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long

public static void main(String[] args) {

    Random ran = new Random();
    Set<Integer> set = new HashSet<Integer>();

    while (set.size() == 10 ? false : true) {
        int num = ran.nextInt(100) + 1;
        set.add(num);
    }

    Iterator<Integer> it = set.iterator();
    int count = 0;
    while (it.hasNext()) {
        System.out.println("第 " + ++count + " 个随机数 = " + it.next());
    }
}

编程技巧