记大厂Android开发的一些面试经验

Posted 玉刚说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记大厂Android开发的一些面试经验相关的知识,希望对你有一定的参考价值。

马上自己要去网易入职了,机会挺难得的,自己也很珍惜,希望可以把握好这次机会。在此特意记录下个人的一些面试经验,给大家参考。

前期准备和知识点

在面试前,需要给自己定制一个学习计划,一些基础的必问的知识点需要牢牢的记住,我稍微例举下一些常考的问题:

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等等。

面试的具体思路

一般面试官都会让你先来个自我介绍,可以介绍下自己的学习经历和工作经历。在项目中担任的角色和从事的工作。然后会侧重点让你讲一个你的代表作和用到的技术,然后根据你讲的技术对你深挖。也会问到你项目中碰到的难题和问题是如何解决的,这个就是考验你解决问题的能力。最好可以提前准备好一两个经典的案例到时候好有的讲。

其次就是沟通过程中不要太紧张,尽量让自己充分的思考,把自己所会的和能联想到的用较好的表达方式告诉面试官,让面试官可以走进你的思考方式中。一个拥有好的沟通和表达的程序员会更加受到面试官的喜爱。

你的职业规划和想法

如果你的职业技能满足了面试岗位的需求,剩下的面试官会关注你对自己的职业规划和想法。切记不要好高骛远,一山更比一山高。

我觉得低调做人高调做事更符合我们程序员的性格,对技术的渴望和追求不断提升自我才可以让你在这个专业领域走的更远。最后衷心祝福大家找到好的归宿。

后续

自己之前很懒,很少写东西,这篇文章记录的也不全,欢迎大家补充。后续会更多的写一些针对性的技术文章,谢谢。

以上是关于记大厂Android开发的一些面试经验的主要内容,如果未能解决你的问题,请参考以下文章

Android中级面筋:开发2年的程序员如何短期突击面试?跟着这几步去准备,大厂也不远了

三年Android开发大厂面试经验分享,让你扫清Android面试障碍

十多家大厂Android面试真题锦集干货整理,面试必问

Android大厂校招经验+高频面试题(2021结合自身整理)

Android大厂面试经验分享(OPPO,字节,华为,阿里)

面霸养成记;50万字2022最新Android11位大厂面试专题