Android面试一天一题(7 Day)

自2010年起,Google和甲骨文一直就Android系统是否侵犯甲骨文的版权和专利争论不休。其实双方的争论点倒不是Google是否在 Android 中使用了Java APIs,Google对此也没有否定,因为这样能让数百万的开发者为自己开发应用程式。Google的论点是,APIs不能有版权,它本来就是用来让应用程式间相互交流,而很多公司也会让开发者自由使用。甲骨文对此的态度当然是我不听、我不听、我不听。

最终联邦陪审团裁定Android操作系统并未侵犯甲骨文的版本,37个Java API是正常使用。Android程序员开始喷甲骨文,并庆幸我们的饭碗保住了。

回到面试上,今天聊一下和Java相关的面试题。没错总有那么一些公司在招Android程序员时,比较侧重考察Java基础和能力的。Java的值传递和引用传递问题,相信很多人都被问题过,当然很多时候面试官都不会这么直白的问,他们会给你设计一个方法让你给出执行这个方法后的输出结果。

面试题: Java的值传递和引用传递问题

看过一些Java教材的话,对这句话应该不陌生:

“在Java里面参数传递都是按值传递”
这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

简单的说,基本类型是按值传递的,方法的实参是一个原值的复本。类对象是按对象的引用地址(内存地址)传递地址的值,那么在方法内对这个对象进行修改是会直接反应在原对象上的(或者说这两个引用指向同一内存地址)。不过要注意String这个类型,如下代码:

public static void main(String[] args) {
    String x = new String("goeasyway");
    change(x);
    System.out.println(x);
}
 
public static void change(String x) {
    x = "even";
}

可以自己思考一下会输出什么结果,为什么。String的对象是不可修改的,如果真正要达到改变字符串的效果,我们需要使用StringBuilder来替代String。

结论

很遗憾,我在实际中发现很多人都不会去重视基础问题,保括一些资深的开发也不太清楚Java还有这两种区分。在之前我呆过的一家公司,有一位女程序员直接在代码里使用一个未经声明的方法,并给这个方法传参数,然后来问我为什么编译不过呢。但这却不妨碍她仍然可以为客户解决问题,可以获得组内的最佳员工评选。所以有很多人并不重视基础的问题,总认为不知道也无防,用的时候有问题自然会报出来,到时候再解决就好了,你知道的也没比我多能耐。我只能说,知道的话确实不比别人多能耐,只是多了一份从容。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 153,672评论 23 675
  • 如何说孩子才会听,怎么听孩子才肯说 第一课:帮助孩子面对他们的感受 第二课:鼓励孩子与我们的合作 第三课:代替惩罚...
    黄海龙心理咨询师阅读 167评论 0 1
  • 端午的月神面庞清瘦 端午的艾草悠悠清香 朵朵兰花投入碧玉池中 浸泡了九天九夜 才穿上五彩华裳 裙袂飞扬—— 乘着初...
    玉露情歌阅读 168评论 0 3
  • 高原上的盐湖(组章) 察尔汗盐湖 一粒盐和另一粒盐,在柴达木的聚宝盆里相爱,分娩。 伟大的爱情就是一块巨大的磁场,...
    重庆风铃阅读 48评论 1 2