美文网首页
Android面试知识点(二)*

Android面试知识点(二)*

作者: 书虫大王X | 来源:发表于2021-05-16 18:06 被阅读0次

1、java常见的异常:

  • 分为Error和Exception,都是继承于Throwable。
  • Error类及其子类是由java虚拟机产生并抛出给系统的,有内存溢出错误、栈溢出错误、动态链接错误等,通常这些错误不由编程者直接处理,一般交由系统处理。
  • Exception及其子类是用户能够捕捉到的异常。
  • Runtime_Exception:运行时异常,Exception的一个子类。运行异常类对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常。运行异常可能出现在任何地方,且出现频率很高,因此为了避免巨大的系统资源开销,编译器不对异常进行检查。
  • Non_RuntimeException:非运行时异常,也是Exception的一个子类。这类异常时在程序运行过程中由环境因素造成的异常,这类异常必须用过try...catch... 将其捕获并处理,否则不能通过编译。

2、java继承:

  • 子类不能将父类中的方法、属性的作用域变小,因为可能会造成方法的“失传”(孙子辈继承父类时,如果父类将爷爷辈的方法的作用域改小了,孙子辈可能继承不了该方法);但是可以把父类的作用域扩大。
  • 子类不能抛出比父类更多的异常

3、死锁:

  • 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
  • java死锁产生的4个必要条件:
    (1)资源互斥:即当资源被一个线程使用(占有)时,别的线程不能使用
    (2)不可剥夺:资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
    (3)请求、保持:即当资源请求者在请求其他的资源的同时保持对原有资源的占有。
    (4)循环等待:即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路。

4、synchronized:java多线程同步机制:

  • 一段synchronized的代码被一个线程执行之前,改线程要先拿到执行这段代码的执行权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等待(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中 等待的某个线程就可以拿到锁执行同步代码了。这样就保证了同步代码在统一时刻只有一个线程在执行。
  • synchronized可以对属性、方法、对象、代码块进行同步。
  • 应用场景:模拟买票系统,对票的总数进行synchronized同步。

5、ArrayMap和HashMap区别:

  • map的特点:包含键值对,键唯一
  • hash:也可以称为“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。不同的输入可能会散列成相同的输出(也就是多对一的关系)。
  • hashmap:内部是使用一个默认容量为16的数组来存储数据的,数组中每一个元素是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表),这种存储数据的方法叫做拉链法 。
  • hashmap每一个节点的值都是Entry,Entry存储的内容有key、value、hash值、和next指针。那么,这些Entry数据是按什么规则进行存储的呢?就是通过计算元素key的hash值,然后对Hash值取余得到在数组中对应的位置,如果有多个元素对应同一个位置的话,采取链表的方式,把之后加进来的元素加入链表末尾。
  • Arraymap:一个<key,value>映射的数据结构,它设计上更多的是考虑内存的优化,内部是使用两个数组进行数据存储,一个数组记录key的hash值,另外一个数组记录Value值。它会对key使用二分法进行从小到大排序,在添加、删除、查找数据的时候都是先使用二分查找法得到相应的index,然后通过index来进行添加、查找、删除等操作
  • Arraymap应用场景:数据量不大,最好在千级以内、数据结构类型为Map类型

6、java反射:

  • Java反射就是在运行状态时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态语言的一个关键性质。
  • 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。那么我们便可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等;但是需要注意的是反射使用不当会造成很高的资源消耗!

7、HTTP状态码

  • 200:请求成功
  • 301:永久性重定向
  • 302:临时性重定向
  • 304:资源未改变
  • 400:请求有误
  • 403:服务器拒绝此请求
  • 404:资源找不到
  • 405:客户端的请求方法被禁止
  • 500:服务器报错
  • 503:服务器超载或在维护

相关文章

  • Android面试总结二

    参考文章 40个Android面试题Java面试题集Android名企面试题及知识点整理Android面试题收集较...

  • Android面试题汇总

    面试题汇总 Android复习资料——Android知识点汇总(一) 史上最全的Android面试题集锦 ForA...

  • Android面试题知识点整理篇

    前言 秋招在即,急忙将这些Android知识点整理一套面试题籍,希望对大家有所帮助。 Android面试题知识点 ...

  • 【Android面试有章可循】知识点总结

    分享一篇Android知识点总结文章 面试复习——Android工程师之Android面试大纲 后续我会在这个的基...

  • Android面试题

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

  • 第九周 Android 面试整理

    Android面试整理知识点较全:https://github.com/hcy940215/Android_Int...

  • Android面试知识点(二)*

    1、java常见的异常: 分为Error和Exception,都是继承于Throwable。 Error类及其子类...

  • Android面试知识点

    Android面试经常问的知识点: fragment 动态代理 数据结构,平衡二叉树,堆, hashmap是怎么实...

  • 1.Activity(一)

    前言:这段时间自己复习高级Android面试整理的一套Android面试知识点总结:开始整理到有道云笔记,后续会直...

  • 面试总结

    经典链接: 1.android最全知识点 2.android开源项目 3.启舰android开发 4.java面试...

网友评论

      本文标题:Android面试知识点(二)*

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