# OfferGas **Repository Path**: strats/offer-gas ## Basic Information - **Project Name**: OfferGas - **Description**: OfferGas,Offer加油站,帮助大家复习面试 - **Primary Language**: Android - **License**: Zlib - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 107 - **Forks**: 0 - **Created**: 2020-12-15 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OfferGas ### Offer加油站,帮助大家复习面试,夯实基础,丰富经验,快速进入面试状态,项目的中心思想是通过我的面试经历,能给提供一些帮助,请勿盲目抄袭。 1. 目前项目的主要内容包括个人面试经历,包括一些规模大一些的公司和小的项目组,为方便大家查看,单独分成了文件 2. 面试经历大部分都是深圳的公司,后期经历多为一些业务成型或者有技术壁垒的公司 3. 每次经历基本都包含,提问,总结,公司的主营业务,腾讯音乐的面试经验会写的很详细,包括详细的对白,思路,也是为冲击大厂的各位提供一个较好的复盘 4. 中间附了一些准备面试过程中看到的文章,视频,讲解,心得,主要是内容来自于 [B站](https://www.bilibili.com/) [美团技术团队](https://tech.meituan.com/) [Hencoder](https://hencoder.com/) [HencoderPlus](https://plus.hencoder.com/) 5. 最后一部分还包含了我个人简历的大部分内容,隐藏了部分内容,比如项目名,时间跨度,主要是太菜,怕被大家看出来。其中写简历的一些技巧,思考,部分来源来自于[HencoderPlus](https://plus.hencoder.com/),部分来自于[CodeKK](https://p.codekk.com/)的作者Trinea 6. 主要的面试策略是从小到大,一步步来,因为学历一般,之前的项目经历也一般,所以采取的策略主要是前期找中小厂,外包岗热热身,让一些自我介绍,基础知识倒背如流,中期开始冲击一些有技术壁垒的厂,开始对算法和一些不常见问题进行熟悉,后期开始冲击大厂,面试整体经历大概两个月,大概通过了十几家公司的面试,最后才得偿所愿进入Q音(更新一下,目前离职了) ---- ## 我的简历的一些内容 ### 姓名 电话 | 邮箱 | Android开发工程师 本科 | 软件工程专业 github:XXXXXXX (有东西在写,没啥东西的话,那就赶紧弄点东西,反正不推荐不写) 个人博客:XXXXX(和github地址一样,但是博客和github总要有一个) ### 个人经历 xxxx/xxx—xxxx/xx(时间) xxxxxxxxxx | Android开发工程师 工作描述: 负责xxx项目,xxx项目的开发和维护工作(其实这里更建议写一些直观的数据,比如crash率降低多少,UI卡顿检测能力,线程池问题监控,包体积优化大小,这样这里才更有意义) 1. 针对项目中内存峰值过高问题,降低50%,优化UI卡顿问题 2. 推进并实现自研项目中的低侵入,高内聚的埋点模块 3. 推进并实现Android端自定义相机并保持高兼容性 4. 推进并实现首页复杂列表的动态化搭建和动态化路由 5. 实现xxx项目的组件化开发 xxxx/xxx—xxxx/xx(时间) xxxxxxxxxx | Android 开发工程师 工作描述: 负责xxx,xxxx产品的前期开发和后期迭代工作 1. 个人负责并解决项目中的屏幕适配问题 2. 优化项目中的包体积过大问题 3. 个人推进并搭建了xxx项目中的MVVM架构 4. 个人负责实现了xxx的社区模块,纪念墙模块 xxxx/xxx—xxxx/xx(时间) xxxxxx大学 | 软件工程专业 | 本科 ### 专业技能 * 熟悉Http,Https网络通信协议的概念,原理,状态码的区别,报文格式,工作机制以及Https安全性连接的建立过程,数字签名机制,证书链安全机制 * 熟悉自定义View的编写,并熟练掌握事件分发机制和触摸反馈的机制和原理,熟悉解决手势冲突,包括内部拦截法和外部拦截法 * 熟悉Android多线程编程,线程池机制,包括参数设置,拒绝策略和Handler机制以及原理 * 熟悉RecyclerView的使用优化和缓存机制,理解Recycler回收过程,LayoutManager的测绘和布局过程,熟悉多类型复杂列表的构建 ### 项目经验 1. XXXX—XXXX | XXXX #### 项目简介: * XXXX是一款淘宝客类APP,主要业务为帮助各类购物网站推广优惠商品,帮助用户选择更优惠的商品,通过优惠券和返利,实现盈利的目的 #### 工作内容: * 复杂类型的动态化列表的展示和优化,并解决复杂列表内部的手势冲突问题 * 使用包括Lottie和自定义View等手段提高用户的使用体验和交互效果 * 实现后端控制首页模块的路由跳转,提供灵活的首页活动配置 * 使用Kotlin,Databinding,LiveData,ViewModel等Jetpack组件进行项目构建 * 针对多图片,重展示的APP的绘制性能和图片峰值变化过大等问题,进行优化。降低内存峰值百分之五十以上,解决项目中的幽灵绘制问题,大大降低了低端机帧率丢帧问题的出现 2. XXXX—XXXX | XXXX #### 项目简介: * XXX项目的前期的迭代业务的主要目的是进行电商的迭代,后期进行了IM,图片,视频社区交友方向的转型。 #### 工作内容: * 使用Kotlin、Jetpack组件、Realm数据库对项目进行整体性的重构以符合MVVM架构 * 使用组件化的方式分离项目中的业务和组件,拆分了包括基础组件,多媒体组件,支付组件,图片选择器组件,日志埋点组件等,并通过使用中间层的方式,进行组件间的跳转和通信 * 进行自定义相机的开发,提高自定义相机的兼容性,并接入滤镜功能,实现预览过程中的滤镜处理,拍照后的形变,适配问题的解决 * 自研埋点方案,抓取界面路径,点击事件,界面的生命周期,并进行本地存储,实现闲时上传功能 * 在项目中使用ProtocolBuffers 协议作为通信过程中的数据实体保存,避免使用Json的无序化和冗余代码过多的问题 ---- ## 以下是关于简历中的一些注意的点 ### 不建议大家 直接复制,毕竟你也要担心,如果大家简历的技能点都一样,可能会被拉黑的。但是可以按照这个思路写,面试的主要作用,就是面试官根据你的简历,把你喊来公司,看看你是不是真的像简历上写的那么厉害,如果你能和简历上写的一样,面试官就会考虑你,如果你能表现的更好,那就更可能给你更高的薪水 ### 关于专业技能:专业技能只是部分展示,毕竟我的初心是帮助大家更好的准备面试,写一份更好的简历,不是单纯CV,写技能点的核心在于,你要把这项技术的细节和名字写出来,引君入瓮。比如: 1. 如果你了解Http,Https,那至少要写出Https的一些核心机制,比如证书链验证,数字签名,数字证书,Http的报文格式,状态码的作用 2. 如果你写自定义View,那么就要写明,熟悉onMeasure,onLayout,onDraw方法的核心原理,内部逻辑,测绘方式,主要功能,剩下的依次类推 3. 例子中的写法大概包括,Http,Https,View的绘制,事件传递机制,线程池,RecyclerView的缓存机制。 #### 关于项目经历,各位一定要细心挖掘自己项目中的难点和亮点,如果没有,那就是想得不够仔细,再好好想想,想想平时遇到过哪些问题需要花几天时间解决,没有问题,创造问题也要上,或者从现在开始准备,假如面试官问你,你遇到过最难得问题是什么,你要怎么回答。 #### 关于一些性能优化,一定要记得数据,降低内存的占用,那降低了多少,百分比是多少,UI的卡顿如果有经验,一定要找到卡顿的核心问题,比如是setText过程过于占用时间,你们怎么对这个情况进行了优化或者接管,最后是不是多机型兼容,能不能顺利推进到项目中,并且平稳上线,这都是很重的指标。性能优化基本是必问的问题,如果经验不丰富,那最好就好好在自己的项目中实践一下,其实我也是在面试前,集中对自己的项目进行了性能检测,和性能优化,积累了一波经验,希望大家也能在自己的项目中多多实践,积累丰富经验,给面试官留个深刻印象 ### 以上写对于专业技能的编写方式和核心思想来自于HencoderPlus,面试官的主要目的是考察你个人是不是和简历相符这一思想也来自于凯哥的细心讲解,凯哥的建议也是建议大家多学习,多思考,不要直接复制。 ### [我是扔物线,我不和你比高低,我只助你成长](https://plus.hencoder.com/#1) ### [HencoderPlus](https://plus.hencoder.com/#1) ### 关于简历的格式和排版,还有一些需要注意的点,很多都来自于网站CodeKK网站的作者Trinea的文章,在这附上网站的详细地址和简历注意点以及模板地址的网址 ### [CodeKK](https://p.codekk.com/) ### 书写简历需要注意点[80% 以上简历都是不合格的](https://b.codekk.com/detail/Trinea/%E4%B8%80%E5%A4%A7%E5%8D%8A%E4%BB%A5%E4%B8%8A%E7%AE%80%E5%8E%86%E9%83%BD%E6%98%AF%E4%B8%8D%E5%90%88%E6%A0%BC%E7%9A%84) ### 简历模板[推荐两个技术简历模板](https://b.codekk.com/detail/Trinea/%E6%8E%A8%E8%8D%90%E4%B8%A4%E4%B8%AA%E6%8A%80%E6%9C%AF%E7%AE%80%E5%8E%86%E6%A8%A1%E6%9D%BF) ----------- ### 以下是准备面试过程中看的文章,资料,都是很干的内容,推荐一边喝水一边看 1. 关于锁 * [不可不说的Java“锁”事](https://tech.meituan.com/2018/11/15/java-lock.html) 美团技术团队 * [Java锁机制](https://www.bilibili.com/video/BV1xT4y1A7kA) B站寒食君 * [CAS、乐观锁、悲观锁](https://www.bilibili.com/video/BV1ff4y1q7we) B站寒食君 * [Java AQS机制](https://www.bilibili.com/video/BV12K411G7Fg) B站寒食君 * [Reentrantlock](https://www.bilibili.com/video/BV1ta4y1H73X) B站寒食君 2. 关于hashMap * [Java 8系列之重新认识HashMap](https://tech.meituan.com/2016/06/24/java-hashmap.html) 美团技术团队 3. 关于lrucache * [LruCache在美团DSP系统中的应用演进](https://tech.meituan.com/2018/12/20/lrucache-practice-dsp.html) 美团技术团队 4. 关于OOM * [Probe:Android线上OOM问题定位组件](https://tech.meituan.com/2019/11/14/crash-oom-probe-practice.html) 美团技术团队 * [Android OOM案例分析](https://tech.meituan.com/2017/04/14/oom-analysis.html) 美团技术团队 5. 关于Crash治理 * [美团外卖Android Crash治理之路](https://tech.meituan.com/2018/06/14/waimai-android-crash.html) 美团技术团队 6. 关于线程池 * [Java线程池实现原理及其在美团业务中的实践](https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html) 美团技术团队 动态修改参数这一方案看的我都惊了 7. 我是疯狂舔美团的技术 8. 关于binder * [韦东山_第4期_视频教程_Android系统](https://www.bilibili.com/video/BV15W411L7Lc?p=13) 大佬讲解Android,深入浅出,简单易懂,十分生动,墙裂推荐,横扫百分之95的面试官的binder理解,反正我还没遇到过我讲完通过这个学到的binder知识后不惊叹的面试官。 9. 关于RecyclerView和自定义LayoutManager * [Mastering RecyclerView Layouts](https://www.bilibili.com/video/BV1fW411A76o) B站Ocean藏心翻译,国外培训机构的大佬讲师,大卫史密斯,深刻讲解自定义LayoutManager和RecyclerView的回收机制,精准翻译,深刻理解 * [Android自定义LayoutManager第十一式之飞龙在天](https://blog.csdn.net/u011387817/article/details/81875021) CSDN上陈小缘作品,真的是思路清奇,羚羊挂角,天马行空,主要讲解自定义LayoutManager,包括预布局,回收机制,滑动,适配等等 10. 关于事件分发机制 * [Mastering the Android Touch System](https://www.bilibili.com/video/BV1FW411P768) B站Ocean藏心翻译,国外培训机构的大佬讲师,大卫史密斯,深刻讲解事件机制,深入浅出 11. 关于自定义View * [Hencoder](https://hencoder.com/tag/hui-zhi/) 别说了,就是凯哥了,看完凯哥Hencoder自定义教学,百分百自定义满分毕业 12. 关于协变和逆变 * [Hencoder](https://kaixue.io/kotlin-generics/) 凯哥的视频永远是那么的简单易懂,推荐视频文章都看看,就很容易弄懂这两个概念了,其实凯哥的码上开学也很干,推荐都看,光一个启动模式那一课,就能震慑面试官 13. 关于协程 * [Hencoder](https://kaixue.io/) 凯哥的协程教学,一共三课,都不会花很多时间的,很容易学,其实面试过程发现,用协程的不是很多,但是很多面试官都会问,你要能把协程的大概思想和作用讲清楚 13. JVM的回收算法,和内存分布,处理策略 * [一文看懂JVM内存布局及GC原理](https://www.infoq.cn/article/3WyReTKqrHIvtw4frmr3) InfoQ文章,主要内容似乎出自一本Java虚拟机的书,不过讲的已经很干了,什么是youngGC,什么是FullGC,内存怎么使用,如何保证GC流畅,都有讲解,建议细读,大概理解一下JVM的运行模型,文章后面有一些内容是关于不同的虚拟机的特点的,那个就不用看了,如果不放心,随便记两个常用的就行了。 14. 关于屏幕刷新机制(垂直同步信号,丢帧还是延迟,编舞者,双缓冲,三缓冲) * [“终于懂了” 系列:Android屏幕刷新机制—VSync、Choreographer 全面理解!](https://mp.weixin.qq.com/s/nsFgWZlTkk1YTNvkUVa8MA) 技术TOP公众号,作者胡飞洋,屏幕的刷新机制的设计原理,解决的难点问题到底是什么,谁来实现的,为什么要有双缓冲,三缓冲,都讲解的很清楚了,最大的帮助是帮我把关于很多绘制的内容形成闭环,这也是面试复习的意义 15. 数据结构学习(长期学习) * [《数据结构与算法基础》教学视频](https://www.bilibili.com/read/cv3285768)青岛大学老师-王卓,深入讲解数据结构的基础知识,毕业多年,面试才想起来数据结构很多东西都已经忘记了,确实需要好好学一学 16. Https * 这个没法推荐,我是看了凯哥的HencoderPlus的视频详细学习了一波,各位可以联系凯哥,催凯哥更一波详细的https的链接建立过程,网上大部分的https的建立过程都不是很细致,比如: * 大部分网上文章都把pre-master-secret的交换,再计算master-secret的过程忽略了,认为是直接交换了master-secret,然后得出了对称加密秘钥 * 还有就是对称机密的秘钥是否是只有一个 * 证书链机制到底是如何保证对方是对方的问题 * 这些问题都只能大家自己去寻找答案了,毕竟这个也是凯哥的付费内容,我也不能直接讲