android 面试(基础篇 2)

来源:互联网 发布:红警共和国之辉mac 编辑:程序博客网 时间:2024/05/16 23:58

9.进程和线程的区别

   一个程序至少有一个进程,一个进程至少有一个线程。

  线程的划分尺度小于进程,使得多线程程序的并发性高。

  另外,进程在执行过程中拥有独立的内存单元,线程之间共享内存,从而极大

  地提高了程序的运行效率。

  线程在执行过程中和进程是有区别的。每个独立的进程有一个程序运行的入口,

  顺序执行序列,和程序的出口。但线程不能独立执行,必须依赖应用程序中。

  由应用程序提供多个线程的执行控制。

  从逻辑角度来看多线程的意义在于一个应用程序中,有多个执行部分可以同时

  执行。但操作系统并没有将多线程看做多个独立的应用,来实现进程的调度和

  管理以及资源的分配。这就是进程和线程的重要区别。

  进程局域一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统

  进行资源分配和调度的独立单元。

  线程是进程的一个实体,是cpu调度和分配资源的基本单元,他比进程更小的能

  独立运行的基本单位。线程自己基本上不拥有系统资源,只用于一点在运行中

  必不可少的资源。但是他可与同属一个进程的其他线程共享进程所拥有的全部资源。


  一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

  进程线程的主要差别在于他们是不同的操作系统资源管理方式。进程有独立的地址

  空间,一个进程崩溃后不影响其他进程的运行。而线程只是进程中的不同执行路径。

  线程有自己的堆栈和局部变量,单线程没有独立的地址空间,一个线程死掉就等于

  整个进程死掉。所以多进程比多线程程序健壮。但是切换进程时,耗费资源较大,

  效率较差。但对于一些同时进行并且又要共享某些变量的并发操作,只能用线程,

  不能用进程。


10.Java中==和equals的区别,equals和hashCode的区别


  ==是运算符,拥有比较两个变量是否相等

  equals是object类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,即使用==。

  hashCode也是Object累的一个方法。返回一个离散的int整数。在集合操作类中使用。为了提高查询速度。


11.常见的排序算法时间复杂度



12.HashMap的实现原理

  1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
  2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。


0 0
原创粉丝点击