前言
抓住金三银四的尾巴,继上一篇2024最全Android面试题及答案整理1【持续更新】之后,今天给大家分享2024最全Android面试题及答案整理2【持续更新】,有需要的朋友可以收藏了。
Java核心基础面试题汇总
2.1 Java中提供了抽象类还有接口,开发中如何去选择呢?
- 这道题想考察什么?
Java是面向对象编程的,抽象是它的一大特征,而体现这个特征的就是抽象类与接口。抽象类与接口某
些情况下都能够互相替代,但是如果真的都能够互相替代,那Java为何会设计出抽象与接口的概念?这
就需要面试者能够掌握两者的区别。 - 考察的知识点
OOP(面向对象)编程思想,抽象与接口的区别与应用场景; - 考生应该如何回答
抽象类的设计目的,是代码复用;接口的设计目的,是对类的行为进行约束。
当需要表示is-a的关系,并且需要代码复用时用抽象类
当需要表示has-a的关系,可以使用接口
2.2 重载和重写是什么意思,区别是什么? (京东)
- 这道题考察什么?
Java基础 - 考察的知识点
面向对象多态的基础概念 - 考生应该如何回答
重写(Override)
重写就是重新写的意思,当父类中的方法对于子类来说不适用或者需要扩展增强时,子类可以对从父类
中继承来的方法进行重写。
比如Activity是Android开发中四大组件之一。在Activity中存在各种声明周期方法:onCreate、onStart
…等等。而我们应用中需要使用Activity来展示UI,那么我们会需要编写自己的类继承自Activity。
2.3 静态内部类是什么?和非静态内部类的区别是什么?
- 这道题想考察什么?
掌握static的作用与注意事项 - 考察的知识点
Java中关键字static - 考生应该如何回答
在定义内部类时,如果内部类被static声明,则该内部类为静态内部类。
当内部类被static声明,那么在内部类中就无法直接使用外部类的属性。比如编写普通内部类:
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) {
return inflate(resource, root, root != null);
}
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean
attachToRoot) {
//......
}
public class OuterClass{
static class InnerClass{
}
}
public class OuterClass{
int i;
public class InnerClass{
public InnerClass(){
i = 10;
}
}
}
此时对OuterClass.java 进行编译,会生成:OuterClass.class 与 OuterClass$InnerClass.class 两个文
件。对后者反编译我们将看到:
public class OuterClass$InnerClass {
public OuterClass$InnerClass(OuterClass var1) {
this.this$0 = var1;
var1.i = 10;
}
}
2.4 Java中在传参数时是将值进行传递,还是传递引用?
- 这道题想考察什么?
是否了解什么是值传递和引用传递与真实场景使用,是否熟悉什么是值传递和引用传递在工作中的表现
是什么? - 考察的知识点
什么是值传递和引用传递的概念,两者对开发中编写的代码的影响 - 考生应该如何回答
值传递:在方法调用时,传递的参数是这个参数指向值的拷贝;
引用传递:在方法调用时,传递引用的地址
2.5 使用equals和==进行比较的区别
- 这道题想考察什么?
在开发中当需要对引用类型和基本数据类型比较时应该怎么做,为什么有区别。 - 考察的知识点
equals 的实现以及栈和堆的内存管理
2.6 String s = new String(“xxx”);创建了几个String对象?
- 特殊情况
在正常情况下,finally中的代码一定会得到执行,但是如果我们将执行try-catch-finally 代码块的线程设
置为守护线程,或者在fianlly之前调用 System.exit 结束当前虚拟机,那么finally则不会得到执行
2.7 finally中的代码一定会执行吗?try里有return,finally还执行么
- 这道题想考察什么?
对Java语言的深层次理解,避免在开发时写出"问题"代码 - 考察的知识点
JVM执行流程 - 考生应该如何回答
在Java官方文档中对finally的描述如下:
大致意思是:finally代码块中的内容一定会得到执行。
JVM规范里面同样也有明确说明
意思是如果在try中存在return的情况下,会把try中return的值存到栈帧的局部变量表中,然后去执行
finally语句块,最后再从局部变量表中取回return的值返回。另外,当try和finally里都有return时,会
忽略try的return,而使用finally的return。
2.8 Java异常机制中,异常Exception与错误Error区别
- 这道题想考察什么?
在开发时需要时候需要自定义异常时,应该选择定义Excption还是Error?编写的代码触发Excption或者
Error分别代表什么? - 考察的知识点
Java异常机制 - 考生应该如何回答
在Java中存在一个 Throwable 可抛出类, Throwable 有两个重要的子类,一个是Error,另一个则是
Exception。
2.9 序列Parcelable,Serializable的区别?(阿里)
- 这道题想考察什么?
掌握序列化接口实现原理,针对不同场景在工作中合理运用 - 考察的知识点
Parcelable原理
Serializable原理 - 考生应该如何回答
序列化 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写
入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
Serializable是Java提供的序列化机制,而 Parcelable则是Android提供的适合于内存中进行传输的序列
化方式。
2.10 为什么Intent传递对象为什么需要序列化?(阿里)
- 这道题想考察什么?
掌握序列化的意义与Android数据传输的原理 - 考察的知识点
序列化
Binder - 考生应该如何回答
在Android中使用Intent传输数据除了基本数据类型之外,对于其他类型对象需要此类型实现了
Serializable或者Parcelable序列化接口才能进行传输。
写在最后
每一章节都是站在企业考察思维出发,作为招聘者角度回答。从考察问题延展到考察知识点,再到如何优雅回答一面俱全,可以说是求职面试的必备宝典,每一部分都有上百页内容,接下来具体展示,完整版可直接下方扫码领取。