{Android}-开发进阶大纲(持续更新~)

摘要

开篇之前,首先说一下,大神就别点进来了。小编只是尘世间一个迷途小开发,二流程序员。 这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+总结,最终拿到了自己喜欢公司offer(非一线大厂,但是薪资也涨了40%多,对我来说已经很满意惹)的故事。当然,大厂谁不想去呢?可是时间紧,生活压力大,计划赶不上变化。生活的真谛就是妥协而已。

前提

出来社会摸爬滚打三年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。(没办法,我也知道客观上应该努力啊555,可我主观上只想躺着刷B站~555)First,先列一下小编目前的客观情况:

  • 双非本科,非计算机专业。本专业是机械

  • 工作三年,都是小厂,小组最多没超过4个人

  • 算法基础一丢丢(翻书‘马冬梅’,合书‘什么梅’)

  • 英语水平半文盲

  • 懂一点应用层方面的音视频编解码知识

面试之前

首先我不建议频繁的跳槽,除非被逼无奈,频繁跳槽,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段时间你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会带来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。

如何准备

我是从4月接近中旬开始面试的,一直到5月底结束,整个面试周期差不多一个月左右的时间。这次面试采用的策略是以战代练,就是边面边复习。面试的话,主要是朋友内推,Boss和拉勾。但Boss的话,初期不建议把简历可见,我就在这方面吃了苦头(别提了都是泪)。接下来我将这一个月内我接触的知识点铺展开来,也给大家一点参考。

接下来我将这一个月内我接触的知识点铺展开来,也给大家一点参考。

**算法:**LeetCode,把链表、排序、树标签里所有简单类型的题目练一下手。特别是排序,冒泡、快速、二分、选择、归并一定要达到手写的水平!

**数据结构:**Java的HashMap——7和8的区别、ArrayList、LinkeList。Android的ArrayMap、SparseArray系列。还有阻塞队列ArrayBlockingQueue、LinkedBlockingQueue。HashMap的结构和细节是遇到最多,建议仔细看一下源码,一定要有自己的理解(划重点)。把HashMap如何存储、如何查找。hash碰撞,以及内存利用率这些问题理解一下

**设计模式和架构:**准备一些自己拿手的模式,在网上查一下资料。准备一些套话,关键词耦合,二次修改方便,外部不用关心内部实现等等。MVC、MVP、MVVM三种,起码要了解两种,并且能清晰明确的说出,两种架构间的优缺点。

我本身经历过一次MVC -> MVP的过渡,所以面试的时候就只提了这两种。MVVM没接触过,就实话实说没搞过,面试官也不会再问。千万不要打肿脸充胖子,没接触过就说不会就可以了。关键词:UI逻辑、业务逻辑、不影响对方的前提下修改、逻辑清晰,方便定位

**Android基础:**这个就很重要了,当然涉及面也相当广。四大组件,生命周期这个啥都不说了,直接冲就是了,基本都会问到。Handler、View绘制流程、事件分发,这些都是老生常谈。

**Android框架基础:**AMS,Activity的启动过程。Android绘制流程(这个看个人了,因为我简历上写了熟悉Canvas库,手动狗头)

**Java基础:**多线程、线程池、锁机制,这两个知识点问到的还挺多的。其他的包括,内存区域、内存泄漏、垃圾回收。。。(这些懂个概念即可,不深究)

简历

简历制作是一种学问,一份好的简历往往让人眼前一亮。同时简历要突出重点,

  • 技能特长 比如你自定义View好,那么就把View的相关技能写上,比如:View加载流程,事件分发,自定义属性,滑动冲突等等,如果视频方面强那么就相关的技能写上。尽量不要有精通,除非你真的“精通”。否则就是给自己挖坑。也不要写一些太过常见的技能,如果:了解Activity的生命周期。谁都知道的东西,没别要单拿出来。也不要太长或太短10-12个技能特长左右。宗旨在于表达的特点简单明了。其他的点大家在自己搓摩下。

  • 项目介绍 如果你是实习,那么你一定要有自己在大学项目,或是毕业设计,或是团队项目。如果是在职一定要有公司的项目。同时项目不宜过多2-3个即可,如果你有觉得可以在简历上写的前端或是后台的项目,那么会有很大的加分。同时项目介绍不要太过啰嗦,3-5行,突出架构,核心技术,主要功能与模块即可,同时写出自己在其中做了那部分内容。(这部分要写好,因为面试官很可能会问你,你开发中遇到的问题,难点,优化,协作,调试等相关问题)

  • 其他技能 如果有英语4.6级一定要写上,有github,个人blog一定要写上地址。这我就不用说了吧。

