==

作者: kai_w | 来源:发表于2020-06-15 17:58 被阅读0次

    撸这篇文章不会透漏任何楼主面过的任何一家公司,只从面试的战略思维上去引导诸位如何准备面试。

    最近刚入职,在忙找房子搬家的事,端午节会更新第二波

    26、7岁时,您静不下心来读书看文章,到了30岁,你还风吹而树不止,讲道理,这篇文章您瞅瞅就行,走好!

    个人整理不代表所有,批评乐意接受,喷子绕道而行!

    持续画图中,我觉得最好的记忆便是图形记忆,画图很简单,如何画的别人也理解很难...

    面试前你该准备什么

    • 购买《深入理解Java虚拟机》书籍
    • Java锁机制的深入了解
    • Java线程池
    • Java线程间通信
    • Java HashMap
    • Android Handler机制的源码研究透彻
    • Android Binder机制
    • Android Activity Window之间的关系
    • Android View绘制流程
    • Android 事件分发
    • Android nested scroll原理与 behaviour 实现
    • Android冷启动解读
    • Android垂直同步与缓冲Buffer
    • 第三方框架retrofit、okhttp、rxjava、leakcanary、Tinker等源码阅读。
    • java常用设计模式

    本片文章会从以上几个点去分析面试中遇到的一些问题!

    《深入理解Java虚拟机》

    这本书目前我只阅读完了了三个章节,第二章节(自动内存管理),第三章节(垃圾回收机制),第七章节(类加载机制)... 这几个章节我不可能在这篇文章中具体体现出来,但楼主只花费了1个礼拜不到的时间就阅读完毕了,并对自己以前的一些错误认知进行了修复。

    1. 自动内存管理

    下面是知识点,带着脑子去读

    • 栈、堆、方法区、本地方法区、程序计数器 这些jvm的内存布局概念与它们内部分别存储了什么数据
    • class文件头信息中Mark World 需要重点理解
    • jvm 的内存模型,工作内存与主内存
    • jvm如何分配一个对象的内存(为第七章做接入准备)
    • 直接指针与句柄
      ...
      带着这些疑惑去看第二章,你会收获较多,接下来第二章的内容我会用一张简短的图来表示。
      待补充。

    2. 垃圾回收机制

    下面是知识点,带着脑子去读

    • jvm如何判断一个对象为垃圾的
    • GCROOT集合
    • jvm 堆区的对象回收
      • 青年代(eden,from,to)
      • 老年代
      • 持久代
    • jvm 在gc时,是如何回收垃圾对象的内存的
      • 标记清除法
      • 标记复制法
      • 标记整理法
        ...
        这个章节在面试过程中变得极其常见,特别是堆区对于对象的管理更是面试技巧中的一门艺术,也是面试中的加分项

    3. 类加载机制

    这个章节就比较有意思了,坑很多,但说实话,对于你对static这类的关键字会有更深入的了解!

    • 类变量和对象变量(对应类加载过程中的’准备‘和'初始化'阶段)
    • 类加载过程,以及每个过程做了什么
    • 双亲委托机制
      • BootClassLoader
      • ExtClassLoader
      • 应用程序类加载器

    ...

    4. 关于jvm的面试题有哪些

    • jvm 堆和栈有什么区别
    • jvm 方法区都存放了那些数据
    • 类变量和成员变量
    • static修饰的成员变量是否能在static静态代码块中进行赋值操作
    • jvm 分代收集理念(强引用,软引用,弱引用,虚引用),说出具体的区别
    • jvm如何判断一个对象是垃圾
    • gc 如何回收内存

    当你了解上面这些知识点的时候,你会发现,什么是内存抖动,什么事内存泄漏,而不是只是一个概念性原则的问题;为了能够对标阿里P6,面试者必须掌握这些知识,you can do it!

    Java锁机制的深入了解

    这个章节就比较有意思了,建立在你理解了Class 文件头信息Mark World的存储结构上

    • 原子性、可见性、有序性
    • volatile、synchronized、ReentrantLock之间的区别
      • 公平锁与非公平锁
      • 偏向锁、轻量锁与重量锁
      • synchronized是不是可重入锁
      • CAS锁和Monitor ACC_SYNCHORNIZED锁机制

    Java线程池

    • corePollSize->核心线程数
    • maxPollSize->最大线程数
    • Queue->线程队列
    • InvokeHandler->拒绝策略

    Java线程间通信

    • 线程通信有哪几种方式
    • 如何在一个线程当中等待其它子线程结束再退出当前线程(CountDownLatch)
    • 如何得到一个线程处理结果(FeatureTask)

    Java HashMap

    • 数据结构
    • bucket index相同的情况下如何获取key的value
    • 与ArrayMap的比较

    java常用设计模式

    Android Handler机制

    • Handler机制工作原理(Handler,Looper,MessageQueue是三者之间的持有关系以及如何sendMessage和dispatchMessage的)
    • Message 的obtain和你自己new 一个Message有什么区别
    • postDelay中的Runnable是如何参与到消息机制中的
    • postDelay delay效果是如何实现的
    • 如何将一条Message放入到消息队列的队首位置
    • Looper的block是如何实现的
    • Android主线程更新ui的几种方式
    • view.post 做了什么可以得到宽高
    • HandlerThread

    Android Binder机制

    • Binder机制的实现原理
    • Binder机制的数据传输(Parcelable和Serializable的区别)
    • AIDL
    • Handler的getMessenger

    我觉得Binder机制是必问的一个问题,那么在你了解ServiceManager 以及 Binder之间的关系后,另一个深入点的问题便是-> client 向 ServiceManager 注册service时,ServiceManager是如何工作的!
    呵呵,毫无疑问,这是大厂才会问的,回答出来了,我想最起码这是一个加分项。

    Android Activity Window->View绘制流程

    Android 创建view的流程

    activity的启动流程基本可以用一张图来解决,那么一张图很容易看明白,但其中蕴含的一些知识点是你应该所关注,映射出来的一些奇奇怪怪的问题比如:

    1. 为什么不能在子线程中更新ui
    2. 是否只能在子线程当中更新ui
    3. view.post 做了哪些事,以及为何某些情况不生效

    Android冷启动解读

    Android垂直同步与缓冲buffer

    第三方框架EventBus、retrofit、okhttp、RxJava、leakcanary、Tinker等源码阅读。

    相关文章

      网友评论

          本文标题:==

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