4年Android开发3面字节,我上岸了 📅 2026/8/27 12:26:50 背景经历当时我工作近4年明显感觉到了瓶颈期。具体来说感觉自己做过一些技术设计、也有过一些产出但是从技术深度上感觉不足到后期时做事也没有明显挑战完全适应了公司节奏说句不好听的成了老油条可以每天舒服的混日子这也有好处有时间准备面试。这对于个人成长不利长此以往可能面临大龄失业。所以我觉得需要痛下决心改变一下现状。我定的目标就是进大厂因为我觉得小厂做到我目前的程度已经很难有很多的提升了。先说说面试的问题一面部分考题插件化。启动activity的hook方式。okhttp支持HTTP2http2的功能有哪些tcp方面拥塞控制tsl的握手和具体的非对称加密算法。非对称名称handler的post(Runnable)如何实现的。callbackrunnablemsg的执行优先级。阻塞是怎么实现的为什么不会阻塞主线程求二叉树中两个节点之间的最大距离。206含义未修改资源是哪个302含义301含义多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题动态代理传入的参数都有哪些非接口的类能实现动态代理吗ASM的原理Application和Activity在Context的继承树上有何区别二者使用上有何不同任意一颗二叉树求最大节点距离二面部分考题设计一个日志系统。内存泄露的分类。怎么查看内存泄露的问题touch事件源码问题。组件化的问题。module和app之间的区别。moduler通信是如何实现的。native奔溃的日志采集怎么处理注解实现一个提示功能如果int的值大于了3需要提示。三面部分考题介绍下flutter的启动流程介绍下flutter与weex的区别组件化介绍一下webview中与js通信的手段有哪些介绍下flutter_boost的原理适配器和装饰模式各自特点和使用场景视频编解码是怎么做的三色球排序聊聊我对面试的一些准备和心得面试从哪些方面去准备呢例如不太熟悉的技能要不要写在简历上、要复习哪些Android组件的知识、刷算法题目有没有用可能在面试前你都会仔细考虑这些问题。下面我就结合自身的经验和理解帮你梳理一下关于简历、面试和算法方面需要准备的内容分享一些我的心得体会。简历篇简历在面试过程会起到至关重要的作用我们需要非常注意简历的撰写。在面试的过程中面试官通常会非常关注你简历中的工作经历、项目介绍、技能特长这三部分的内容如果你面试的公司没有固定题目的话那很多问题都会围绕你简历里这三部分内容去问。这里需要注意的一点是相关技能的书写核心思想想进大厂的简历要突出自己的特色写得要生动能从简历看出你实力不俗。如果简历不过关很大几率根本没有面试机会。首先你要让面试官明确你面试的定级是什么。很多时候一个职位对应了很多个职级在投简历的时候你的简历需要让面试官给你一个比较明确的定级否则面试过程会比较被动也会影响面试官对你的判断。因此这部分的内容需要突出自己的特长也要写一些现在公司相对关心的问题比如你对插件化、热修复、组件化、性能优化等很熟悉就可以明确的写上但如果不是很熟悉那么尽量不要去写。如果你对Android某部分内容很熟悉就可以写得相对详细一些比如你对Handler、Binder机制很熟悉就可以写“熟悉Android常见机制比如Handler、Binder机制等”。而看到你很熟悉这部分内容面试官可能在问问题时一层层深入因此你肯定需要提前准备一下这部分内容如何讲解基本可以从机制的优点、重点、难点三方面去说明。面试篇对于Android工程师来说面试开始的时候都会问一些算法和Android、Java的基础知识。针对Java的基础知识我列一下 Java 基础部分要掌握的知识点Java序列化、注解泛型与反射虚拟机底层原理Android内存原理Java高级并发原理JDK高级动态代理Java IO操作对于Android的面试题大多都是跟系统原理有关的内容但也有很多没有准确答案的问题比如四大组件的原理这样的题目需要你从一个宏观的角度去解释一下四大组件或者你也可以拆分开一个个去讲解。关于Android面试高频的问点这些你是必须要理解清楚的如果你在准备面试之前我参考的这个**《Android快速面试指南》需要可文末里免费领取呢一些Android经常使用到的组件一定要理解清楚比如Handler.postDelay的机制触摸事件机制自定义View如何计算View大小容器控件如何对子控件进行布局数据库基本操作Binder机制LMK机制还有面试官也可能会问一些开源框架的原理建议你也要多了解一些优秀的网络框架图片加载框架日志记录框架EventBusAAC框架的原理还有性能优化最近几年公司对性能优化关注很多有的人可能做过专门的性能优化或者自己开发过一些工具总结过一些方法论这样比较好答一些。但是大部分人可能平时都在关注业务需求开发性能优化的实战可能并不是很多。面试的后面大多都会从项目入手你需要在面试之前针对你的项目做详细的准备。比如面试官会让你介绍一下你的项目你需要体现出这个项目的难点你在项目中的贡献项目的具体实现等有可能还会问到一些具体的细节所以建议是实事求是去讲但一定要对自己的模块非常清晰。除了技术面试以外有时还有可能会考察一些软技能比如面试官会考察你跨部门协作能力、沟通能力、时间管理、任务分配和职业规划等关于如何复习对于复习首先要对自己做一次自我了解我是通过画脑图来进行这个过程的我会整体默想一遍大概的知识体系画成类似下图。回想每个知识点可能考到的内容记录下自己模糊的地方然后去看网上总结的面试题再对每个题目都做一下回答。这是一个迭代过程。在你预想的问题都可以回答上来的时候就需要深入挖掘一下技术细节和深度了比如我工作中开发了一个PLT Hook工具这个工具可能是我参考开源项目并封装修改过来的但对其中的细节并没有很了解这个时候你就要对这个开源项目所涉及的内容做一次系统学习了。算法这一块的话“临时抱佛脚”对于算法的学习和积累作用不是很大因此需要我们在平时繁忙的工作中抽出一些时间来复习你也可以去LeetCode、LintCode上刷刷题。另外虽然大部分面试的算法题目都是LeetCode上的简单题目但你同样也需要关注一些中等和困难难度的经典题目。总结没有涉及太多具体的面试题更多侧重的如何准备面试而面试的准备其实是在我们平时工作过程中一点一滴积累的复习只是作为一种在面试前巩固知识的手段。复习的过程主要是我们对知识点的整理和总结你可以想一下在面试的时候可能会遇到的问题以及该如何去表达。但是我想说虽然“临时抱佛脚”的准备可能有时有用但是在短时间内靠“突击”是很难理解到某个知识点更加深度层次的内容而且知识面的广度也是需要时间和经验去积累的。所以不管你是否需要面试在平时工作过程中都需要多思考、多训练、多总结在有需要的时候可以厚积薄发。