Android中高级进阶开发面试题冲刺合集(一)

以下主要针对往期收录的面试题进行一个分类归纳整理,方便大家统一回顾和参考。今天是第一集~

强调一下:【因篇幅问题:文中只放部分内容,全部文档需要的可找作者获取。
Java 基础部分

1.抽象类与接口的区别?

参考答案:大体区别如下:

  • 抽象类可以提供成员方法的实现细节,而接口中只能存在 public 抽象方法;
  • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的;
  • 接口中不能含有构造器、静态代码块以及静态方法,而抽象类可以有构造器、静态代码块和静态方法;
  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口;
  • 抽象类访问速度比接口速度要快,因为接口需要时间去寻找在类中具体实现的方法;
  • 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。如果你往接口中添加方法,那么你必须改变实现该接口的类。
  • 接口更多的为了约束类的行为,可用于解耦,而抽象类更加侧重于代码复用。

2.分别讲讲 final、static 和 synchronized 可以修饰什么,以及修饰后的作用?

参考答案:final :可以修饰 类,方法,字段。

修饰类:该类不会被继承。
​
修饰方法:该方法不能被重写。
​
修饰字段:被修饰的 字段必须 赋初始值,并且不能被改变。如果字段是引用类型的。那么他将不能引用别的对象,但是当前的对象内的属性值是可以改变的。

static :可以修饰内部类,方法,字段。

修饰内部类:被static修饰 的内部类可以直接作为一个 普通的类来使用,而不需先实例一个外部列。
​
修饰方法:调用该方法的时候只需要类名 . 方法就可以直接调用,不需要创建对象。
​
修饰字段:通过类名 . 的方式可以直接 获取 或者 赋值。

synchronized 可以修饰 方法,代码块

修饰方法:被 synchronized 修饰方法方法在同一时刻只能被一个线程访问。其他线程将会被阻塞,直到当前线程释放锁。
​
修饰代码块:其实和修饰方法差不多,只不过 修饰代码块可以 使用 类锁。方法如果要使用类锁,只能设置为静态的方法。

3.请简述一下 String、StringBuffer 和 StringBuilder 三者的区别?

参考答案:

String 为字符串常量,一旦创建不可以被修改,是线程安全的;String 类使用 final 修饰符,不可以被继承;String 的长度是不变的。适用于少量操作的字符串。 StringBuffer 为字符串变量,长度是可变的,线程安全。适用于多线程下在字符缓冲区进行大量字符串操作 StringBuilder 为字符串变量,长度是可变的,线程不安全。适用于单线程下在字符缓冲区进行大量字符串操作。 字符串操作在执行速度:StringBuilder > StringBuffer > String

  1. “equals” 与 “==”、“hashCode” 的区别和使用场景?

参考答案:

  • : == 用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据(注意是基本类型)或两个 引用变量是否相等,只能用操作符。 假如一个变量指向的数据是对象类型的,例如Objet obj 1= new Object() 那么,这时候涉及了两块内存;变量 obj1 是一个内存,new Object() 是另一个内存(堆内存),此时,变量 obj1 所对应的内存中存储的数值就是对象占用的那块内存(堆内存)的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值