美文网首页
2021年《学习》

2021年《学习》

作者: 帝王鲨kingcp | 来源:发表于2020-12-17 21:47 被阅读0次

    算法题

    https://github.com/afatcoder/LeetcodeTop
    https://codetop.cc/#/home
    26、两个用单链表表示的大数相加,求他们的和。单链表元素的值为0~9。
    15、求单链表的倒数第n个结点,时间复杂度为O(1)的解法。bad case是哪种?
    16、遍历目录及其子目录,使用非递归的方式。

    数据结构

    1.SparseArray和ArrayMap。具体实现原理和特性,ArrayMap和SparseArray的区别。
    https://blog.csdn.net/xiaxl/article/details/77267201
    https://www.jianshu.com/p/1739363c0e50
    2.HashMap讲一下,数据结构、hash过程、扩容、加载因子为何是0.75等。
    https://www.cnblogs.com/lwh1019/p/13385060.html
    3.current hashmap在所有情况下都是线程安全的吗?hashtable呢?
    4.hashmap。hash冲突时给链表插入数据,1.7头插法,1.8尾插法。
    https://blog.csdn.net/ho528528/article/details/103903998
    5.HashMap:数据结构(数组加链表(或者红黑树)),为何这么设计;数组和链表的特性;元素添加的过程;扩容过程中为何不整体复制;链表为什么要转红黑树?讲下hashmap;链表转红黑树的限制为何是8;红黑树的时间复杂度;红黑树转链表的限制为何是6;
    https://blog.csdn.net/v123411739/article/details/78996181
    https://joonwhee.blog.csdn.net/article/details/106324537
    6.讲下arraylist、hashmap、linkedlist、linkedhashmap的实现。linkedhashmap为何会有这样的特性(lru)?它有个参数,表示命中率和使用次数。lru是通过linkedhashmap实现的么?LRU如何实现的?LinkedHashMap如何实现的?LinkedHashMap是否线程安全?如何实现线程安全?有序还是无序?你如何自己实现一个LRUCache?Android里面的LRUCache是如何实现的?
    https://blog.csdn.net/zlfprogram/article/details/88708508 (JDK1.6)
    https://segmentfault.com/a/1190000012964859 (JDK1.8)
    https://www.jianshu.com/p/b49a111147ee (LRUCache很多文章是错误的多看下面评论,会LinkedHashMap就可以)
    9、数据结构:
    ①二叉树用的多么?哪里用过?
    ②二叉搜索树、AVL树,红黑树
    ③二叉树的使用举例。
    ④链表和二叉树的区别,优劣势

    webview:

    1、Android与js交互方式;JsBridge原理,它是如何解决安全性问题的?

    https://iluhcm.com/2017/12/10/design-an-elegant-and-powerful-android-webview-part-one/
    https://iluhcm.com/2018/02/27/design-an-elegant-and-powerful-android-webview-part-two/
    https://www.jianshu.com/p/5e7075f4875f

    UI相关:

    1、View绘制流程。onMeasure、onLayout、onDraw。MeasureSpec讲一下。MeasureSpec,关键方法。2、讲下onMeasure方法:①如何测量 ②测量模式 ③入参为什么是int类型?④为什么会多次调用onMeasure和onLayout方法?自定义View,测量模式的匹配。
    https://www.cnblogs.com/andy-songwei/p/10955062.html
    2、View绘制流程;requestLayout和invalidate区别;invalidate每次都会触发onDraw么?View#onLayout每次会触发么?requestLayout调用后,都会调用哪些方法?
    https://wanandroid.com/wenda/show/16190
    https://www.jianshu.com/p/4f0f0b64381d
    https://blog.csdn.net/litefish/article/details/52859300
    3、自定义View的几种方式。onMeasure、onLayout、onDraw方法都何时需要重写。自定义属性的作用。讲下你的自定义View,为何如此设计?自定义View的关键步骤,注意事项,你的理解
    https://www.cnblogs.com/andy-songwei/p/10979161.html

    4、动画

    5、讲下View绘制流程。canvas可以画Bitmap么?画布要做旋转、缩放、平移等操作该如何实现?
    https://hencoder.com/ui-1-5/
    https://hencoder.com/ui-1-4/
    6、项目中有哪些亮点?自定义View1、直播弹幕如何实现?竖向的TextView如何实现。TextView文字描边效果如何实现。①获取TextView的行数时,StaticLayout原理,自定义View:支持换行的尾部标签的实现。
    https://hencoder.com/ui-1-3/
    https://github.com/liufsd/TextViewVertical
    https://jaeger.itscoder.com/android/2016/08/05/staticlayout-source-analyse.html

    7、RecyclerView的特点和缓存、RecyclerView的缓存,局部刷新用过么?
    1、封装的Adapter讲解。
    8、ListView的滑动卡顿如何优化
    ②MotionEvent#offsetLocation事件转发。
    ②onMeasure、onLayout、onDraw这三个方法中,哪个最耗时?onMeasure和onLayout呢?
    ⑧View#draw()方法细节
    9、Choreography的作用。它的上游和下游各自是哪个。Choreography发布了订阅消息,同类型的Callback还有哪些?这些Callback之间的优先级如何?vsync机制。
    https://www.jianshu.com/p/86d00bbdaf60
    https://juejin.cn/post/6863756420380196877
    10、Surface对象了解么?作用,何时初始化,怎么使用的。Surface和Window的关系。绘制的数据是如何提交到远端的SurfaceFlinger

    main_surfaceflinger.cpp    surfaceflinger.cpp(init(),)
    

    11、GPU和surfaceFlinger之间的设计思想是什么?surfaceFlinger具体作用是什么?它对数据做了哪些操作?
    SurfaceFlinger
    Choreographer
    Surface
    https://blog.csdn.net/jiejingguo/article/details/102828820
    Android的UI显示原理之Surface的创建
    Android的UI显示原理之Surface的渲染
    https://www.cnblogs.com/dasusu/p/8311324.html
    12、硬件加速了解么?GPU如何高效绘制?
    13、SurfaceView的实现

    ⑤一个Button的点击事件中,调用requestLayout,接下来哪些方法会被调用?
    19、Activity中的Window的初始化和显示过程
    ⑥Window和Activity的对应关系。除了Activity还有别的方式显示Window出来么?
    3、Activity#setContentView中的xml文件是如何转化成View并显示到Activity中的。
    ①PhoneWindow是在哪里初始化的?
    ②LayoutInflater是如何把xml布局文件转换成View对象的(反射)?View树如何生成的?怎么优化?
    ③为什么会有R文件这个映射表?直接使用资源的路径不好么?
    https://www.jianshu.com/p/8766babc40e0
    https://blog.csdn.net/yanbober/article/details/45970721
    20、Application中可以显示Dialog么?为什么?
    https://juejin.cn/post/6873669458742525960
    1、悬浮窗如何实现
    https://juejin.cn/post/6844904073586556935
    https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235949&idx=1&sn=0f7eded67f834d38b02f8872768cb68a&scene=38#wechat_redirect
    https://mp.weixin.qq.com/s/Q9HeT39w0LXGoR_ifyd9bg
    https://juejin.cn/post/6844904073586556935
    https://www.jianshu.com/p/95c2fadd9aa4

    事件分发:

    3、事件分发。冲突解决。
    12、事件分发,多点触碰处理,是在onTouchEvent方法里面。
    1、滑动冲突如何解决?有几种方式?具体从哪个事件开始拦截?在哪里拦截?比如双层ViewPager嵌套的滑动冲突如何解决。
    2、事件分发的具体流程。
    3、讲下事件传递:
    ①总体流程
    ②DOWN事件拦截后,后续事件如何处理?
    ③dispatchTouchEvent方法返回true后事件如何处理?
    11、讲下事件分发。如果onInterceptTouchEvent返回true,但是onTouchEvent返回了false,是什么效果?如果还想让其他View接收事件,该怎么做?
    15、事件分发,如何处理滑动冲突
    10、事件分发
    https://juejin.cn/post/6922300686638153736

    网络:

    1、http消息体讲一下。消息首行的方法有哪几种?如何上传数据?请求头关键字段和请求体格式
    2、http post请求上传大文件,如何实现?分块上传呢?用到的关键Header有哪些?
    3、上传的重试机制
    4、网络分层架构,https的连接过程,tcp和udp的区别。
    5、TCP和UDP区别,TCP为何是三次握手,为何是四次挥手
    6、http和https:
    ①它们的区别:https多了tls层。对称加密和非对称加密。
    ②具体验证的过程是怎样的?
    https://www.jianshu.com/p/116ebf3034d9
    7、okhttp源码。网络优化:
    OkHttp,Retrofit,Rxjava:
    7、Rxjava的map和flatmap区别,flatmap为何要生成多个Observable?Rxjava的线程种类,线程切换如何实现的?
    9、rxjava源码。用过哪些操作符?map和flatmap区别。
    16、滑动窗口的最大值。
    https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA

    Bindler,Handler

    1、Handler讲一下。Message#what的不同值,会影响Message在MessageQueue中的顺序么?
    2、Handler机制。MessageQueue中的Message是如何排列的?Msg的runnable对象可以外部设置么,比如说不用Handler#post系列方法(反射可以实现)
    3、Handler。Looper.loop( )为何不会阻塞进程。
    https://www.jianshu.com/p/70d5785ee4c3
    https://mp.weixin.qq.com/s/ClTE15s9qUaNsInIIwX57w
    4、IdleHandler调用时机
    https://juejin.cn/post/6844904150140977165
    5、ThreadLocal
    https://juejin.cn/post/6844904150140977165
    https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650243742&idx=1&sn=27de324a1685ebbb112a239777eb7f52&chksm=886373f1bf14fae7c7515c76d65707dc6f026996c7cbfe3df16a52d86ced2904e154941f744f&scene=38#wechat_redirect
    https://mp.weixin.qq.com/s/F9c9q0IO4FvnXVvCntL0Iw

    7、linux中进程间通信的方式,Android为何会自己搞一个?
    6、binderService方法中的回调具体运行在哪个线程?binder线程池最大线程数是多少?自定义的Callback远程调用,运行在哪个线程?为何不是主线程,如果运行在主线程会有哪些问题?
    7、binder线程池的最大线程个数;binder线程池中如果满了,对待新来的任务,会如何处理?此时client端会是什么效果?
    https://blog.csdn.net/qq_39037047/article/details/88066589
    9、linux下常见的进程间通信方式,Android为何自己搞一个Binder,有何优势?binder安全原理、讲下aidl内容。8、binder的mmap
    5、Android为何会使用binder来进行进程间通信。
    10、binder是cs架构,Server端的binder都是运行在同一个线程里面么?
    http://gityuan.com/android/
    https://mp.weixin.qq.com/s/Ef2Qy_xFeI6WU3Q0wf5czA
    https://mp.weixin.qq.com/s/IbIhw71iiK6eFihgTYB6gw
    https://mp.weixin.qq.com/s/GRkrbJ5LrRwmJxuidGB3rQ
    https://mp.weixin.qq.com/s/gHtZ9pjMJ-jXA12rvXA4cg
    https://mp.weixin.qq.com/s/LH_JR5Rwh1JL4B6qQkEv9Q
    https://mp.weixin.qq.com/s/1d_LHbzfp4l8qQEu7tfKZg
    https://mp.weixin.qq.com/s/wD3Io-ikS1VCljNkxEb6tQ
    https://juejin.cn/post/6867139592739356686

    多线程

    1、线程、进程的区别

    多进程⽅式确实可以实现并发,但使⽤多线程,有以下⼏个好处:
    进程间的通信⽐较复杂,⽽线程间的通信⽐较简单,通常情况下,我们需要使 ⽤共享资源,这些资源在线程间的通信⽐较容易。 进程是重量级的,⽽线程是轻量级的,故多线程⽅式的系统开销更⼩。
    进程和线程的区别
    进程是⼀个独⽴的运⾏环境,⽽线程是在进程中执⾏的⼀个任务。他们两个本质的 区别是是否单独占有内存地址空间及其它系统资源(⽐如I/O):
    进程单独占有⼀定的内存地址空间,所以进程间存在内存隔离,数据是分开 的,数据共享复杂但是同步简单,各个进程之间互不⼲扰;⽽线程共享所属进 程占有的内存地址空间和资源,数据共享简单,但是同步复杂。
    进程单独占有⼀定的内存地址空间,⼀个进程出现问题不会影响其他进程,不 影响主程序的稳定性,可靠性⾼;⼀个线程崩溃可能影响整个程序的稳定性, 可靠性较低。
    进程单独占有⼀定的内存地址空间,进程的创建和销毁不仅需要保存寄存器和 栈信息,还需要资源的分配回收以及⻚调度,开销较⼤;线程只需要保存寄存 器和栈信息,开销较⼩。
    另外⼀个重要区别是,进程是操作系统进⾏资源分配的基本单位,⽽线程是操作系 统进⾏调度的基本单位,即CPU分配时间的单位 。
    
    

    2、多线程如何实现?有哪些方式?

    
    

    3、多线程为何不安全,Java为何会有线程安全问题?如何解决?

    1.内存可见性,数据竞争,JMM没有这样的保证⽐如,在当前线程把写过的数据缓存在本地内存中,在没有刷新到主内存之前,这个写操作仅对当前线程可⻅;
    从其他线程的⻆度来观察,这个写操作根本没有被当前线程所执⾏。只有当前线程把本地内存中写过的数据刷新到主内存之后,这个写操作才对其他线程可⻅
    2.同步,正确的happen-before,如果操作A happens-before操作B,那么操作A在内存上所做的操作对操作
    B都是可⻅的,不管它们在不在⼀个线程。
    

    4、ThreadLocal干嘛的?用法和原理。
    https://baijiahao.baidu.com/s?id=1666270412047190730&wfr=spider&for=pc
    https://www.jianshu.com/p/1e4eaedbac19
    5、synchronized和volatile的区别?为何不用volatile替代synchronized?synchronized的同步原语?Java的线程同步方式;synchronized和Lock的实现及区别?讲一下锁,synchronized和Lock?CAS原理。读写锁和ReentrantLock,synchronized和读写锁的区别?

    volatile和synchronized的区别:
    volatile关键字可以保证多线程操作共享变量的可⻅性以及禁⽌指令重排序(内存屏障保证)
    synchronized关键字不仅保证可⻅性,同时也保证了原⼦性(互斥性)
    
    volatile和锁的区别:
    volatile仅仅保证对单个volatile变量的读/写具有原⼦性,⽽锁可以保证整个临界区代码的执⾏具有原⼦性。
    所以在功能上,锁⽐volatile更强⼤;在性能上,volatile更有优势
    
    volatile语义:指的是当⼀个线程对 volatile 修饰的变量进⾏写操作(⽐如step 2)时,JMM会⽴即把该线程对应的本地内存中的共享变量的值刷新到主内存;
    当⼀个线程对 volatile 修饰的变量进⾏读操作(⽐如step 3)时,JMM会把⽴即该线程对应的本地内存置为⽆效,从主内存中读取共享变量的值。
    
    synchronized原语:synchronized又被称为内置锁,线程进入同步代码块时会获得该锁,退出代码块自动释放锁,锁可以让线程在临界区互斥执行,呈现串行语义。
    所以synchronized可以解决任何并发情况下线程安全的问题,包含原子性,可见性,有序性。
    java中每一个对象都可以作为锁,根据synchronized修饰的目标不同锁定的对象有如下3中情况:
    1、修饰普通方法,锁当前对象
    2、修饰静态方法,锁当前类的class对象
    3、修饰代码块,锁括号中的对象
    
    CAS原理
    CAS的全称是:⽐较并交换(Compare And Swap)。在CAS中,有这样三个值:
    V:要更新的变量(var)
    E:预期值(expected)
    N:新值(new)
    ⽐较并交换的过程如下:
    判断V是否等于E,如果等于,将V的值设置为N;如果不等,说明已经有其它线程
    更新了V,则当前线程放弃更新,什么都不做。
    所以这⾥的预期值E本质上指的是“旧值”。
    
    CAS是⼀种原⼦操作,它是⼀种系统原语,是⼀条CPU的原⼦指令,从CPU层⾯保证它的原⼦性
    当多个线程同时使⽤CAS操作⼀个变量时,只有⼀个会胜出,并成功更新,其余均会失败,但失败的线程并不会被挂起,仅是被告知失败,并且允许再次尝试,
    当然也允许失败的线程放弃操作。
    
    ABA问题
    所谓ABA问题,就是⼀个值原来是A,变成了B,⼜变回了A。这个时候使⽤CAS是检查不出变化的,但实际上却被更新了两次。
    ABA问题的解决思路是在变量前⾯追加上版本号或者时间戳。从JDK 1.5开始,JDK的atomic包⾥提供了⼀个类 AtomicStampedReference 类来解决ABA问题。
    
    
    synchronized 有什么不⾜之处。
    如果临界区是只读操作,其实可以多线程⼀起执⾏,但使⽤synchronized的话,同⼀时间只能有⼀个线程执⾏。
    synchronized⽆法知道线程有没有成功获取到锁
    使⽤synchronized,如果临界区因为IO或者sleep⽅法等原因阻塞了,⽽当前线程⼜没有释放锁,就会导致所有线程等待。
    
    可重⼊锁和⾮可重⼊锁
    ReentrantLock,synchronized 都是可重入的。
    
    公平锁与⾮公平锁
    ReentrantLock⽀持⾮公平锁和公平锁两种
    
    读写锁和排它锁
    synchronized⽤的锁和ReentrantLock,其实都是“排它锁”。也就是说,这些锁在同⼀时刻只允许⼀个线程进⾏访问
    读写锁可以再同⼀时刻允许多个读线程访问。Java提供了ReentrantReadWriteLock类作为读写锁的默认实现,内部维护了两个锁:⼀个读锁,⼀个写锁。
    通过分离读锁和写锁,使得在“读多写少”的环境下,⼤⼤地提⾼了性能。
    
    

    https://tech.meituan.com/2018/11/15/java-lock.html
    类锁和对象锁互斥么?非静态方法A和B在同一个类中,方法A用synchronized修饰,当A方法因为多线程请求有线程阻塞在对象锁上的时候,B方法的访问受不受影响?
    https://blog.csdn.net/u011402896/article/details/79363165
    https://blog.csdn.net/abc1234z0/article/details/103654083
    https://blog.csdn.net/github_37130188/article/details/97638651
    synchronized实现?
    https://www.cnblogs.com/aspirant/p/11470858.html

    6、锁的几种状态
    无锁,偏向锁,轻量级,重量级
    https://tech.meituan.com/2018/11/15/java-lock.html

    7、线程的使用。讲下线程池的类型,线程池对象的参数,线程池最大线程数和核心线程数的关系,task的优先级如何实现?(优先级队列),线程池的参数,线程池如何配置,核心线程数你一般给多少
    https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html
    8、线程状态
    t1、t2、t3三个线程,如何让三个线程按照顺序依次打印1-100。手写。

    image.png
    8、Lock的实现,以及与synchronized的区别

    优化类

    1、讲下OOM原理,OOM和内存泄漏,内存泄漏检测及优化,讲下leakCanary原理,为什么不用虚引用?引用队列里面存的是什么?
    https://www.jianshu.com/p/2d6e2506d246
    2、图片内存优化;大图加载优化,原理。图片加载优化,不要讲公式,就讲你怎么做的。glide源码。大图加载;Bitmap内存复用,图片内存的计算。Bitmap内存计算规则,Bitmap内存大小,注意事项,如何优化
    ①在不影响图片质量的前提下,如何减少内存?
    ②图片显示不全、变形怎么处理?
    xhdpi的图片放到xxhdp的手机上,内存会如何变化;
    https://juejin.cn/post/6844904166138069005(bitmap缓存,bitmap复用Options.inBitmap,修改Config.RGB_565,修改采样率Options.insampleSize,Options.inJustDecodeBound,图片xxhdpi文件夹中位置)
    https://juejin.cn/post/6854573209635782664(Glide)

    3、包体积优化
    https://juejin.cn/post/6844904103131234311
    https://juejin.cn/post/6872920643797680136
    https://mp.weixin.qq.com/s/BVQxgM-dpwoPJJ8P_c6u4w
    https://tech.meituan.com/2017/04/07/android-shrink-overall-solution.html
    4、启动速度优化,启动速度优化,IdleHandler用法,冷启动热启动优化
    https://juejin.cn/post/6844903919580086280
    4、在同一个手机上,如果把drawable-xxhdpi下的图片移动到drawable-xhdpi下,图片内存是如何变的,解释原理。如果在drawable-hdpi、drawable-xxhdpi下放置了图片,但是手机是xhdpi的,会优先加载哪个,加载优先级是怎样的?如果是400 * 800,1080 * 1920这种呢,会如何查找?xhdpi和400*800同时存在时,会如何查找?布局文件呢?8、drawable下所以的格式都能转成webp么?哪些不能转?
    7、hdpi和xxhdpi的手机,分别加载xhdpi下的图片,会缩放图片么?如果会缩放,是如何缩放的,像素点是如何补全或者减少的?图片在内存中的大小会如何变化?
    6、讲下ANR
    https://blog.csdn.net/chewbee/article/details/72670603
    https://mp.weixin.qq.com/s/4w202K0WnNrazmEHd6grQA
    https://juejin.cn/post/6844903715313303565
    15、卡顿优化
    11、代码质量如何控制?
    12、app质量如何控制?
    13、网络优化,网络监控。
    13、讲下你做过的首页优化。
    9、布局优化
    13、使用Application#onTrimMemory优化
    14、使用ActivityLifecycleCallbacks做了哪些事情?
    16、绘制优化。
    2、View绘制优化
    3、性能优化:UI优化、内存泄漏
    5、网络优化,数据库优化
    https://blog.csdn.net/yanbober/article/details/48394201
    https://zhuanlan.zhihu.com/p/30691789

    JVM,热修复,插件化:

    1、Java内存模型(JMM),jvm的运行时数据结构。栈帧中会有什么异常?方法区里面存放的是什么数据?
    类加载过程;
    https://segmentfault.com/a/1190000020206676?utm_source=tag-newest
    https://www.jianshu.com/p/6e2bc593f31c
    https://www.jianshu.com/p/3ca14ec823d7
    https://blog.csdn.net/xlh1191860939/article/details/105894767

    2、成员变量和局部变量的区别。为何成员变量需要jvm在对象初始话过程中赋默认值?Java中进程间共享的数据是放在JVM那个分区的?Java中主进程和子进程间的通信,通过哪块内存区域?
    https://blog.csdn.net/liufangbaishi2014/article/details/86213846
    https://www.cnblogs.com/yanl55555/p/12614141.html

    3、讲下Java的双亲委派
    https://www.jianshu.com/p/8743d8062bb6

    4、讲下GC root的类型。GCRoot,垃圾回收算法。GCRoot,举例说明。比如说Activity和它的匿名内部类Handler,分析下引用链,对应的gcroot是哪个?
    https://www.cnblogs.com/KeleLLXin/p/14061269.html
    https://www.jianshu.com/p/108ddab3ad3f
    https://www.jianshu.com/p/0269237a229d
    https://blog.csdn.net/weixin_40334045/article/details/106762338

    image.png

    18、Aop、AspectJ、ASM了解么
    5、Android热修复原理,tinker的patch文件如何生成,patch文件是全部加载dex文件首部么?热修复用的什么方案?dex,so,资源的合并
    https://blog.csdn.net/lmj623565791/article/details/54882693
    https://blog.csdn.net/lmj623565791/article/details/60874334
    https://blog.csdn.net/lmj623565791/article/details/72667669
    https://www.jianshu.com/p/af8c47fabb12
    https://juejin.cn/post/6844903902152769544
    6、插件化原理
    https://juejin.cn/post/6844903885476233229
    https://juejin.cn/post/6844903894271705095
    VirtualAPK
    https://blog.csdn.net/dehang0/article/details/107131217/
    https://blog.csdn.net/qq_35559358/article/details/78979439
    https://blog.csdn.net/lmj623565791/article/details/75000580
    操作系统
    ①讲一下用户态和内核态
    ②为何会有用户态和内核态划分

    kotlin,泛型

    1、说一下kotlin的优缺点。let和with的区别
    https://www.jianshu.com/p/298f77dc389e
    2、函数式编程如何理解?
    3.、kotlin的协程,构造函数。
    https://blog.csdn.net/xlh1191860939/article/details/79412319
    https://mp.weixin.qq.com/s/84fSUYQt3T_Fa5B5s5ihvA
    4.、kotlin的扩展,属性是否可以扩展,是否可以扩展跟现有方法签名相同的方法
    https://blog.csdn.net/xlh1191860939/article/details/79625234
    3、kotlin的lateinit和by lazy的区别
    5、kotlin泛型:out和in。kotlin真泛型的实现
    4、泛型:为何会有协变和逆变,PECS规则。泛型中T和?的区别,List<?>和List有什么区别;泛型里的super和extends区别;
    https://blog.csdn.net/m0_37796683/article/details/108584499

    6、既然泛型有编译期类型擦除,那么运行时无法获取到具体类型;而反射能在运行时获取到Class的类型;它们一个获取不到,一个可以获取到,这不就是矛盾么?请解释下细节。
    https://blog.csdn.net/briblue/article/details/76736356
    7、泛型和泛型擦除;泛型为何会有擦除;擦除的时机;泛型的编译器类型检查。
    21、泛型擦除,为何会有擦除?擦除的时机。通配符。

    Gradle

    1、Gradle的实现,gradle中task的生命周期。
    https://www.bilibili.com/video/av55941638/
    2、gradle生命周期,task,插件
    https://www.cnblogs.com/davenkin/p/gradle-learning-1.html
    https://juejin.cn/post/6844903870091493384

    项目打包上线相关

    1、混淆的步骤和原理
    https://www.jianshu.com/p/d768f6d1d93b
    https://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=214472913&idx=1&sn=92b54b5fcd9bbab6513e46d92095a07f&scene=1&srcid=0427eTI2x0dnk2EsFnysnjZI#rd
    2、module间的资源文件merge后,生成过多的R文件,处理过么?如何处理?
    https://yuweiguocn.github.io/android-r-inline/
    https://juejin.cn/post/6916431393648017421
    https://www.wanandroid.com/wenda/show/8735
    https://www.wanandroid.com/wenda/show/9067
    https://www.wanandroid.com/wenda/show/9088
    https://wanandroid.com/wenda/show/9974
    3、Android项目中都包含哪些资源?apk打包流程。apk解压后都包含哪些资源?R文件打包后生成的文件是哪种?
    4、dex文件结构了解过么?为何会有65535的限制?mutildex技术了解么?这项技术的目的是什么?

    Activity等四大组件,Application,进程保活等Android相关问题

    1、application中持有静态的用户信息,有何缺点?如何改进?
    http://zmywly8866.github.io/2014/12/26/android-do-not-store-data-in-the-application-object.html
    2、Application启动流程
    https://www.jianshu.com/p/03ec8203919e
    3、讲一下Activity的TaskRecord,也就是四种启动模式。activity启动模式:standard、singleTop、singleTask、singleInstance。taskAffinity,allowTaskReparting,常见应用场景。
    https://www.jianshu.com/p/94816e52cd77
    https://www.jianshu.com/p/3b9519f64db1
    4、启动模式及其用法。A应用的A1页面启动B应用的B1页面,A1和B2都是standard模式,B1启动后B1在那个任务栈,按下back键后显示那个页面,再按一次back键呢? A1,退出A应用。
    5、Activity的onSaveInstance方法何时调用?它跟onPause、onStop的调用顺序如何?
    https://wanandroid.com/wenda/show/13906
    6、Activity A启动Activity B,调用顺序。最后Activity A的onStop一定会调用么?
    https://www.jianshu.com/p/b1ff03a7bb1f
    7、ActivityA启动了ActivityB后,两个Activity的生命周期是怎样的?
    8、activity生命周期。A启动B,生命周期;B回到A,生命周期
    9、Activity生命周期,按Home按键后的生命周期?
    10、Activity实现了一个Lifecycle接口,有了解么?
    https://blog.csdn.net/liuhe688/article/details/6733407
    https://blog.csdn.net/weixin_43589682/article/details/97030740
    11、startActivity方法是异步的么?同步的。
    12、Activity启动流程:AMS、zygote、ApplicationThread之间交互;oneway特性(server端不阻塞和client端串行化),非oneway的情况有哪些?oneway和非oneway了解么?举例说明
    https://www.jianshu.com/p/0b22194b131c
    https://mp.weixin.qq.com/s/Jc2mrxeMVTJXudoPx5K4-w
    13、Activity和Fragment的生命周期;Fragment#onHiddenChanged是生命周期方法么?如何触发?
    https://mp.weixin.qq.com/s/WWNIkhptHnXYZUlKaQO_Yg
    12、Activity和Fragment的通信方式;系统为何会设计Fragment#setArgument方法。
    5、Android里面进程间通信方式,ContentProvider可以用file实现么?
    5、ContentProvider具体实现。ContentProvider启动流程
    https://www.jianshu.com/p/3c81df444034
    https://mp.weixin.qq.com/s/jhVzFa6DatRNK9anuDoSUA
    https://www.jianshu.com/p/7a6b786ba728
    2、通知的类别
    3、为何需要进程保活?如何做?进程优先级
    https://www.jianshu.com/p/53c4d8303e19
    https://www.jianshu.com/p/e43d52507ac7
    https://www.jianshu.com/p/2e01569f8ba8
    7、本地广播为何效率高?LocalBroadcastReceiver实现
    https://www.jianshu.com/p/a842432a4fc2
    https://www.jianshu.com/p/9a1741afc2e0
    ③postDelay(1s)是如何保证1s时间执行的?
    12、SharedPreference的apply和commit区别;apply会不会导致ANR;SharedPreference的替代方案
    https://www.jianshu.com/p/4025d02a8380
    8、Parcelable和Serializable本质区别,不要说用法,说原理。
    https://www.wanandroid.com/wenda/show/9002

    Flutter

    2、flutter的生命周期管理?讲讲做过的flutter项目。flutter的路由管理方式。除了默认的两种路由方式,有没有考虑过记录路由状态?

    JetPack

    Jetpack AAC完整解析

    Native

    程序员的自我修养 c程序在内存中的状态
    Android C++ 高级编程-使用NDK JNI
    安卓NDK API
    安卓源码

    反射hook技术,aspectJ技术,动态代理技术,ASM

    ASM使用
    https://blog.csdn.net/lingjianglin/article/details/105614948
    https://blog.csdn.net/qq_23992393/article/details/103677719
    https://www.jianshu.com/p/a2d7565945d8

    ARouter

    https://juejin.cn/post/6895710601079685133
    https://juejin.cn/post/6895712042917838861
    优化建议
    https://juejin.cn/post/6847902225239539720
    https://juejin.cn/post/6844904182982377480

    OKHttp

    面试题

    https://mp.weixin.qq.com/s/Q6bDLQdEBzaRUUe7oYAXkg

    加固

    https://juejin.cn/post/6844904176070164488

    架构

    如何构建Android MVVM 应用框架

    相关文章

      网友评论

          本文标题:2021年《学习》

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