金三银四2022 Android面经实录

Posted Android技术之家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了金三银四2022 Android面经实录相关的知识,希望对你有一定的参考价值。

1、项目经历,业务,难点

2、Java基础,JVM,集合原理

3、android基础,View体系,View绘制流程,事件分发,屏幕刷新,动画原理

4、常见三方库原理

5、Jetpack

6、Android Framework

7、算法

8、Kotlin

方法重载问题,泛型相关word常用的三方库原理,随便挑一个说换肤原理动画有哪几种,属性动画原理,vsyncView绘制流程短时间内多次调用requestLayout,哪些View会重绘冷启动优化包体积优化插件化原理,startActivitymvc,mvp,mvvmrequestLayout流程算法1:反转单词算法2:环形链表求环入口节点,不准用快慢指针,O(1)空间复杂度,O(n)时间复杂度,可修改链表节点的指针和数据。不能在链表节点中新增属性

公司8:

  • 说一下项目的架构,哪一块是你主要负责的?说一下是怎么设计的livedata原理handler原理组件化传递大数据单例里面的数据线程安全内存优化,卡顿优化,冷启动优化怎么检测已发生了内存泄露的对象?不知道那个对象是谁协程和RxJava原理,区别

    公司9:

  • view绘制流程事件分发流程,外部拦截法,内部拦截法Kotlin协程,协程原理,怎么开协程,怎么切线程viewpager内部view高度不一致,怎么解决startActivity流程启动优化,包体积优化livedata原理gradle 马甲包换肤原理协程状态机let和also区别mvvm

    关注我获取更多知识或者投稿

    2022年 (金三银四) 跳槽涨薪必备,五年 Android 高级开发大厂面经总结

    前言

    都说 IT 行业跳槽越多涨薪越快,这也导致一些开发者希望通过跳槽来提高自己的薪资。

    互联网开发行业是一个发展迅速的行业,到了现在整个行业已经进入了一个饱和的状态,从事互联网开发的人太多了,特别是 Android 开发,不像刚起步的时候,只要你懂一些技术就可以找一份好的工作,所以说现在想靠跳槽来提高自己薪资还是有一些难度的。

    今天就分享一下我一位有着五年 Android 开发经验的朋友,跳槽的面试经历。

    我这位朋友有着五年 Android 开发经验,在上一家公司待了两年,对自己的薪资不满意,觉得薪资跟自己的能力不匹配,于是就辞职了。

    按理说他有五年 Android 开发经验和职场经验,找工作对他来说应该不是什么很困难的事情,可是偏偏事与愿违,他连续面了十几家公司都没有过,要不就是自己没看上的,找朋友内推过大厂,结果简历直接拒了,自己投了几个大厂,也都是石沉大海。

    最后他静下心来总结了面试的问题,他分析几个面试不过的关键点:

    • 基础知识点不牢固
    • 对新的技术不是很了解
    • 对自己的职业规划不是很明确

    于是他花了两个多月的时间去巩固以前用过的知识,学习了解新技术,明确自己的职业规划,最后通过一过多月的时间拿到了自己心仪的 offer。

    总结

    一,找准目标,自我定位

    首先你先要有一个自我定位,要想明白自己想要啥,要干啥,这很重要。

    • 觉得自己的职场履历欠缺一段大厂经历。
    • 想去大厂做一些大型的项目。
    • 想进入一个大平台去寻找更适合自己的发展道路。
    • 想涨工资…

    无论是啥,反正你肯定得有个想法,这个想法会决定你愿意付出多少努力去争取。

    二,面试准备,方法建议

    有很多的同学,其实技术水平还可以,只是长时间做项目,很多基础细节略显生疏,导致面试过程有点断节奏。

    可是你要知道,面试官是第一次认识你,他不清楚你的技术水平,那他要怎样才能了解你呢?所以,基础那些东西还是需要时不时的复习一下,那些常用的面试知识点该刷是得刷一下。(下文会给大家分享一些面试知识点)

    但是那些框架,原理,启动流程,技术选型,设计思路绝对不是背的,这些就是考察你内功的时候了。

    有的同学可能会说:我背都记不住,你还想让我理解?

    参考建议:

    • 参考一些开源的项目,然后在自己的项目中去实操这些知识点。 思考他们的设计模式是否可以复用到自己的项目,用的主流框架是否可以移植过来,这一点不仅并行于你的工作,会对你的技术思维有很大的提升。

    • 现在主流的框架实现原理是什么,开始可以参考一些分析博客,最后把自己的理解整理成笔记。后续复习的时候也可以只看精华。

    • 设计模式可以针对性学习一下,不只是为了面试,自己项目里也可以用。

    • 新技术一定得与时俱进,没事就给自己项目整个技术升级,可能很多人会跟你说没啥用,公司都不用这些技术等等,无论你听到什么理由,这玩意你要信了,那就完了。

    • 整理一些高频面试题,算法题,每天只需要做几道就可以,不用多,慢慢就会有感觉了,很多题都是重复思想,不用太花精力去做那些难的。

    以上这个过程,不用太追求速度,只要按步骤坚持2个月,基本就能达到大厂面试的技术要求了。

    还有一个点,至关重要,那就是表达能力,很多技术同学都吃了这个亏,很多问题自己明明知道,但就是表达不出来,给面试官的感觉就是你不懂。

    • 提前准备一个有亮点的自我介绍;

    • 在你看那些框架原理的时候,需要注意一下那些技术点的关联性,在回答问题的时候,除回答以外,还需要引导面试官去问自己擅长的点,这决定你的表达是够有亮点,是否融会贯通,也是变被动为主动的关键。

    • 整理下自己项目过程中解决的难点,遇到的问题,挑战,以及解决方式,这个在大部分面试中都会被问到。

    三,面试复习,查漏补缺

    这里,给大家分享一份 Android 大厂中高级面试知识点汇总,内容包括:Java基础、Android基础、UI控件篇、网络通信篇、架构设计篇、性能优化篇、源码流程篇、新技术篇、面试篇九个章节,一共1932页。

    Java基础
    • 静态内部类和非静态内部类的比较
    • 多态的理解与应用
    • java方法的多态性理解
    • java中接口和继承的区别
    • 线程池的好处,详解,单例
    • 线程池的优点及其原理
    • 为什么不推荐通过Executors直接创建线程池
    • BlockingQueue及其实现
    • 深入理解ReentrantLock与Condition
    • Java多线程:线程间通信之Lock
    • Synchronized 关键字原理
    • ReentrantLock原理
    • HashMap中的Hash冲突解决和扩容机制
    • JVM常见面试题
    • JVM内存结构
    • 类加载机制/双亲委托
    Android基础

    (1)Activity知识点(必问)

    • Activity 启动过程全解析
    • Fragment 知识点
    • onSaveInstanceState 以及 onRestoreInstanceState 使用
    • 4onConfigurationChanged使用以及问题解决

    (2)Fragment 知识点

    • Fragment 的通信问题, 新建 Fragment 为何不要在构造方法中传递参数
    • 为什么官方推荐 Fragment.setArguments(Bundlebundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?
    • Androidx 下 Fragment 懒加载的新实现
    • Fragment全解析系列
    • Google-Fragment概览
    • Google-与其他Fragment通信

    (3)Service 知识点

    • Handler知识点(必问)
    • Android主线程阻塞处理及优化
    • 深入聊聊Android消息机制中的消息队列的设计
    • 深入理解MessageQueue
    • 你真的懂Handler.postDelayed()的原理吗?
    • Handler.postDelayed()是如何精确延迟指定时间的
    • Handler延迟消息执行机制,会阻塞吗?

    (4)Intent知识点

    • Android跨进程传递大内存数据
    • 数据存储
    UI控件篇

    (1)屏幕适配

    • Android屏幕适配和方案
    • Android 目前稳定高效的UI适配方案

    (2)主要控件优化

    • RecyclerView优化

    (3)事件分发与嵌套滚动

    • NestedScrollingParent & NestedScrollingChild
    • 动态化页面构建方案
    • 组件与布局
    网络通信篇

    (1)网络协议

    • 彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)
    架构设计篇
    • MVP架构设计
    • 组件化架构
    性能优化篇
    • 启动优化
    • 内存优化
    • 绘制优化
    • 安装包优化
    源码流程篇
    • 开源库源码分析
    • Glide 源码分析
    • Glide 面试题
    • 聊一聊关于Glide在面试中的那些事
    • 简历上如果写Glide,请注意以下几点…
    • Glide OOM问题解决方法汇总
    • OkHttp源码分析
    • Okhttp连接池复用机制
    • Okhttp 流程和优化的实现
    • OkHttp的整个异步请求流
    • HttpEngine中的sendRequest方法详解
    • OkHttp解析大总结
    • Okhttp任务队列工作原理
    • Android 网络优化,使用 HTTPDNS优化 DNS,从原理到 OkHttp 集成
    • Retrofit源码分析
    • RxJava源码分析
    • RxJava原理与源码分析

    新技术篇
    • 实战问题
    面试篇

    (1)开源文档
    (2)面试题合集

    • android事件分发机制,请详细说下整个流程
    • android view绘制机制和加载过程,请详细说下整个流程
    • android四大组件的加载过程,请详细介绍下
    • Activity的启动模式
    • A、B、C、D分别是四种Activity的启动模式,那么A->B->C->D->A->B->C->D分别- - 启动,最后的activity栈是怎么样的
    • Activity缓存方法
    • Service的生命周期,两种启动方法,有什么区别
    • 怎么保证service不被杀死
    • 静态的Broadcast 和动态的有什么区别
    • Intent可以传递哪些数据类型
    • Json有什么优劣势、解析的原理
    • 一个语言的编译过程
    • 动画有哪几类,各有什么特点
    • Handler、Looper消息队列模型,各部分的作用
    • 怎样退出终止App
    • Android IPC:Binder 原理
    • 理解Window和WindowManager
    • Bitmap的处理
    • 如何实现一个网络框架(参考Volley)
    • ClassLoader的基础知识
    • 插件化框架描述:dynamicLoadApk为例子
    • 热修复:Andfix为例子
    • 线程同步的问题,常用的线程同步
    • Asynctask和线程池,GC相关(怎么判断哪些内存该GC,GC算法)
    • 数据库性能优化:索引和事务
    • APK打包流程和其内容
    • 网络劫持的类型原理
    • 操作系统进程和线程的区别

    篇幅有限,只展示知识点大纲和部分内容截图,以上知识点已整理成文档,需要《2022年Android中高级面试题汇总》完整版(知识点 + 答案解析)的朋友可以扫描下方CSDN官方认证二维码,免费领取!

    以上是关于金三银四2022 Android面经实录的主要内容,如果未能解决你的问题,请参考以下文章

    金三银四你是否已准备好!这份阿里淘系前端-实习面经助你成功

    2022金三银四Android面试必备知识点:Android AMS/WMS/Binder/Hander

    阿里腾讯裁员,2022金三银四Android开发该何去何从?

    2022Android大厂面试题汇总,备战2022金三银四跳槽季。

    Android大厂面试必问Framework层面试题(展望2022,备战金三银四)

    2021金三银四Java大厂面试题来袭!面经解析