首页 > 其他分享 >Android 常见面试题(一)

Android 常见面试题(一)

时间:2024-07-22 21:10:01浏览次数:17  
标签:面试题 内部 重写 常见 equals 线程 进程 Android 方法

Android 常见面试题(一)

1、java 中 == 和 equals 和 hashCode 的区别

基本数据类型的 == 比较的值相等. 类的== 比较的内存的地址,即是否是同一个对象。
在不重写 equals方法的情况下,equals同比较内存地址,原实现也为 == ,如 String 等重写了 equals 方法,会判断字符串里的值是否相等。
hashCode 也是 Object 类的一个方法。返回一个离散的 int 型整数,一般在集合类操作中使用。为了提高查询速度。
如果两个对象 equals,Java 运行时环境会认为他们的 hashcode 一定相等。
如果两个对象不 equals,他们的 hashcode 有可能相等。
如果两个对象 hashcode 相等,他们不一定 equals。
如果两个对象 hashcode 不相等,他们一定不 equals。

2、int 与 integer 的区别

int 基本类型
integer 对象 int 的封装类

3、String、StringBuffer、StringBuilder 区别

String: 字符串常量 不适用于经常要改变值得情况,每次改变相当于生成一个新的对象
StringBuffer: 字符串变量 (线程安全)
StringBuilder: 字符串变量(线程不安全) 确保单线程下可用,效率略高于StringBuffer

4、什么是内部类?内部类的作用

内部类可直接访问外部类的属性
Java 中内部类主要分为成员内部类、局部内部类(嵌套在方法和作用域内)、匿名内部类(没构造方法)、静态内部类(static 修饰的类,不能使用任何外围类的非 static 成员变量和方法, 不依赖外围类)

5、进程和线程的区别

进程是 cpu 资源分配的最小单位,线程是 cpu 调度的最小单位。
进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。
一个进程内可拥有多个线程,进程可开启进程,也可开启线程。
一个线程只能属于一个进程,线程可直接使用同进程的资源,线程依赖于进程而存在。

6、final,finally,finalize 的区别

final: 修饰类、成员变量和成员方法,类不可被继承,成员变量不可变,成员方法不可重写
finally: 与 try...catch...共同使用,确保无论是否出现异常都能被调用到
finalize: 类的方法,垃圾回收之前会调用此方法,子类可以重写 finalize()方法实现对资源的回收

7、Serializable 和 Parcelable 的区别

Serializable Java 序列化接口 在硬盘上读写 读写过程中有大量临时变量的生成,内部执行大量的 i/o 操作,效率很低。
Parcelable Android 序列化接口 效率高 使用麻烦 在内存中读写(AS 有相关插件 一键生成所需方法) ,对象不能保存到磁盘中

8、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?

可继承 不可重写
如果子类里面定义了静态方法和属性,那么这时候父类的静态方法或属性称之为"隐藏"。如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成。

9、成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

Java 中内部类主要分为成员内部类、局部内部类(嵌套在方法和作用域内)、匿名内部类(没构造方法)、静态内部类(static 修饰的类,不能使用任何外围类的非 static 成员变量和方法, 不依赖外围类)
使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。
因为 Java 不支持多继承,支持实现多个接口。但有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类提供的、可以继承多个具体的或者抽象的类的能力来解决这些程序设计问题。可以这样说,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。

10、string 转换成 integer 的方式及原理

String to integer: Intrger.parseInt(string);
Integer to string: Integer.toString();

标签:面试题,内部,重写,常见,equals,线程,进程,Android,方法
From: https://www.cnblogs.com/AndroidXiaojiang/p/18316901

相关文章

  • Android4.4.4双声卡同时出声
    在调试RK3288Android4.4.4,该方案默认配置上SPDIF时HDMI就没声音,但客户需求是同时要有声音的,于是驱动配置上后,呈现两个声卡状态,此时需要通过修改HAL层来处理(RK3288Android4.4.4对应的HAL层源码为hardware/rk29/audio目录),修改如下:1.修改AudioHardware.cpp文件,在AudioHardware:......
  • django相关面试题
    1.auto_add与auto_add_now作用于时间类型的字段,auto_add_now只在创建数据的时候生效,auto_now在修改数据的时候生效create_time=models.DateTimeField(auto_now_add=True)update_time=models.DateTimeField(auto_now=True)注意这两个属性只有在使用django的orm的create......
  • jvm面试题
    目录1.jvm如何加载一个类?JVM加载类的过程双亲委派模型自定义类加载器2.jvm如何初始化一个类JVM类初始化过程3.剖析类始化Java类初始化的详细过程类初始化的触发条件父类与子类的初始化顺序注意事项1.jvm如何加载一个类?JVM加载类的过程Java虚拟机(JVM)加载类的过......
  • 常见的排序算法——堆排序(五)
    本文记述了堆排序改用前序表示法基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想堆排序算法按照层次操作堆中的元素,即物理位置k的节点与位置2k或2k+1的节点交换。然而用前序表示的堆,其父子节点的位置关系不能简单地计算出来。因此,当算法......
  • 前端面试题
    不足之处评论我进行修改,或者有更好的面试题评论告诉我,我添加上1、什么是闭包必须有一个内嵌函数。内嵌函数必须引用外部函数中的变量。外部函数的返回值必须是内嵌函数。1.闭包的概念闭包是这样的一种机制:函数嵌套函数,内部函数可以引用外部函数的参数和变量。参数和变量不......
  • iOS面试题-load 和 initlize的区别
    +load和+initialize是两个与类的加载和初始化相关的特殊方法。它们在类的生命周期中的作用和调用时机有明显的区别。+load方法调用时机:+load在类初始加载进内存时调用,这通常发生在程序启动的时候,所有类和分类(Category)的+load方法在应用程序的生命周期中只会被调用一次。调用......
  • Android或iOS 与 REST/SOAP测试 工具推荐
    移动测试工具- 有助于自动测试Android或iOS应用程序1)AppiumAppium是用于移动应用程序自动化的开源测试工具之一。它允许用户测试各种原生、移动、web和混合应用程序。它还支持模拟器和模拟器上的自动测试。功能特点:这是一个简单的应用程序,需要很少的内存用于测试过程......
  • Day07 MySQL 面试题 (三)
    MySQL面试题22、MySQL里记录货币用什么字段类型好NUMERIC和DECIMAL类型被MySQL实现为同样的类型,这在SQL92标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定。例......
  • Android笔试面试题AI答之控件Views(3)
    答案仅供参考,来自文心一言目录1.如何在ListView间添加分割线?方法1:在XML布局文件中设置方法2:在Java代码中设置注意事项2.如何实现ListView的逐行显示?1.使用`Handler`和`postDelayed()`方法2.监听滚动事件3.自定义Adapter4.使用`RecyclerView`代替`ListVie......
  • Android 14 适配之— BluetoothAdapter、JobScheduler、 Tiles
    1. BluetoothAdapter改动:在BluetoothAdapter中必须加入 BLUETOOTH_CONNECT权限 Android14(API级别34)或更高版本为目标的App,在调用函数 BluetoothAdapter getProfileConnectionState() 时,需要 BLUETOOTH_CONNECT 权限,<uses-permissionandroid:name="android......