关于android:2022新鲜出炉Android面试总结附真题答案解析京东新东方货拉拉

38次阅读

共计 6273 个字符,预计需要花费 16 分钟才能阅读完成。

前言

从我的面试状况来看,不要认为技术面试过了就稳了,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)范型:的具体区别;在 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 中高级面试题汇总》的敌人能够点击这里收费获取!心愿这套笔记能够帮忙到大家,让大家在面试的路线上畅通无阻!

正文完
 0