Android面试题之Java篇(一)

       最近又到了“金三银四”的求职高峰期,而2019对于求职者注定是不平凡的一年,一开年,滴滴宣布裁员15%员工,涉及到2000人左右,京东宣布2019年将末位淘汰10%的副总裁级别以上的高管......等等,这些都是我们看得到的,还有很多我们看不到的,苦苦支撑的,总之,我们还是要深刻的认识到,2019,我们不一样~~
       无论环境如何,我们沉下心来沉淀自己,好好学习总归不是一件坏事,而这篇文档,就从安卓面试之java基础开始说起吧,算是给自己学习的一个记录,也希望可以帮到更多的人。
       文章里面的面试题大多借鉴于github:Android-Interview,感谢这位作者的分享,也希望有兴趣的小伙伴们可以多多补充。在下面的总结中,我尽量用简便的语言描述一答案,细节上的东西大家可以自行去查一查,真正的理解还是需要很多的知识的摄入为支撑的。
       最后,以下难免会有片面和不是特别准确的地方,希望大家可以多多提意见,我也会第一时间修正,最后,希望大家共同成长,冲破所谓的困难。

1. 什么是面向对象(OOP)?

面向对象编程是使用类、对象、继承、多态、封装和抽象的一种程序设计方法

这点,只要是学过java的童鞋,基本上都是最清楚的,在面试的过程中如果不是实习生,被问到的概率不是很大,具体可以参考:什么是面向对象(OOP)

2. 什么是多态?实现多态的机制是什么?

       多态即:事物在运行过程中存在不同的状态。多态可以分为编译时多态和运行时多态,编译时多态是指方法的重载,运行时多态是指方法的重写。
对于运行时多态需要满足以下三个条件:
       1. 要有继承关系
       2. 子类重写父类方法
       3. 父类对象的引用指向子类对象(SuperClass class = new ChildClass() )

那么多态实现的机制是什么呢?

       其实就是依靠静态分派和动态分派。

       静态分派即在编译期间就能完全确定,在类加载的解析阶段就会把所涉及的符号引用转化为可确定的直接引用,不会延迟到运行期再去完成,典型的例子就是方法重载。

       动态分派是指在运行期间才能确定变量的实际类型,典型的例子就是方法的重写。只有在运行期间,根据对实例化子类的不同,调用不同子类中重写的方法。

参考:多态性实现机制——静态分派与动态分派

3. 接口(Interface)与抽象类(Abstract Class)的区别?

       接口的方法不可实现(最新的JDK有一些变化),接口的类型是public,一个类可以实现多个接口,实现接口的类必须要实现接口中所有的方法,

       抽象类是一个类,可以包含具体方法和抽象方法,抽象方法不做任何的实现,继承抽象类的子类如果是具体类(也就是不含abstract)需要实现父类定义的抽象方法,

4. 重写(Override)与重载(Overload)的区别?

       重写是@Override,是对父类方法的重新实现(返回值、方法名、参数一致,方法内容重写,final和abstract除外)

public class Father{
    public void say(){
         System.out.println("I am a Man!");
    }

    public void eat(String food){
        System.out.println("I can eat!" + food);
    }
}

public class Son extends Father{
    @Override
    public void say() {
        System.out.println("I am a Boy");
    }

    @Override
    public void eat(String food) {
        super.eat(food);
    }
}

       重载是同一个方法名可以通过传递不同的参数类型和参数个数多次使用,例如:

public void setData(String name){
    ...
}
public void setData(String name, int age){
    ...
}
public void setData(String name, int age, boolean isStudent){
    ...
}

5. 父类的静态方法能否被子类重写?

父类的静态方法不会被子类重写,所谓的重写,实际上是为两个静态方法各自分配了不同的空间,并且静态方法上面如果注解@Override编辑器回报错误的提示。

6. 静态属性和静态方法是否可以被继承?是否可以被重写?为什么?

同上,可以被继承,不会被重写

7. 什么是内部类?内部类、静态内部类、局部内部类和匿名内部类的区别及作用?

7.1. 内部类定义

在一个类的内部定义另一个类。

//A为外部类
public class A{
    ...
    //B为A的内部类
    class B{
    ...
    }
}

7.2.内部类特点

  1. 可以访问其作用域的数据,包括私有的数据;
  2. 内部类可以对外隐藏,可以加private、protected修饰,而外部类不可以;
  3. 可以实现多重继承;
  4. 回调函数;

7.3.内部类优点

多重继承性 - 外部类可以继承一个父类,并且继承内部类

7.4.局部内部类

方法中定义的内部类成为局部内部类

内部类只能在定义类的方法中实例化,不可在此方法外对其实例化
局部内部类对象不能使用该内部类所在的方法的非final的局部变量

public class A{
    //A中的方法test()
    void test(){
        //局部内部类
        class B{
        }
    }
}

7.5.静态内部类

  1. 要创建嵌套类的对象,并不需要其外围类的对象。
  2. 不能从嵌套类的对象中访问非静态的外围类对象。
public class A{
    //局部内部类
    static class B{
    }
}
A.B a = new A.B();

8. == 和 equals() 和 hashCode() 的区别?

  1. "=="针对基本数据类型,比较的是数据的值,针对对象,比较的是对象的地址,所以不同地址的对象都是false,而基本数据类型和其装箱类型进行比较时,其装箱类型会自动拆箱,使用值的形式进行比较,所以有可能是true,例如:int a = 12,Integer aa = 12;则aa == a是True;

  2. "equals()"是Object类实现的方法,最底层也是使用的“==”的方式进行比较,但是子类可以复写该方法,部分子类的复写就实现了将对象的值进行比较,例如Integer、String(复写后是比较字符串的值)

  3. "hashCode()"是将对象在内存中的地址转换成一个int值,所以没有重写hashCode()方法,任何对象的HashCode()都是不相等的

9. Integer 和 int 之间的区别?

  1. int是基本数据类型,而Integer是一个类,可以进行实例化出来一个对象,并由自己的基本方法和属性
  2. Integer是int的装箱形式,

10. String 转换成 Integer 的方式及原理?

  1. String转换成Integer的方式:Integer.parseInt(string);
  2. 判断字符的长度是否符合标准,然后根据ASII码判断第一个字符是否是加号或者减号,然后循环遍历字符串,使用Character.digit(s, radix)计算数值,然后根据位置乘以基数相加得到最终的int。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335