阿里P8大牛教你建立自己的知识体系,2020 Android高级工程师技能知识新储备!

38 阅读6分钟
  • 组件间( Activity/Fragment/Service)传递消息:

  • Intent Handler BroadcastReceiver EventBus(第三方框架)、 Binder, Messenger.aidl

  • APP间跨进程)传递消息:

ContentProvider, AIDL. Messenger. BroadcastReceiver .Intent8网络通信

8.网络通信 http ( java )socket ( java )websocket(java)

五、高级

9.多媒体

图形图像

  • 2D: android.graphics android. graphics. drawable

  • 3D: android. opengl

音频: android. media xxx

  • 音采集: Mediarecoder, Audiorecord

  • 音放: Mediaplayer, Soundpool, Audiotrack, Ring Tone

  • 频偏解码: Mediacoder

  • 控制音量和声模式: Audiomanager, Audioservice及 Audiosystem

  • NDK API: Opensl ES

视频: android. media. xxx, android. appwidget xxx

  • 视频放: ACTION VIEW, Mediacontroller+Videoview, Mediaplayer+ Surfaceview

  • 视频录制 Mediarecoder

  • 视频编解码 Mediacoder+ Media Format

  • 音视频分离/混合: Mediaextractor/ Mediamuxer

10.常用硬件组件

  • GPS android. location

  • 相机: android hardware. camara

  • 传感器(加速度计。): android hardware sensor

  • 蓝牙: android bluetooth、 android. bluetooth.le

  • NFC: android nfc

11.特色功能

注解通知一账号管理, App Widget.、应用内索通话/信/件/联系人处理、语识别、手势识别.指纹识别,人脸别

12.试与试

六、补充延伸

13.JNI与NDK

14.常用设计模式

15.代码范和优化

16.多语、适配和本容

17.代看、加和热复

18.应用名与,发布

七、重点知识合集

1.360°全方面性能调优

2.kotlin从入门到精通

3.Android框架体系架构

4.Flutter技术进阶

5.NDk模块开发

6.架构师筑基必备技能

7.设计思想解读开源框架

8.微信小程序

已收集整理在了我【GitHub】里,觉得不错的可以点个star!

面试经验分享

阿里巴巴

一面

1:插件化。启动activity的hook方式。taskAffity。

2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称

3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。阻塞是怎么实现的?为什么不会阻塞主线程?

5:求二叉树中两个节点之间的最大距离。

6:206含义,未修改资源是哪个,302含义,301含义

7:多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题?

8:动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理

9:Application和Activity在Context的继承树上有何区别?二者使用上有何不同?

10:任意一颗二叉树,求最大节点距离

二面

1:设计一个日志系统。

2:内存泄露的分类。怎么查看内存泄露的问题

3:touch事件源码问题。

4:组件化的问题。module和app之间的区别。moduler通信是如何实现的。

5:native奔溃的日志采集,怎么处理?

6:注解实现一个提示功能:如果int的值大于了3需要提示。

三面

1:介绍下flutter的启动流程

2:介绍下flutter与weex的区别

3:组件化介绍一下

4:webview中与js通信的手段有哪些?

5:介绍下flutter_boost的原理

小米

一面、二面

1.介绍一下binder和原理

2.measure layout draw流程,滑动冲突

3.常用的多线程工具类。blockingqueue ,concurrenthashmap,信号量,countdownlatch,cyclicbarrier,exchanger等,stringbuffer

4.stringbuilder 和stringbuffer区别

5.lock和syncrognized原理区别,适合什么场景。

6.实现生产者,消费者

7.handler原理,是如何实现延时的。

8.一个activity启动另外一个activity的生命周期。

算法题:

1反转链表

2.归并排序

3.快速排序

4.feiboqiena数列

5.二分查找

6.两个队列实现栈

7. 两个栈实现队列

8.判断链表是否成环,找到成环的交点。

字节跳动面试

一面

1:插件化。启动activity的hook方式。taskAffity。

2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称

3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。阻塞是怎么实现的?为什么不会阻塞主线程?

5:求二叉树中两个节点之间的最大距离。

6:206含义,未修改资源是哪个,302含义,301含义

7:多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题?

8:动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理

9:Application和Activity在Context的继承树上有何区别?二者使用上有何不同?

10:任意一颗二叉树,求最大节点距离

二面

1:设计一个日志系统。

2:内存泄露的分类。怎么查看内存泄露的问题

3:touch事件源码问题。

4:组件化的问题。module和app之间的区别。moduler通信是如何实现的。

5:native奔溃的日志采集,怎么处理?

6:注解实现一个提示功能:如果int的值大于了3需要提示。

三面

1:介绍下flutter的启动流程

2:介绍下flutter与weex的区别

3:组件化介绍一下

4:webview中与js通信的手段有哪些?

5:介绍下flutter_boost的原理

四面

1:适配器和装饰模式各自特点和使用场景

2:视频编解码是怎么做的

3:三色球排序

最后

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。 简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。 大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!

最后总结