面试基本问题

来源:互联网 发布:java泛型的好处 编辑:程序博客网 时间:2024/05/14 02:29

C++ 和 Java 区别

Java是更加纯粹的面向对象语言,很多设计模式都是从Java起源的。

相比C++,Java多了内存管理,正因为如此,Java在语言性能上就比C++要低一个档次。

面向对象特性

继承,封装,多态

多态可以延伸一下,分为运行时多态和编译时多态。

编译时多态可以简单理解为函数重载和覆盖。

运行时多态可以理解为同样的接口的不同实现,运行的时候才确定要调用的方法的地址。

Java 的强弱软虚引用

强引用,宁愿抛出 OOM 也不进行内存回收。 软引用,内存不足时进行回收。 弱引用,每次 GC 时进行回收。 虚引用,随时会被回收。

对象可到达路径的判断,每条路径中取引用最弱的边,所有路径中去引用最强的边。

软引用和弱引用,需要 new SoftReference(Object) 最好搭配ReferenceQueue来使用,在引用被回收的时候,有元素出队。

二叉搜索树的插入查询复杂度

二叉搜索树的特性是,左子树的所有元素都比根节点小,右子树的所有元素都比根节点大。

根据这个特点,二叉搜索树的增查删的期望都等于树高,也就是 O(logN)。

抽象类与接口的区别

这个不必多说,需要注意的是,Java 8 中,接口可以有默认实现,也就是非抽象方法。

ArrayList 与 LinkedList 区别

不说

Activity 的启动模式

Standard SingleTop SingleTask SingleInstance 这里注意一下 SingleTask 和 SingleInstance 的区别,前者所在的栈可以有多个 Activity,而后者只能有它一个 Activity。

Intent 的理解

对于 Intent ,最重要的莫过于隐式启动了。

  • 可以有多个 intent-filter,只要有一个 intent-filter 匹配目标组件,便可以启动。
    • 可以有多个 action,但是不能没有,只要有其中一个能和目标组件匹配,该 intent-filter 便匹配。
    • 可以没有 category,但是一旦有 category 就必须全部跟目标组件匹配。系统会默认加上 DEFAUTE 这个 category。
    • 如果目标组件定义了 data,则 Intent 也必须要有至少一个对应的 data 。
0 0