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

一、前言

从16年毕业至今,就职过两家公司,大大小小项目做了几个,非常感谢我的两位老大,在我的android成长路上给予我很多指导,亦师亦友的关系。

从年前至今参加面试了很多公司,也收到了几家巨头的offer,还有其他公司的。总结下经验,也是对过去的一个回顾和总结吧。

一、简历

网上有很多对程序员简历的一些指导,这里就不重述,大家可以搜下网上其他大神的总结,结合自身情况修改下。我有几点建议:

1.尽量不要花哨, 程序员和设计师或者产品运营还不一样,我们的简历成功与否决定权还是在技术面试官那,而他们看重的是你的项目经验内容和技术等描述。

2.技能描述这块尽量只写你懂得而且理解深刻的, 可以适当加入一些新技术或流行框架,不过这块需要理解,没来得及看源码的可以看看大神们对它的总结,网上一大堆。

3.项目经验这块尽量加入关键词, 比如使用了什么技术、用到哪些设计模式、优化数据对比、扩展总结之类的。而非一味地介绍这个项目内容(那是产品经理的描述),比如性能优化这块,分为UI性能优化、内存优化、数据库优化、网络优化、耗电优化等等。可以从

1.如何发现问题,2.怎么解决问题,3.解决效果对比,这几个方面去描述。举个简单例子——UI优化,可以从 UI出现什么问题(卡顿不流畅),怎么查找问题(手机开发者权限>GPU过度绘制 发现层级问题,TraceView CPU使用情况分析),怎么解决问题(降低层级、自定义View绘图出现问题等),解决问题后性能再次对比。

二、技能储备

Android开发基础知识总览
一、基础

0.java语言和IDE

1.APP静态结构、配置( Manifest xml)与应用资源

2.APP入口及其生命周期

3.四大组件及其生命周期

1) Activity/ Fragment:界面管理调度、与用户交互、业务逻辑实现

2) Service:长时间在后台执行任务

3) Broadcastreceiver:事件监听和消息传递

4) Contentprovider:进程间传递数据的统一接口

4.线程与异步机制(java, android)

二、显示

5.Ui(控件、事件处理)

  • 窗口、视图
  • 简单的基控件
  • 复杂的组合控件
  • 动画
  • 事件及其传机制
三、存储

6.数据存储

  • Sharedpreferences
  • Properties (java)
  • File (java )
  • Sqlite Database
四、通信

7.序列化与消息传递和数据共享

  • 序列化:用于对象的持久化保存和传递普通类之间传递消息(java)

  • 线程间传递消息(异步java, android)

  • 组件间( 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时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!

最后总结

最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。

最后再分享一波,这些年我整理收集的大厂面试题合集

大厂面试题(秋招,以及金九银十我和各位伙伴分享整理)

之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

面试技巧

三份大厂高频面试题+面试指导1971页 合集目录

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,【点我的GitHub可以看到全部内容】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值