2024年疫情下的Android跳槽之路:六年开发大龄菜鸡的爬坑历程,程序员技术过硬不怕找不到好工作!(1)

37 阅读6分钟

面试的范围主要涉及Java基础,Android相关的,数据结构与算法,计算机网络等几个方面。下面依次列出所问的问题:

Java部分

首先关于Java基础知识点,主要包含以下内容,接口和抽象类区别,string.stringbuilder.stringbuffer三者区别,Java集合框架底层实现原理,线程和进程的理解,线程池得作用,线程的各种状态,gc垃圾回收方面得知识点,具体如下:

  1. Java线程和多线程

  2. 说说JVM,它的程序计数器是干嘛用的?GCRoots的对象可以有哪些。

  3. 集合list和linkedList 区别

  4. hashmap底层数据结构

  5. Java同步方式有哪些

  6. volatile关键字和synchronized关键字原理

  7. jvm的相关东西

  8. Integer的内容

  9. Java线程池相关的内容

Android部分

Android知识点考察,主要包含以下内容:activity的启动模式,service的理解,进程间通信,插件化,组件化,热更新之类的原理,网络请求库okhttp原理,设计模式,类加载机制,Handler的理解,Android启动优化,性能优化相关的东西。具体如下:

  1. Android跨进程方式及原理

  2. Android性能优化,如何优化到极致,线程级别

  3. Android Handler的原理

  4. Android ANR的产生原因,如何定位ANR。

  5. 如何计算Android启动时间,如何优化启动。

  6. 说说Android架构模式,MVC是什么解决了什么东西,MVP是什么?它跟MVC有什么区别?MVVM了解吗,是什么东西。

  7. Android BInder机制是什么。

  8. AIDL了解吗,说说它的原理

  9. Android启动Activity流程,涉及到哪些类?

  10. Android Binder为什么进行一次数据拷贝而不是2次或者0次。

  11. 事件分发机制是什么?

  12. 网络请求库的实现原理是什么,详细说一下OkHttp的细节

  13. 图片加载库Glide的优点

  14. LRUCache缓存的原理

  15. 组件化模块化,插件化得理解

  16. 如何进行性能优化以及如何设计一款性能优化的工具,从哪些方面入手

  17. react native,flutter和kotlin相关的内容

  18. Android 架构演变,MVP和MVVM

  19. Android各大市场上架APP的规范

  20. Google play市场

  21. 说说组件化和插件化,热更新技术原理

网络部分

  1. 你的项目架构是怎样的

  2. 三次握手,四次挥手的相关问题

  3. 网络请求框架的原理

  4. post和get的区别

  5. 如何实现一张5M的图片上传

其他关于每家公司问的面试内容可以参考我文末分享的面试资料,我每次面完一家公司都会详细记录之前公司的情况以及面试内容,有需要的可以去查看。底部献上相关链接地址。

面试总结


这是我自己总结出来的面试问题答案,每次面完都会查漏补缺。

offer情况


总共面试了将近20家公司,大概可以的有40%~50%左右,不过有的公司因为薪资达不到自己的期望,所以拒绝了,有的公司要求比较高,我没有达到他们的期望也被拒绝了,最终选择了一家中等规模的公司,主要做基础架构部分的内容,他们家的app,用户量达到5000万左右,日活也有几百万,进去主要做性能优化这方面的,比较符合我的预期,所以就选择了这家,目前已经上班半个月了,一切都还满意。

面试复习路线推荐


多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!

这里给大家提供一个方向,进行体系化的学习:

1、看视频进行系统学习

前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

2、进行系统梳理知识,提升储备

客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

系统学习方向:

  • **架构师筑基必备技能:**深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO

  • **Android高级UI与FrameWork源码:**高级UI晋升+Framework内核解析+Android组件内核+数据持久化

  • **360°全方面性能调优:**设计思想与代码质量优化+程序性能优化+开发效率优化

  • **解读开源框架设计思想:**热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack

  • **NDK模块开发:**NDK基础知识体系+底层图片处理+音视频开发

  • **微信小程序:**小程序介绍+UI开发+API操作+微信对接

  • **Hybrid 开发与Flutter:**Html5项目实战+Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

3、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

设计模式学习笔记

设计模式系列学习视频