1、网络通信方面,一些基础的协议概念。比如TCP的握手挥手问题,Http和Https的区别以及Https传输过程中用到的加密方式,Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化等。
2、Java方面的一些基础问题,比如HashMap的原理以及HashTable的区别、Android方面的SparseArray的实现、ArrayList和LinkedList的实现原理等等。
3、线程方面的,比如线程的同步机制、线程的几种状态、锁和volatile、线程池的使用和管理、甚至到AsyncTask的源码以及在不同版本的变化。
4、Jvm虚拟机这一块的内容,比如执行过程、JMM模型、java的Gc回收原理、类加载器等等。
5、数据结构和算法方面,这个没什么好讲的,就是拼基础,把基本的数据结构和数组字符串方面的算法多刷一刷,毕竟面试一般面不到太难的,强烈推荐去leetCode刷题,每天限定任务必须完成多少。
6、Android方面基础知识点,就是四大组件。关于Activity的启动流程和启动模式可以说是必须掌握的,中间牵扯到进程间通信,所以关于binder跨进程通信这方面的知识点也是需要深入了解。
7、Android的Handler可以说是Android通信的核心,所以关于这块的原理简直是基础必备。但是需要注意的是Handler中有牵扯到ThreadLocal的使用,所以关于ThreadLocal也需要看和理解下。还有HandlerThread和IntentService的使用等等。
8、对于系统服务的了解,比如ActivityManagerService、WindowManagerService和其他各种系统服务的过程,多了解多加分。关于跨进程通信binder这块的知识点建立在理论上的会比较多,但是别担心,可以在理解了一遍之后去看AIDL服务,根据AIDL可以更好的理解binder的使用。
9、还有就是关于View,比如自定义View的绘制,SurfaceView的原理,view的onMeasure、onLayout和onDraw的方法执行意义等。还有关于手势事件的分发机制和滑动冲突的处理。其他的一些系统常用控件的源码分析也很必要,比如ListView和RecyclerView的区别缓存机制、viewPager的页数缓存实现原理等等。
10、剩下的基本功就是性能优化方面了,各种死丢丢(AS)工具的使用比如Android Profiler, Lint,查看ViewTree啊,还有MAT啊,LeakCanary啊(这个的实现原理能搞懂最好)等等。布局的优化和内存泄露的查找,大图片的处理。对了,还有图片的处理和图片框架的缓存原理包括LruCache的实现原理,和DiskLruCache、列表的优化方案等等。
11、然后就是关于你项目中使用到的一些开源库,关于你用到的开源库,一定要深入到源码去理解其中的实现方案。我拿Retrofit打比方,大概需要掌握到的深度是Retrofit的设计风格、Restful Api的概念、Retrofit核心实现方式动态代理,优缺点(比如动态代理不能代理抽象类,和用到了反射),如何优化(比如CgLib,和依赖注入的方案)。这个其实就是考核你对技术的研究深度到底到什么程度。所以你项目中使用到的技术一定要深入了解,大厂是不需要知其然不知其所以然的人。
12、关于数据库,分享一个失败的案例,就是我个人曾经把ORM的概念搞混淆导致被刷掉,这个是人生中的奇耻大辱,特此记录。
13、关于项目开发的整体架构的理解,比如MVC、MVP和MVVM。关于市面上主流的插件化和组件化开发的设计思想和实现方案的理解等。
14、此外,如果你会一些其他的开发方式或语言也会加分不少。比如Kotlin,Js,ReactNative或者Weex等等。
面试的具体思路
一般面试官都会让你先来个自我介绍,可以介绍下自己的学习经历和工作经历。在项目中担任的角色和从事的工作。然后会侧重点让你讲一个你的代表作和用到的技术,然后根据你讲的技术对你深挖。也会问到你项目中碰到的难题和问题是如何解决的,这个就是考验你解决问题的能力。最好可以提前准备好一两个经典的案例到时候好有的讲。
其次就是沟通过程中不要太紧张,尽量让自己充分的思考,把自己所会的和能联想到的用较好的表达方式告诉面试官,让面试官可以走进你的思考方式中。一个拥有好的沟通和表达的程序员会更加受到面试官的喜爱。
你的职业规划和想法
如果你的职业技能满足了面试岗位的需求,剩下的面试官会关注你对自己的职业规划和想法。切记不要好高骛远,一山更比一山高。
我觉得低调做人高调做事更符合我们程序员的性格,对技术的渴望和追求不断提升自我才可以让你在这个专业领域走的更远。最后衷心祝福大家找到好的归宿。
面试前复习路线
1.梳理知识
一般的面试,会被问到JVM原理、Android基础、四大组件和热修复等内容,这都是一名普通Android开发人员的知识结构,那么肯定是需要具备更多的知识树,需要掌握更全面的知识体系,所以就需要对知识进行一个系统的梳理了。
一、基础技能:
二、Android框架体系架构
三、360全方面性能调优
…
2.复习知识
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://img-blog.csdnimg.cn/img_convert/be5d2b6a1f6e7c3e357416f69d2ae3d0.jpeg)
结尾
如何才能让我们在面试中对答如流呢?
答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?为此我整理了一份Android学习资料路线:
这里是一份BAT大厂面试资料专题包:
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!