简历制作总结: 至于其他的对大家应该没有难度。同时适当的包装无可厚非,求职者想找个好工作,面试官想找个好员工。对方就像相亲一样。一定会把你的底摸个清楚的。如果相亲的时候的没问题,等孩子都有了那就晚啦。哈哈,我就是这个意思。包装的目的是为了增加HR的通过率。这样才会有面试机会,对我们这种渣渣来说,面试机会比面试通过与否更重要。因为面试邀请都没有,你准备有个P用。

最后我还是希望大家提高自己的实力,实力才是硬道理

面试

以上是一些复习的知识点,因为要准备的东西还是蛮多的。所以时间上的安排一定要灵活,我是早上复习Java基础,中午看Android,晚上复习算法和数据结构。有面试的话,就提前去了解一下公司的产品,去官网上冲一冲浪,下个APP玩一下。也算提前给自己一个心理准备。以下是一些面试题,供给大家参考:

  • RecycleView复用机制

  • RecyclerView的LayoutManager如何布局

  • 设计模式:观察者模式

  • APP启动优化

  • 注解原理

  • java内存模型

  • 内存泄漏处理;可能出现的内存泄漏问题

  • 性能优化如何做——这是一个比较泛的问题,主要从布局分析、绘制分析、内存优化几个大的方面去延伸,如何定位、如何解决,说出自己的理解和经验即可

  • 链表和数组比较

  • 死锁和多线程——因为自己说秃噜嘴了,提了一句死锁。就被问到了555,好惨。所以千万别装,不会就别提

  • 自定义view。要具体到在onMeasure里怎么处理,onLayout怎么处理

  • 矩阵原理,因为我说了我熟悉Canvas

  • 事件处理,事件分发。同学们,这道题基本必问。敲黑板!

  • 差值器原理

  • 线程池原理,涉及到阻塞队列

  • Kotlin,apply和let区别

  • AS如何检查内存泄漏——考察你的工具使用熟练度

  • canvas的绘制是如何实现的——硬绘和软绘

  • 遇到的印象最深一次的内存问题

  • 如何写一套图片加载库——考验你的综合能力

  • Bitmap的缓存,软引用、Lrucache。recycle如何实现

  • view的post如何实现

  • Fragment和View的区别

  • Http的请求方式,RestFul熟悉吗——网络我基本只知道一些概念

  • linearlayou 和relativelayou性能比较

  • MessageQueue 和message 的创建

  • 手写快速排序,手写二分查找

因为问题比较多,我主要写了比较常问的问题

还是那句老话,面试是一个双向考察的过程,面试官考察你,同时你也要考察考察公司。要真是不喜欢的话,工作做得也不开心,当然也不会长久。工作毕竟还是占据了生活中的大部分时间,找一个自己喜欢并愿意投入的工作对自己的成长也好一点。 同时,面试也是一个考察综合能力的地方。不要以为技术上准备的很充分了就万事大吉。在面试的时候,态度、分析问题的能力、自信度、人品这些都决定了你能否拿到offer。

面试细节

