Android 面试中,常见的 java 问题(1)

  • 如何停止一个线程请求?详情

    • Thread.stop()可以停止,但是不安全的,已废弃的方法,不建议使用
    • Thread.interrupt()中断当前线程,可以在线程中用isInterrupted()来判断线程是否中断。
    • 在线程的合适时机抛出异常。
  • 线程之间通信方式 详情

    • socket
    • 文件传输
    • aidl(binder)
    • 剪切板
    • intent+bundle
    • 使用Message
  • 线程和进程区别

    • 线程是系统调度的最小单位
    • 进程可以包含多个线程
    • 一个应用可以有多个进程以及多个线程
    • 进程有独立的存储空间,不可共享数据
    • 线程可以共享数据,但由于线程的异步性,共同读取数据可能导致数据错误
  • Java的垃圾回收机制 详情

    • 当对象没有被任何地方引用时候,JVM会在适当的时机释放该对象内存空间
    • 强引用不会回收,软引用会在内存不足时候回收,弱引用对象会在垃圾回收运行时回收,虚引用会在对象被回收时收到系统的通知。
  • 哈希算法以及HashMap的底层原理 详情

    • 哈希算法,把任意对象通过计算,变化为数字的算法。
      哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,一般来说满足这样的关系:f(data)=key,输入任意长度的data数据,经过哈希算法处理后输出一个定长的数据key。同时这个过程是不可逆的,无法由key逆推出data。

      如果是一个data数据集,经过哈希算法处理后得到key的数据集,然后将keys与原始数据进行一一映射就得到了一个哈希表。一般来说哈希表M符合M[key]=data这种形式。
      哈希表的好处是当原始数据较大时,我们可以用哈希算法处理得到定长的哈希值key,那么这个key相对原始数据要小得多。我们就可以用这个较小的数据集来做索引,达到快速查找的目的。

      稍微想一下就可以发现,既然输入数据不定长,而输出的哈希值却是固定长度的,这意味着哈希值是一个有限集合,而输入数据则可以是无穷多个。那么建立一对一关系明显是不现实的。所以"碰撞"(不同的输入数据对应了相同的哈希值)是必然会发生的,所以一个成熟的哈希算法会有较好的抗冲突性。同时在实现哈希表的结构时也要考虑到哈希冲突的问题。

      密码上常用的MD5,SHA都是哈希算法,因为key的长度(相对大家的密码来说)较大所以碰撞空间较大,有比较好的抗碰撞性,所以常常用作密码校验。

    • HashMap原理

      首先会把key值转化为hash值,然后把对应的hash值转化为哈希表的下标。

      HashMap可以理解为一个以hash值转化后的值为下标,以链表为元素的数组。

  • 数组和链表的区别 详情

    • 数组

      数组是一个连续的存储区域,需要预留存储空间,删除和插入效率低,随机读取效率高,不利于扩张

    • 链表

      存储空间可以不联系,通过指针来指向下一个位置,增加和删除数据容易,查找效率较低,且不具有随机访问性质。

  • 读写锁和互斥锁的区别 详情

    • 读写锁

      读写锁有三种状态,读加锁状态、写加锁状态和不加锁转态

      一次只有一个线程可以占据写的锁,但是可以有多个线程占据读的锁。读的时候,禁止写入,只允许多线程读取,写的时候禁止读取,也只能一个线程写入。

      读写锁适合对数据结构读的次数远大于写的情况。

    • 互斥锁

      在访问资源之前,对资源加锁,访问完成之后解锁。在锁定的过程中任何其他试图访问资源的线程都将被阻塞,直到解锁。这种加锁方式只有一个线程能够访问被互斥锁保护的资源。

  • 重载和重写的区别 详情

    • 重载

      可以理解为方法名相同的两个方法,这两个方法除了名字相同,没什么联系。唯一的要求就是两个方法的参数不能相同。

    • 重写

      是子类在继承父类方法时候,对父类的方法进行的重写。要求参数列表和方法吗必须与父类相同,而且访问权限只能高不能低。java7以后,返回值的类型可以是父类型的子类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值