Giter Site home page Giter Site logo

forward's Introduction

Forward

This project is for Study.


Android学习路线

  • 初级工程师:阅读官方文档+练习官方Demo
    • 技术要求
      • 四大组件使用
      • 如何布局
      • 简单的自定义View
      • 动画
    • 书籍推荐
      • 《第一行代码》
      • 《疯狂Android》
  • 中级工程师:写文章要独立思考和有技术深度;阅读源码+自定义View+滑动冲突(View滑动原理)
    • 技术要求

      • AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;
      • Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;
      • 多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等;
      • 事件分发:弹性滑动、滑动冲突等;
      • 玩转View:View的绘制原理、各种自定义View;
      • 动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理;
      • 懂性能优化、熟悉mat等工具
      • 懂点常见的设计模式
    • 推荐书籍

      • 《Android开发艺术探索》
      • 《Android群英传》
    • 高级工程师:

      • 技术要求
        • 了解SystemServer的启动过程
        • 了解主线程的消息循环模型
        • 了解AMS和PMS的工作原理
        • 能够回答问题”一个应用存在多少个Window?“
        • 了解四大组件的大概工作流程
        • Activity的启动模式以及异常情况下不同Activity的表现
        • Service的onBind和onReBind的关联
        • onServiceDisconnected(ComponentName className)和binderDied()的区别
        • AsyncTask在不同版本上的表现细节
        • 线程池的细节和参数配置
        • 熟悉设计模式,有架构意识
      • 书籍推荐
        • 《Android 源码设计模式解析与实战》
        • 《Android内核剖析》

Android技能树

  • 编码规范
  • 版本控制
  • 开发工具
  • 签名打包
  • Java
    • 集合框架
    • I/O流
  • Android
    • 四大组件
    • 常用控件
    • View绘制
    • 事件分发机制
    • 动画
    • 进程间通信
  • 网络
  • 设计模式
  • 应用架构
  • 开源框架

原创系列博客




Kotlin


面试题

Java面试题

  • 1 Java泛型深度解析以及面试题?
    • 什么是泛型?使用泛型的好处?
    • 什么是泛型擦除机制?
    • List<Object>, List<?>, List<String>,List原始类型 四者之间的区别?
  • 2 Java注解的理解和应用场景?
  • 3 线程的实现本质上有几种方式?
  • 4 Java线程的生命周期
  • 5 wait/notify/notifyAll常见面试题解析
  • 6 synchronized关键字的几种使用方式比较
  • 7 volatile关键字的理解
  • 8 锁分哪几类?

    在这里插入图片描述

  • 9 CAS无锁编程的原理?有哪些问题?

    当前的处理器基本都支持CAS()的指令,只不过每个厂家所实现的算法并不一样,每一个CAS操作过程都包含三个运算符:一个内存地址V,一个期望的值A和一个新值B,操作的时候如果这个地址上存放的值等于这个期望的值A,则将地址上的值赋为新值B,否则不做任何操作。 CAS的基本思路就是,如果这个地址上的值和期望的值相等,则给其赋予新值,否则不做任何事儿,但是要返回原值是多少。循环CAS就是在一个循环里不断的做cas操作,直到成功为止。 问题:1 ABA问题 ; 2 开销问题,长期的自旋不成功就会对CPU有消耗;3 3 只能保证一个共享变量的原子操作

  • 10 ReentrantLock的实现原理。

    线程可以重复进入任何一个它已经拥有的锁所同步着的代码块,synchronized、ReentrantLock都是可重入的锁。在实现上,就是线程每次获取锁时判定如果获得锁的线程是它自己时,简单将计数器累积即可,每 释放一次锁,进行计数器累减,直到计算器归零,表示线程已经彻底释放锁。底层则是利用了JUC中的AQS来实现的。

  • 11 AQS原理

    它是用来构建锁或者其他同步组件的基础框架,比如ReentrantLock、ReentrantReadWriteLock和CountDownLatch就是基于AQS实现的。它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。它是CLH队列锁的一种变体实现。它可以实现2种同步方式:独占式,共享式。 AQS的主要使用方式是继承,子类通过继承AQS并实现它的抽象方法来管理同步状态,同步器的设计基于模板方法模式,所以如果要实现我们自己的同步工具类就需要覆盖其中几个可重写的方法,如tryAcquire、tryReleaseShared等等。 这样设计的目的是同步组件(比如锁)是面向使用者的,它定义了使用者与同步组件交互的接口(比如可以允许两个线程并行访问),隐藏了实现细节;同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。这样就很好地隔离了使用者和实现者所需关注的领域。 在内部,AQS维护一个共享资源state,通过内置的FIFO来完成获取资源线程的排队工作。该队列由一个一个的Node结点组成,每个Node结点维护一个prev引用和next引用,分别指向自己的前驱和后继结点,构成一个双端双向链表。

  • 12 生产者消费者模式有哪几种常见的实现方式?
  • 13 Java集合框架
  • 14 HashMap数据结构
  • 15 ConcurrentHashMap的原理
  • 16 类加载机制
  • 17 JVM结构和垃圾回收机制
  • 18 I/O流
  • 19 应用程序安装流程
  • 20 设计模式的原则和23种设计模式了解
  • 21 四种排序算法
  • 22 Integer面试题解析
  • 23 分享几个面试题

Android面试题

forward's People

Contributors

oaman avatar zhoujiang2012 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.