前言

从我的面试状况来看,不要认为技术面试过了就稳了,hr会卡人(京东),审批会卡人(货拉拉),所以,面试的时候,要多面试几家,不要一棵树吊死。

1.技术面试,通过 9家

千喜鹤(2面),广州星域(3面),宝沃(2面),京东北辰(4面),京东物流(3面),松果出行(2面),新东方在线(4面),货拉拉(3面),APUS(2面)

2.技术面试,未通过 3家

探探(一面),小红书(一面),头条(二面)

3.hr或审批,未通过 3家

京东北辰(商详组):四面技术通过,5面hr回绝,非学历背景起因,是hr面试踩坑了,惋惜了。

APUS:2面技术没问题,然而hr回绝(如果本人过后的工资流水高的话,公司背景好点的话,我就大概率过了,不惆怅,hr看人也看背景,了解)

货拉拉:3面技术+hr面试没问题,然而审批回绝,很罗唆,说有多位候选人了,就不思考我了(谈薪资阶段咔嚓掉了,比拟情意的一家,冤屈呀)

4.通过后集体回绝,2家+

截止1月16日写博客,曾经收到1家offer并且表态入职(新东方在线,给的薪资比较满意,左近还有好几个同学能一起玩),所以再有新的offer的话,我就不思考了。目前曾经提交流水和冀望薪资,还在审批的有3家(京东物流,松果出行,北京宝沃汽车),不过我大概率会回绝或者让他们回绝了。

千喜鹤,集体回绝了(12月6号周六跑去面试的,2面技术通过,hr和领导太墨迹,就回绝了)

广州星域,集体回绝了(12月25号,现场技术3面,许可的薪资要求,刚出门就打电话说减2K能力进,果决回绝)

面试题 总结

说完集体的面试状况,进入正题,上面是我面试这几家的所有面试题,有很多反复的面试题总结,所以,就不依照公司排序了。

未通过的几个面试题

蕴含京东,头条,探探,小红书没答好的几个问题
京东
(1)如何设计模块,组件,sdk,如何思考
(2)说说你我的项目的架构,为何这么设计或这么思考
(3) 说说内存透露,越多越好
(4) 说说你的技术难点,如何解决,如何思考
(5)apk平安,你如何思考
(6)act+fragment的齐全生命周期(不是单个说哦)
(7)京东北辰:recyclerView源码,必会,包含缓存如何实现,哪几个缓存,运作流程等;各种notifyXX的原理,触发哪些重绘;如何实现下半局部item不挪动,上半局部的item高度变动的实现?

探探比拟好的面试题

(1)手拖动View,手松开后实现一个泡泡破裂的动画成果(实质是view事件散发机制+动画选型,散发机制哪个办法解决什么参数,之后怎么触发动画成果等,问的灰常具体,吐了)
(2) 自定义view相干,invalidate,postInvalidate,requestLayout,深刻的说说framework层的流程原理
(3)kotlin 协程深层原理如何实现的
(4)dcl是否线程平安?哪一块出问题,为什么volatile能实现避免指令重排,指令级别如何实现的,对象的创立过程等(多家都问了,很深刻)

头条二面失败问题

(1)Permission标签和uses-permission标签的区别,设置Permission标签,如何保障其余过程app不会拜访到act界面?
(2)多手势的具体实现
(3)转场动画具体实现
(4)画中画具体实现,悬浮窗口具体实现
(5)aidl binder异步调用具体实现
(6)如何实现定时工作
全是具体实现,我就呵呵了。

小红书

(1)concurrentHashMap 如何加锁的
(2)measure参数详解,view设置wrap不起作用
(3)Bind service,如何实现保活
(4)两个过程act,如何放慢启动速度
(5)性能优化(面试官老插嘴,都说不上话)
(6)Eventbus如何实现线程的切换
(7)jetpack的Navigation的xml援用,在什么时候调用的?
(8)Inflater.inflate如何实现xml转java的(framework),办法中的各个参数含意。

通过的面试题,按集体梳理后列举

根本问题

(1)范型:<super>和<extends>的具体区别;在java编译过程中的实现原理(范型擦除);逆变协变(范型子类的转换问题)
(2)性能优化(多家都问了,很大的一个技术专题,靠本人总结),集体笔记总结了7块:

  • 启动速度优化
  • 布局优化
  • 代码优化
  • 内存优化(oom anr)
  • app瘦身
  • 网络优化
  • 电池应用优化
  • 平安优化
  • 存储优化

