年后想跳槽找工作的,来看看这份Android 中高级面试题大全,面试建议+系统复习路线!

13、断点续传

14、Java 四大引用

15、Java 的泛型

16、final、finally、finalize 的区别

17、接口、抽象类的区别

18、从 java 容器类的设计讨论抽象类和接口的应用

19、synchronized 和 lock 的区别

四、Android 面试题

1、Activity 启动模式

2、Activity 的启动过程

3 、进程通讯

4、Android Binder 之应用层总结与分析

5、进程保活方法

6、从源码了解 handler looper ,messageQueue 思路

7、handler 如何实现延时发消息 postdelay()

8、Android 中为什么主线程不会因为 Looper.loop()里的死循 环卡死?

9、RxJava 原理及如何封装使用

10、okhttp 源码分析

11、retrofit 源码分析

12、LeakCanary 核心原理源码浅析

13、LruCache 使用及原理

14、ARouter 原理

15、注解框架实现原理

16、Android 如何编写基于编译时注解的项目

17、RxJava2+Retrofit2+OkHttp3 的基础、封装和项目中的使用

18、Rxjava2.0+Retrofit+Okhttp(封装使用)+MVP 框架搭建

19、Android 插件化和热修复知识梳理

20、Android 开发中比较常见的内存泄漏问题及解决办法

21、如何检测和定位 Android 内存泄漏

22、图片占据的内存算法

23、为什么图片需要用软引用,MVP 模式中的 view 接口用弱 引用

24、基于 DataBinding 与 LiveData 的 MVVM 实践

25、App 稳定性优化

26、App 启动速度优化

27、App 内存优化

28、App 绘制优化

29、App 瘦身

30、网络优化

31、App 电量优化

32、安卓的安全优化

33、为什么 WebView 加载会慢呢?

34、如何优化自定义 View

给大家3个走心的面试建议

经常会有朋友粉丝私聊我帮他看下简历,发现了一些共性问题;除此以外,我偶尔面试一些人,有一些个人的感受分享给大家。

简历信息要直观

简历首先要经过 HR 这一关,HR一般情况下是第一个决定你简历是否能往下投递的人。

所以,我们首先需要站在他们的立场,思考他想看到什么就行了。

对于基本信息:毕业院校,毕业时间,联系方式这些核心信息我们就不赘述了。

我见过一个简历上面的项目经历,项目名大概是这样的

  • 2016-2017 BBV线上项目

  • 2017-2018 功夫线上项目

扫了一眼,完全不知道是什么项目。

你不能预期HR去花时间读你简历中的项目介绍,去推断你这个项目的类型…

于是我咨询后发现,BBV是个区块链app,功夫是个餐饮类app。

那么你不如就修改为下面的写法,更加直观:

  • 2016-2017 区块链app (BBV)

  • 2017-2018 餐饮类app (功夫)

知名项目除外,不要参考这一条。

简历上表达出专业技能

1. 方便 HR 查看技能匹配度

任何面试岗位都有要求,部分 HR 也会关注简历与发布岗位的匹配度的。

这里也有个小技巧:你可以灵活的匹配这个岗位的要求(但不要把不会的写上去)。

2. 面试问题的主要来源

面试官,主要通过交流、提问,来确定你的技术深度、广度,以及对该岗位的匹配程度。

那么,提问问题哪来呢?

当然是从你的简历内容中来。

所以你简历中要明确表现出专业技能的掌握情况:

例如这样:

专业技能

  • 熟悉Android热修复、插件化、dex,arsc等相关技术

  • 熟悉Android 常规的事件分发、自定义控件、动效等相关

  • 熟悉面向对象,在意封装、继承,和接口设计

  • 熟悉Android性能优化常规手段,有一定的实战经历

  • 熟悉Android 四大组件相关framework代码

  • 熟悉编写gradle plugin,有一定的实战经历

  • 熟悉Https在Android上的适配、以及应用防破解相关知识

  • 了解NDK开发,有过一点JNI开发经验

如果你项目比较出彩,也可以将专业技能拆分到项目介绍中去。

这样你可能会遇到一个很 nice 的面试过程:

A:看你做过XXX,说说怎么实践的。

B:我在项目中这么实践的,而且遇到过以下几个问题,是这么解决的。

A:我也遇到过,我是这样解决的,不过感觉你的方案好像也不错。

AB: 开心的深入交流下去。

但是,如果你没有写专业技能。

那么遇到好点的面试官,可能会跟你交流项目,从你的陈述中去确定你用到哪些技术才能进行发问。

当然,很多时候面试还挺紧张,一问一答,项目介绍也很简单就过去了。

面试官就很郁闷了,问啥呢?

那只能问他比较熟悉的东西了,可能面试官主要是做插件化相关的,而你主要是做组件化相关的,这种情况就可以能造成你俩不在一个频道了,非常吃亏。

很可能面试流程就变成了:

A:你有没有做过 XXX。

B:没做过。

A:那你有没有做过 XXX。

B:没做过。

A:(内心)这B到底做了哪些事…

B:(内心)问的什么屌问题…

当然,千万不要写自己没有深入了解过的技能,凡是你列出来的,会默认你对此有掌握有一定的深度,而不是被提问时,回答:

这个我就用了一下…

这是我同事接进来的…

源码我还没来得及看…

对于第三库原理回答要有针对性

对于回答问题,在回答出问题的同时,尽可能关联到自己所经历的具体的项目场景

下面我说一个真实的体验,关于第三方库原理,基本上面试都会被问到。

比如问你图片加载框架 freso 的原理:

有的同学回答是这样的:

首先根据 url,看看有没有缓存,有缓存从缓存中取,没有 build 一个 request,放到线程池执行。

乍一听好像也没错,但是,任何一个完备的图片加载框架不都有这个流程么。

所以,问你一个开源库,除了回答基本原理流程,你心里要明确知道这个库的核心架构与特点,设计的比较好的地方,可以扩展的地方。

如果项目中还针对做过优化、监控等就更好了。

比如刚才问到的 fresco:

  • 你可以说说他的整体设计架构;

  • 你可以说说他的图片内存管理机制,在不同的版本手机上,然后深入下去;

  • 你可以说说他的Producer/Consumer 机制,以及如何利用这个机制去做扩展,项目中的定制;

  • 你可以说说根据自己业务情况做了哪些优化;

  • 甚至说一些它的缺点;

所以,对于第三库的原理,希望你能掌握:

  1. 基本原理流程;

  2. 整体的架构设计;

  3. 做的比较好的地方,以及这些地方设计与原理;

最后

**要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。


[外链图片转存中…(img-0uxV5oU3-1714633530298)]

[外链图片转存中…(img-WAlX8YUk-1714633530298)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值