美文网首页
Android面试中Java常考的

Android面试中Java常考的

作者: 今天也要努力呀y | 来源:发表于2020-03-21 11:33 被阅读0次

常见集合类

Collection接口和Map接口是所有集合框架的父接口
Collection接口包括List和Set
Map接口具体有HashMap,TreeMap,HashTable,ConcurrentHashMap
Set接口实现类有:HashSet,TreeSet,LinkedHashSet
List接口实现类:Arraylist,Linkedlist, Stack,Vector

  • 单列集合:Collection ,分为List,Set
    List分为Arraylist和Linkedlist
    • .List和Set的区别
      List集合元素有序且允许重复
      Set集合元素无序且不允许重复
    • Arraylist和Linkedlist的区别:
      Arraylist底层数据结构是数组有索引,查询速度快,增删慢
      Linkedlist底层数据结构是双向链表没有索引,查询速度慢,增删快
  • 双列集合:Map,分为HashMap,HashTable,ConcurrentHashMap
    • HashMap的数据结构:
      jdk1.7由数组+链表组成,每一个entry(链表)对应着一个table(数组)的索引页
      jdk1.8由数组+链表+二叉树

HashMap和HashTable的区别

HashMap没有考虑同步,是线程不安全的
HashTable使用了synchronized关键字,是线程安全的
HashMap允许K/V都为null,后者不允许
HashMap继承自AbstractMap类,后者继承自Directory类

HashMap的工作原理

底层存储着Entry对象,将K/Y传给put()方法时,调用hashCode计算hash值,从而得到对应在Table中的位置,如果存储key的hash值所对应的位置已经存在元素.HashMap通过链表将产生的碰撞冲突的元素组织起来.当冲突的元素超过8,使用红黑树来替换链表,从而提高速度.

Object类有哪些方法

static修饰的方法

用static修饰的方法,会单独存放在一块内存中,和函数,变量不在同一块内存中,在程序运行时已经加载好,程序结束时会释放,直接用类名方法调用,不需要new一个对象去访问这个方法.

public/protected/private 的区别

作用域.png

final修饰的作用

1.修饰变量:表示变量无法修改
2.修饰方式:继承可以直接拿来用,不能重写
3.修饰类:无法继承

抽象类和接口的区别和相同和各自应用场景

不同:
1.抽象类可以提供成员方法的实现细节,接口只能存在public abstract方法
2.抽象类的成员变量可以是各种类型,接口成员变量必须用public static final
3.抽象类中可以有静态代码块和静态方法,接口中不能有
4.一个类只能继承一个抽象类,却可以实现多个接口
相同:
1.不能被实例化
2.抽象方法都必须被子类实现
场景:
接口是对动作的抽象,抽象类是对事物本质的抽象

接口中的方法为什么不能用static,为什么要用public abstract修饰

public可以让所有用户访问到,abstract可以子类实现时必须重写(除非子类是抽象类)
不能用static是因为static和abstract不能同时有,因为static方法可以通过类名.方法名调用,而抽象方法又没有方法体,所以矛盾

ArrayList和Vector相同和不同

1.ArrayList和Vector都是基于Object[];
1.Vector是多线程安全的,Vector方法中有很多Synchronized修饰,导致了Vector效率比ArrayList低
2.Arraylist线程不安全,效率高

Object类

Object类.png

对这些方法功能进行简单的描述:
(一)Object():默认构造方法
(二)clone():创建并返回此对象的一个副本
(三)equals():指示某个其他对象是否与此对象相等
(四)finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法
(五)getClass():返回一个对象的运行时类
(六)hashCode():返回该对象的哈希值
(七)notify():唤醒此对象监视器上等待的单个线程
(八)notifyAll():唤醒此对象监视器上等待的所有线程
(九)toString():返回该对象的字符串表示
(十)wait():导致当前的线程等待,直到其它线程调用此对象的notify()或notifyAll()
(十一)wait(long timeout):导致当前的线程等待调用此对象的notify()或notifyAll()
(十二)wait(long timeout, int nanos):导致当前的线程等待,直到其他线程调用此对象的notify()或notifyAll(),或其他某个线程中断当前线程,或者已超过某个实际时间量
(十三)registerNatives():对本地方法进行注册

排序

https://www.jianshu.com/p/0e5cf7542c62

快速排序

public class QuickSort {
    public static void main(String[] args) {
        int[] a = {5, 8, 4, 2, 6, 1, -2, 8};
        quicksort(a, 0, a.length - 1);
        for (int i : a) {
            System.out.print(i + " ");
        }
    }

    private static void quicksort(int[] a, int low, int high) {
        if (low < high) {
            int index = getIndex(a, low, high);
            quicksort(a, low, index - 1);
            quicksort(a, index + 1, high);
        }
    }

    private static int getIndex(int[] a, int low, int high) {
        int tmp = a[low];
        while (low < high) {
            while (low < high && a[high] >= tmp)
                high--;
            a[low] = a[high];

            while (low < high && a[low] <= tmp)
                low++;
            a[high] = a[low];
        }
        a[low] = tmp;
        return low;
    }
}

堆内存和栈内存

1.栈内存:在方法中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配.超过变量的作用域后,会自动释放该变量分配的内存空间.
2.堆内存:存放由new创建的对象和数组,由java自动回收器来管理.

相关文章

  • Android面试中Java常考的

    常见集合类 Collection接口和Map接口是所有集合框架的父接口Collection接口包括List和Set...

  • Spring 设计模式

    设计模式 Java面试的过程中, 设计模式是常考的一项。我曾经多次面试Java程序员时也常问到,例如谈谈自己对sp...

  • Android面试常考

    1. 请描述一下Activity 生命周期。 答: 如下图所示。共有七个周期函数,按顺序分别是: onCreate...

  • 好好说说Java中的常量池之Class常量池

    前言 在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般...

  • String(三)

    Class常量池 在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面...

  • Android面试题

    Android面试必备: (一)、Java面试题 (二)、Android面试题 (三)、Android高级面试题

  • Java常考面试120题

    “ 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? JDK和JRE的区别是什么? ”stat...

  • Java常考面试题

    Java 面试题 整理自牛客网 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟...

  • Android知识点(自己用)

    整理的知识点有 Java、Android SDK、Android 源码、常见面试算法题、其他的一些计算机基础以及常...

  • 终于有人把安卓程序员必学知识点全整理出来了,有如醍醐灌顶!

    Java相关 无论什么级别的Android从业者,Java作为Android开发基础语言。不管是工作还是面试中,J...

网友评论

      本文标题:Android面试中Java常考的

      本文链接:https://www.haomeiwen.com/subject/qfmkyhtx.html