(3)ANR:给个规范的答复流程:anr的几种起因(深刻到源码,讲讲AMS.appNotResponding()的流程,你就腻害了),剖析工具等怎么剖析定位到具体起因。
(4)内存溢出(OOM)+内存透露的区别,剖析工具或者开源leakcanary,优化计划,可能会问你,handler怎么导致的oom,如何优化等
(5)事件散发机制+嵌套滑动机制原理,区别
(6)handler相干(给的很全了):流程;threadLocal+外部原理(threadLocalMap如何实现的,key,val是啥,弱援用,是否引起内存泄露等);loop()为什么不阻塞主线程;什么是同步屏障(屏障音讯);什么是闲时机制(IdleHandler)+作用;音讯队列的音讯排序程序(delay如何实现的);Message.obtain原理(用了那种设计模式:享元);实现子线程的handler流程;handler内存透露及解决方案;handler和looper,MessageQueue的关系(几个handler几个looper,handler的msg能够再别的handler的handleMessage办法上解决吗);扩大:子线程和主线程通信,有哪些计划。
(7)自定义View相干:
framework流程;
mesureSpec的作用;
自定义extends View时,手动解决wrap_content时的坑:间接继承View的控件须要重写onMeasure办法并设置wrap_content时的本身大小,否则在布局中应用 wrap_content就相当于应用match_parent;
postInvalidate()和invalidate()和requestLayout()的区别(本人总结下吧,外头有很多点要记住);
在Activity的onCreate办法中获取控件宽高的几种形式;
View的Draw(Canvas canvas)的绘制流程;
(8)京东一家问了: io流(字符流,字节流,file和其它流的区别),流如何解决(try catch,流敞开等)
(9)dialog为什么不能用application创立,底层原理(window token)
(10)service面试,生命周期,bind和start的区别,保活等
(11)设计模式概念,设计准则(SOLID),我的项目中用到了哪些设计模式,开源我的项目xxx用到了哪些设计模式,代理模式,动静代理如何实现?单例模式中,动态外部类单例,是final润饰的吗?
(12)线程池,问参数,问keepalive参数作用,源码如何实现外围线程的运行?绝策略?
(13)如何实现https抓包;如何实现网络申请平安?避免他人抓包或申请。
(14)类加载机制原理
(15)jetpack,livedata粘性原理,源码如何实现生命感知,旧数据bug如何修复的?
(16)jetpack,navigation的xml,在哪个步骤被加载执行的?(很难呀)
(17)binder相干,aidl实现原理,如何实现回调,如何实现binder异步调用(头条)
(18)contentprovider的应用,如何实现跨过程通信的?流程?
(19)mvc,mvp,mvvm
(20)jni开发:动静注册流程
(21)异样捕捉(问app的uncaughtException)
(22)act的四种启动模式
(23)fragment和act的转场动画,用android.app和v4包的区别(头条)

java根底问题/算法/数构/jvm

(1)static润饰,final润饰,作用
(2)java面向对象特色(封装,继承,多态),具体如何实现
(3)hashmap,linkedhashmap,concurrenthashmap,set,都问了,1.7/1.8的各种区别,很细节很细节很细节,具体不说了
(4)synchronized,volatile,reenterLock,AQS,各种区别,static润饰synchronized办法的区别
(5)字节码角度说,synchronized底层原理(对象头,锁降级过程,自旋锁)
(6)反射,如何批改final润饰的参数(类反射)
(7)java内存模型,java运行内存模型及作用,G1回收机制,VM栈的执行流程,指令相熟吗?
(8)四种援用的区别
(9)线程的状态有哪些?
(10)equels和hashcode的区别,再set中如何实现?效率问题?为什么要重写等
(11)https/http区别,tcp/ip和udp区别,三次握手四次挥手,货拉拉问了tcp底层原理+如何保障tcp传输可靠性(校 序 重 流 拥)
(12)k步长的链表反转
(13)二叉树中序遍历的两种实现
(14)一个数的开平方算法
(15)数组中,成对呈现,只有一个独自呈现?如果有两个独自呈现?
(16)链表反转有几种实现?(栈,数组等)
(17)AB线程打印

第三方框架题

阐明,简历上写的第三方框架,肯定要会,而且要看源码

(1)Retrofit(每家必问),看源码+具体总结
(2)Okhttp(每家必问),看源码+具体总结
(3)Rxjava(高频),会问上游线程调度和上游线程切换,背压等
(4)LeakCanary(高频):和OOM一起问,问原理
(5)Glide(高频):缓存实现原理,流程(linkedHashMap)
(5)ORM数据库:ROOM,DBFlow,DaoGreen:
应用数据库和应用文件缓存的区别
(6)MMKV(10家问了一家)

framework/我的项目/框架/总监级别问题

(1)冷启动流程,设计哪些过程,
(2)Act,window,View的区别,源码介绍下
(3)AMS的作用
(4)sdk设计,你如何实现
(5)埋点sdk,你如何实现:
埋点办法,存储,上传,线程池,异样等
(6)组件化,模块化,你是如何实现的,组件通信如何实现的
(7)插件化(不会,只看了腾讯的shadow),原理
(8)我的项目介绍,重构,迭代等,问你在我的项目中做了哪些,遇到了哪些问题,如何解决的?(这块很重要,要有亮点,如你负责的这个模块,达到什么成果;或者你的重构,能解决什么痛点;或者你解决的问题,能给公司带来什么收益等,我依照这三块分类说的,成果不错)
(9)你的我的项目上,性能优化如何实现的,代表的实例说一个,异样如何监控的等
(10)平时如何学习技术的?你和他人比,有哪些强项?(学习能力,产品sense,总结习惯等,要突出亮点,我的亮点就是我的项目应急能力,学习总结习惯和开源奉献,或者你的答复,也要将总监向这块疏导,突出你的亮点)
(11)简历上写 有较强的编码能力和独立思考能力,重视代码标准和架构重构,我的项目上如何体现的?
(12)技术问:我这没问题了,你有什么要问的吗

