-
有没有音视频开发经验?
-
怎么处理内存泄漏?强引用弱引用?LeakCanary原理说一下。
-
问更熟悉Java还是Kotlin,答Java,所以问的都是Java相关的一些题
-
HashMap扩容机制
-
Java volatile原理和作用
-
乐观锁,悲观锁区别
-
线程池工作原理,各个参数的作用
-
Android 三缓存是什么?为什么需要它
-
讲讲做的业务开发中比较有挑战的项目
-
还有一些比较常规的Android方面的问题,具体想不起来了
-
算法题:查找单链表中倒数第k个节点。做完后面试官问是不是刷过这道题,那我再出一道吧…
-
题:给定一台8核的手机,设计一个快速检索出sdcard下所有文件名为a的程序,返回一个列表
-
主要深挖项目细节,有些不太清楚的最好别提,不然被挖到了很尴尬
-
平时怎么学习技术
-
在之前的公司,你对自己的成长满意吗
-
在面哪些公司,情况怎么样
毕业时选择的是一家非一线大厂的公司,在这边工作的近两年时间里,业余学习了许多 Android 相关的专业知识(因为不忙),但是由于业务原因,且公司发展一直在走下坡路,我在项目上的经验比较欠缺,因此考虑进一家大厂继续磨练磨练自己。
我面试的不是很多,但是也让我知道,自己的不足,知道自己在数据结构与算法这方面很弱,同时开发中的问题总结,java基础与高级知识不足,源码阅读不够深入,掌握的知识很虚,没有理解到重点,框架用的多但是只停留在会使用的阶段。网络相关知识薄弱。后台开发流程与知识薄弱(所有的逻辑与难点其实都在后台,同时了解后台也有助于Android开发与接口调试协作)。这些都是我以后的学习方向。
知识点有腾讯遇到的,也有其他公司面试遇到的,我都做了一个整理。需要特别注意的是这并不是全部的知识体系,仅仅是笔者遇到的面试题,读者可以按照大体的方向去学习,但切不可认为这样就足够了,这里提到的知识点是远远不够的。
面试的过程中更多的时候不会单纯地考察知识点,而是会结合一些需求或者业务场景来多方面考察对知识点的理解。因此笔者建议,对于知识点要以理解为首要任务,而不是背诵答案。
面试的过程中更多的时候不会单纯地考察知识点,而是会结合一些需求或者业务场景来多方面考察对知识点的理解。因此笔者建议,对于知识点要以理解为首要任务,而不是背诵答案。
Android
1.Activity
1.Activity启动流程。其中考察最多的类似问题是:【从桌面点击一个图标之后,到界面显示,这个过程发生了什么?】。很多时候面试官会结合activity生命周期来考问:在启动流程的哪些阶段哪些生命周期被回调,此时Activity状态如何。
2.启动模式。也就是常见的四种启动模式,但面试官更喜欢问何时使用他们,也就是使用场景。
3.生命周期。这个很少单独问,一般和启动流程或者具体的业务场景结合考问。
4.context。主要是内存泄露的考察以及application和activity两种context如何选择。
2.Handler
1.内部原理。Handler必会的啊,android的消息机制,可以称为android程序的引擎来的。
2.同步屏障。涉及到绘制优化、屏幕刷新机制等。
3.阻塞唤醒原理。这里一般是会问为何loop()方法是死循环却不会占用cpu时间片 or 为何next()方法阻塞却不会卡死。更深一点会问到Linux的IO多路复用epoll原理。
4.卡顿与内存优化。整个主线程的所有任务都必须经过Looper,是排查卡顿和ANR的关键点,以及消息太多会造成的后果等。
5.消息复用。
3.图片
1.计算一张图片大小。分辨率x像素点大小,考察得很多次。
2.加载优化。如LaunchActivity同时加载的图片太多如何优化、view的大小比图片小如何优化等。
3.缓存优化。内存缓存、硬盘缓存。
4.Glide框架。重点就是Glide对上面的优化的实现原理,因此需要着重看Glide的缓存原理。
5.drawable。对比使用图片和drawable的好处,以及drawable的原理。
4.SharePreference
-
内部原理
-
commit和apply的区别
-
这部分考察得不多,但建议读者可以深入理解sp的缺点,如导致ANR原理,以及新框架MMKV、Data Store的优点。
5.window
考察得非常少,主要window的类型、以及window的真正定义理解即可。
6.view
-
事件分发流程。考察得最多,基本把整个分发流程讲清楚就好了;其次还会考察如何解决具体的冲突场景。
-
应用界面的view层级。
-
绘制流程与时机。activity启动时到onResume方法被调用,view依旧还未被绘制。
7.IPC
-
常见IPC类型以及优缺点。
-
Binder机制。优点、缺点、特点、和传统IPC比较。Binder涉及到的很多是偏底层,更多的时候考察的是上层的应用,如和socket比较等。
-
socket。这个会重点问,涉及优缺点、使用场景、和binder相比等。
8.序列化
serializable和parcelable的原理,以及各自的优缺点、应用场景。
9.jetpack
-
使用jetpack的好处与坏处。
-
框架原理。这部分如果写在简历也很少问,看面试官;但如果问的话,一般会问原理。
10.okHttp
-
拦截器以及责任链思想。这个是问的最多的。
-
内部调度器对线程、任务数的并发控制。
-
优点缺点,和URLConnection相比的好处,诞生的背景等。
11.优化
-
性能优化。问得很多,主要看自己平时有没有做过优化。
-
卡顿优化。一般询问如何定位和解决卡顿问题。
-
内存优化。一般是内存泄露、或者减少内存占用等。
-
ANR。一般会考察原理以及如何解决。
-
工具:leakcanary、profiler。优化涉及的内容太多,这个属于比较深的内容,还是得看自己平时的项目积累。
Java
Java的考察是一个非常考验功底的地方,很多的知识点都是基础中的基础,同时又都可以延伸到底层的逻辑。这些知识点在实际的运用中,也有很多的情况需要考虑,考察我们对于知识点的运用。例如线程池,可以从参数作用、到线程池原理、到阻塞唤醒机制、到实际项目的参数配置,有非常多的知识点可以考察。因而这一块就看各位的造诣了。
当然,一些基础或者常考的知识点还是得会的。
1.集合框架
-
HashMap。几乎每家公司都问,主要是内部原理如hash算法、冲突解决方案、扩容方案、红黑树的优缺点等。必会的内容,不会就直接当场去世了。
-
HashSet。内部使用HashMap来实现,value设置为object。记住这个就好了。
-
ConcurrentHashMap。必问。他的并发原理以及好处,同时有些面试官也会问缺点等问题。
-
Hashtable、SychronizeMap。一般和ConcurrentHashMap一起问,进行对比。
-
CopyOnWriteArrayList。一般会作为线程安全方法来进行比较优缺点。
-
集合框架重点还是在Map,但是其他的框架List和queue的原理也是要了解的。
2.访问限制符
public protect default private 四个要懂,基础知识了。(笔者就是忽略了这些当时回答错了)特别注意protect是可以跨包访问的。
3.类
- 4种内部类,特别注意每个class编译后都会产生一个class文件,不管静态或非静态。面试踩坑了
lambda的本质。就是匿名内部类。
- 抽象类和接口的区别。这个很看理解,如果有开发过具体项目的会回答得更加深刻,这是背八股文体现不出来的。
4.异常
异常体系、分类、机制。
与error的区别。
5.IO
主要还是问NIO的原理以及优缺点。建议把缓冲流的原理也得学一学并进行比较。
6.线程池
-
内部原理。必会的啊。
-
关键参数作用及如何配置。重点在如何配置,需要结合具体的机器情况、任务情况等等考量。
-
线程池的作用。不仅仅只是线程复用,更重要的是管理线程、控制线程数量。这个也比较考察具体的项目运用理解。
-
常见的四种线程池。
7.并发
-
sychronize。必问,java的锁机制。特别是jdk6之后的锁优化以及运用场景。为什么是重量级的、JVM层如何实现如果了解可以加分。
-
Lock。必问,AQS的原理最好懂。一般会拿来和synchronize比较。
-
volatile。必问,会拿来和锁比较,他的两个重要作用。更深点会问到cpu缓存一致性协议、以及指令重排的类型与原理。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
写在最后
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家
我的【Github】会分享一些关于Android进阶方面的知识,也会分享一下最新的面试题~
如果你熟练掌握GitHub中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以在我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
)会分享一些关于Android进阶方面的知识,也会分享一下最新的面试题~
如果你熟练掌握GitHub中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以在我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
[外链图片转存中…(img-xcobLQHM-1710681869635)]
[外链图片转存中…(img-VMjEwa7y-1710681869636)]