面试一般的时间是在两三个小时左右,作为求职者。我们要在这段时间内,将我们的价值展现给面试官和HR。就像推销产品一样,你得站在旁观者的角度思考一下,这个人值不值得我们买入(发offer),他(她)的性格怎么样,人品值得信任吗等等。站在这个角度想一下的话,有很多问题你自己就想通了。当然你考虑这些问题的前提是你的技术准备已经挺充分的了。

  • 自我介绍;准备一段两三分钟的自我介绍,挑一些有亮点的东西说一下。面试官也是人,你长篇大论五六分钟,他记住的点也不会太多。所以要精简,要学会提炼关键字。譬如:工作上偏重架构设计,技术上偏重技术实现(实现了什么牛逼的技术)

  • 语气腔调:这个也有必要练习一下(不要笑,这个很重要),你可以自己录音听一下,试试有没有一个合适的语速让别人能听清楚你说的话。还有说话要自信,不要结结巴巴,不会的东西就直接说没接触过就行了,切忌扭扭捏捏~~还有回答问题的时候,不要等面试官问完就立马回答。停顿个几秒钟作思考状(手动狗头),如果是特别特别熟的问题,就稍微顿一下,不要太流利。有些点可以适度说想不起来这个程度自己把握,挑一些不太重要的点,留给面试官补充,不然你各个问题回答如流,只会加速面试流程。说不定碰到一个轴一点的,就抛出一个史诗大问题给你。当然这个小技巧面试用一次就最多了,千万别乱用。。。

  • 离职原因:这个有的技术官不会问,有的会问。HR会比较看重这个问题,这个就自己斟酌吧。反正不要给人留下这个人很浮躁,不会在我们这里久留的印象就好了。

  • 技术思考:这也是一个很泛的点,要具象的话。就是你在项目中如何写你的代码,有的面试官会看重这个问题。这个嘛,就纯是看个人了~~~

最后

按照国际惯例,给大家分享一套十分好用的Android进阶资料:《全网最全Android开发笔记》。

整个笔记一共8大模块、729个知识点,3382页,66万字,可以说覆盖了当下Android开发最前沿的技术点,和阿里、腾讯、字节等等大厂面试看重的技术。

图片

图片

因为所包含的内容足够多,所以,这份笔记不仅仅可以用来当学习资料,还可以当工具书用。

如果你需要了解某个知识点,不管是Shift+F 搜索,还是按目录进行检索,都能用最快的速度找到你要的内容。

相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照整个知识体系编排的。

详细文档可以点我下载,记得点赞哦~

(一)架构师必备Java基础

1、深入理解Java泛型

2、注解深入浅出

3、并发编程

4、数据传输与序列化

5、Java虚拟机原理

6、高效IO

……

图片

(二)设计思想解读开源框架

1、热修复设计

2、插件化框架设计

3、组件化框架设计

4、图片加载框架

5、网络访问框架设计

6、RXJava响应式编程框架设计

……

图片

(三)360°全方位性能优化

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

……

图片

(四)Android框架体系架构

1、高级UI晋升

2、Android内核组件

3、大型项目必备IPC

4、数据持久与序列化

5、Framework内核解析

……

图片

(五)NDK模块开发

1、NDK开发之C/C++入门

2、JNI模块开发

3、Linux编程

4、底层图片处理

5、音视频开发

6、机器学习

……

图片

(六)Flutter学习进阶

1、Flutter跨平台开发概述

2、Windows中Flutter开发环境搭建

3、编写你的第一个Flutter APP

4、Flutter Dart语言系统入门

……

图片

(七)微信小程序开发

1、小程序概述及入门

2、小程序UI开发

3、API操作

4、购物商场项目实战

……

图片

(八)kotlin从入门到精通

1、准备开始

2、基础

3、类和对象

4、函数和lambda表达式

5、其他

……

图片

好啦,这份资料就给大家介绍到这了,*有需要详细文档的小伙伴可以点我下载~~~~*

PI操作

4、购物商场项目实战

……

[外链图片转存中…(img-fFdffmue-1624361648637)]

(八)kotlin从入门到精通

1、准备开始

2、基础

3、类和对象

4、函数和lambda表达式

5、其他

……

[外链图片转存中…(img-9VJXudwV-1624361648637)]

好啦,这份资料就给大家介绍到这了,*有需要详细文档的小伙伴可以点我下载~~~~*

你可能感兴趣的:(Android,移动开发,面试,android,移动开发,程序人生,面试)