如果一面二面,感觉没戏了,能够争取下,说说集体技术能力和劣势
如果大佬/总监/小组长级别终面,能够适当问问技术栈,技术之类的问题

HR面试问题

(1)问毕业,工作经验,我的项目经验等,问上家公司工作气氛,问到职起因,问你的强项和弱点(千万别说性情上的,性格开朗都不行,只说技术弱点),最好筹备好一套说辞,都是有技巧的,小心避坑
(2)问冀望薪资:
集体最想说的一块了,公司股东规定不涨薪,在公司2年多没涨薪,要高薪很艰难,所以好几家技术面试通过的,最初hr都卡住了。守到云开见明月,多面试几家,机会总会来。我保持集体的冀望不斗争,终有公司看中我的集体技术能力和人品(5年教训,折算我的冀望涨幅达73%)。很感激新东方给了集体机会,我会致力回报滴!乌拉!
(3)总监也会问/hr也会问:你的集体短期指标和长期指标
(3)还有什么要问的吗?
hr问的这个这个问题,最好问她善于的,如人事,薪资,待遇,团建等等

其余面试题(略杂)

(1)kotlin:语法糖等
(2)为什么用kotlin,和java比的劣势?性能劣势?
(3)flutter问了根底

非科班的成长心得

不说废话,只说关键点:

(1)要有技术总结。技术点总结、遇到的坑总结、大技术点专题总结(笔记+代码示例),整顿成笔记,时常翻看(写博客也须要用笔记先总结好)
(2)有笔记习惯。记录技术,异样,新技术,复盘总结,日报总结,学习打算,好的点子等,所有认为可总结的技术点,都做成笔记。前期翻看时,能够减少本人的思考角度维度,为日后做外围岗位做筹备。我这个习惯曾经放弃了2年多,以后能实现跳槽,这个习惯给了我最大的反对,让我瓜熟蒂落。
(3)看源码学习。好奇心多一些,当成享受,工夫长了,你就自然而然的厉害了。
(4)如果对公司有冀望,做事要负责实干,领导的刁难或严苛,要学会皮实应答,说不定是搀扶你上位的考验

最初

这里就给大家分享一份字节大佬整顿的《2022Android中高级面试题汇总》,帮忙大家零碎的梳理中高级Android常识,更好的备战年后的金三银四!

Java根底

1.动态外部类和非动态外部类的比拟

2.多态的了解与利用

3.java办法的多态性了解

4.java中接口和继承的区别

5.线程池的益处,详解,单例(相对好记)

6.线程池的长处及其原理

7.线程池的长处(重点)

8.为什么不举荐通过Executors间接创立线程池

9.不怕难之BlockingQueue及其实现

Android根底

1.Activity知识点(必问)

2.Fragment知识点

3.Service知识点

4.Intent知识点

性能优化篇

1.启动优化

2.内存优化

3.绘制优化

4.安装包优化

 源码流程篇

1.开源库源码剖析

2.Glide源码剖析

3.Android面试题:Glide

4.day 20 面试题:Glide面试题

5.聊一聊对于Glide在面试中的那些事

6.面试官:简历上如果写Glide,请留神以下几点...

7.Glide OOM问题解决办法汇总

8.OkHttp源码解析

9.okhttp连接池复用机制

10.okhttp 流程和优化的实现

11.一篇让你受用的okhttp剖析

12.OkHttp面试之--OkHttp的整个异步申请流

......

最新面试题合集

1.android事件散发机制,请具体说下整个流程

2.android view绘制机制和加载过程,请具体说下整个流程

3.android四大组件的加载过程,请具体介绍下

4.Activity的启动模式

5.A、B、C、D别离是四种Activity的启动模式,那么A->B->C->D->A->B->C->D别离启动,最初的activity栈是怎么样的

6.Activity缓存办法

7.Service的生命周期,两种启动办法,有什么区别

8.怎么保障service不被杀死

9.动态的Broadcast 和动静的有什么区别

10.Intent能够传递哪些数据类型

11.Json有什么优劣势、解析的原理

12.一个语言的编译过程

......

因为本套笔记干货内容过多,没有方法一 一展现,须要这份完整版《2022Android中高级面试题汇总》的敌人能够点击这里收费获取!心愿这套笔记能够帮忙到大家,让大家在面试的路线上畅通无阻!