2024年这些年,我所经历的所有面试|写给正在求职的 Androider,测试开发社招面经

最后

在此为大家准备了四节优质的Android高级进阶视频:

架构师项目实战——全球首批Android开发者对Android架构的见解

附相关架构及资料

image.png

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 下载模块涉及,成功率相关

  • 弹幕与播放器相关

  • 跨进程通讯手段与注意点,webview相关

  • EventBus相关

  • 性能优化经验及手段

  • 为什么想要换工作

  • 兴趣爱好,工作室情况,如何协调工作室与辩论队

  • 平时学习习惯和安排   上述的点可能有一些遗漏或者记得不太清楚,不过整体面试官给人的感觉真的很好,大厂的环境也赞!除了前面聊技术外,也聊兴趣爱好,平时一些习惯等,整体来说氛围很轻松。

阿里(第四次)社招二面

二面是一个脸色红润,很和蔼的一个面试官负责。想了一下,除了和大学廖老师沟通有这种感觉之外,这位面试官给我一种导师的感觉哈。面试的问题主要有:

  • 网络请求涉及,如何设计缓存

  • 性能优化手段,场景

  • dp的设计

  • 熟悉的底层源码,广播底层实现,这一点自己确实还了解不够,不过自己讲了哦从wsm->activity->view的事件传递过程

  • 聊之前阿里的实习

  • 为什么想要换工作

  • 职业规划

  • 短视频行业,Bolo相关及一些竞品,因为平时也会留意自己开发的软件及竞拍,行业情况,所以有一些自己的见解

  • 聊兴趣爱好

  • 聊王者荣耀产品相关

整个过程面试官给人印象很深,除了互相交流得开外,他的问题也很有深度,不过如果真的答不上就请教下就好。最后面试官问了是否有哪些问题提问咨询:

  • 从刚才所述的职业规划,希望面试官给出意见和建议

  • 如果有后续面试,会在什么时候安排 还是到上周的面试办公室,10楼的环境给人的感觉很清新,自由。

阿里(第四次)社招 leader 面

面试官很年轻,让人感觉很有干劲。其实今天一整天都昏昏沉沉的,人状态很差。但是和面试官聊天,能说到的都是内心的一些想法,所以聊起来很舒服,他的一些建议也很值得我思考反省。

  • 自我介绍

  • 岗位要求

  • 实习内容

  • 工作负责内容

  • 换工作原因

  • 优缺点

  • 学校经验

  • 家庭情况

  • 个人现状,还有我的眼睛哈   面试的问题可能记不太清楚,但是有两个点我很深刻。 第一个是自己现阶段要稳下心沉得住气。几位面试官都和我说到了这一点。确实是这样,我很看重职业生涯前几年的学习积累与心态沉淀,也明白了当前自己最需要做的事是什么。 沉得住气,我自己的理解是:

  • 心态不要浮躁,相信自己的规划和按照自己的规划走

  • 学习新知识,要学会从宏观上懂得一个知识牵扯出的知识网,更要耐得住心去一句一句代码debug每个细节

  • 清楚地看清自己的技术现状,虚心地取长补短

那天结束之后,用新的心态去学习retrofit源码,记得大学的时候看imageloader,volley的时候,会没有太多的耐心去深挖,虽然知道流程和某些细节,但是对底层原理其实没有足够的掌握。很奇怪,今天越挖,发现自己对Android越无知,我第一次感到自己无知时,确实开心的。当我向我之前同事说某个源码细节的逻辑和我们项目所用到的逻辑有偏差时,他去调式之后发现“是项目用错了!”。感觉心里还是美滋滋的。 第二个是自己表述不够精简,有时会用辩论的方式来解释一大堆东西,会让听众感觉很罗嗦。这也是我的问题,改!应该尝试先下结论后再根据情况做分析。 面试完走出办公室,还看到面试官拿着笔记本,打了个招呼,感觉心暖,感谢这次机会。

阿里(第四次)社招HR 面

其实hr面应该是我最紧张的一面。可能是最后一面,也很看重这次的面试,担心自己说得不好。过程中自己也因为喉咙的原因喝了多次水,思维中断了好多。不过,面试官是一位比较有亲和力的姐姐,无论的问问题的方式还是追问一些细节,都让人挺舒服的,不会感受到太大的压力。

  • 入职半年多,为什么选择换工作

  • 现在事业部状况

  • 负责的项目工作

  • 最困难的事是什么,想到的是项目难点和当时在工作室做项目,那段时间确实比较艰难,算印象最深刻的

  • 职业规划,我可能表述不太好。从2-3年阶段性计划,到今年,这个月,这周。讲得逻辑性不好。自己的习惯确实是工作日+周六周日安排,可能当时比较紧张,讲得很乱。

  • 坚持最久的事,这个应该是和我兄弟去跑内环哈,从半圈到两圈是如何炼成的

  • 最有成就感,想到的是项目难点,后面仔细想,确实是因为攻克的难点给用户带来好体验。我还记得菠萝种子群的一个好友,网易忠实粉丝,和他交流过很多次关于菠萝的体验,有一次和我聊到输入法的原因,后面自己就花时间重构了。其中还和hr聊到关于攻克难点和所花的时间问题,确实是我自己表述不好,一件事的难易程度与完成时间只是正相关。,当项目频繁迭代,需要想办法缩短工时并保证质量后“偷”时间来做重构优化,其实自己那时候很有压力。这些东西不是需求,而是你想让产品更好却想去做,改得好固然好,万一改不好,那就是浪费时间,可能会应该当前开发状态。和很多同事沟通他们都不会选择这样去做,要么要求产品加工时,要么就不做。可是自己很难接受放着不管吧。后面用来两个多星期的午休和下班琐碎时间,周末空闲时间把东西做出来,第一次正式给项目重构使用,我是很自豪。最开心的应该是那位好友说的“菠萝的开发真不错!至少你们对用户有心”

  • 薪水相关  总的来说,今天面试的表现,自己给自己的评价是一般。最后沟通的时候因为薪资问题最后黄了

不甘落败尝试蚂蚁金服

蚂蚁金服的面试机会是那时候在看机会的时候,在脉脉认识的一位蚂蚁金服的面试官那里争取的。在沟通过后,对其部门的意愿挺大的,所以就尝试下把简历给了面试官。过了几天,没想到收到了其部门HR的面试邀约。刚好那时候公司部门架构调整到了尾部,我们可能被合并到一个新的部门中开展新的工作。可能大学实习给我留下非常好的印象,很喜欢阿里的技术部门,加上 UC 的面试没有如意,所以就毅然进行面试。

阿里(第五次)社招一面
  • 介绍自己

  • 介绍简历上的项目

  • 高性能列表实现,重点围绕 recyclerview 展开,如何复用,如何缓存

  • 性能难点如何攻克

  • 性能优化方面项目中做了哪些工作

  • 热修复原理,类冷启动修复原理,类热修复原理,classLoader双亲机制

  • 换肤原理

  • 设计一个图片框架,我考虑的是如何加载,如何编解码,如何缓存,api的易用性,大部分参考 glide 思路

  • 在很多数中找出前n个最小

  • 自己的方向是什么? 想做业务,还是想做专点的技术,如何理解项目架构。

  • 反提问:“自己技术性回答得怎样,有哪些改进。” 面试官给的建议是:技术还不错,但是介绍部门业务和自己的切合度时需要 “表述要简洁,逻辑要清晰”,**

阿里(第六次)社招 leader 面
  • 介绍自己情况,学android,实习经验

  • 介绍网易经验,哪个项目最大,项目规模,项目人员分布

  • 擅长哪一方面,这个问题非常致命,一定要选你足够理解的,我那时候讲的是性能优化,但是感觉讲的不好

  • android 虚拟机区别,编译区别,dex区别

  • 热修复流程,原理是什么,业界有哪些方案,对比如何

  • 打包流程是怎样的

  • 应用启动相关流程,从孵化进程到MainActivity#onResume绘制整个流程

  • 新版本android特性

  • 手势滑动事件分发

  • view绘制流程

  • gradle执行流程

  • apk安装底层细节

  • 最后留了一道算法题,我做了两天之后发给面试官

阿里(第六次)社招 交叉面
  • 介绍自己

  • 项目经验,团队情况

  • 对网络是否熟悉,一次http请求,https整体实现

  • 以后想做什么,如何规划自己技术

  • 开源贡献,博客记录相关的开放性问题

  • 反问:后面是否还有技术面试,得到的答案是基本不会有了,等 HR 面试就好

阿里(第六次)社招 HR面
  • 介绍自己

  • 项目经验,团队情况,学习情况,薪资待遇

  • 未来技术规划,是否考虑杭州,未来家庭规划

  • 反问:大概多久会有答复,得到的答案是当周周五前。

当周周四收到了人生中第一个阿里的正式 offer,还是我最心仪的蚂蚁金服的技术部门的 offer。技术方向和薪资待遇都大大超过我的预期。HR 让我考虑一周之后给答复。

过了一周,我决定放弃这个 offer,并开始自己新的技术规划,在新的部门好好干。一干,就干到了现在。

如果到现在问我,“当时放弃蚂蚁金服的 offer 后悔吗?”

我会说 “说真的有点遗憾,但我无法比较孰好孰坏,我现在就挺好的。”

如果你刚开始出来面试,那么就要用心去准备,去模拟,把每个机会都抓住。

如果你已经面试了几家但是都还不理想,哪怕是疫情背景下,你不要将就。我一直都觉得做技术的不要将就,可能是我的性格。那么继续尝试,把你每一次的面试的经历都记录下来,面试题是什么,你是怎么回答的,甚至你可以在面试的时候把自己的回答录音下来,回去好好听好好修正。一次会比一次好。

如果你有几个offer在选择上出现了分歧,建议要开始规划从职业规划来考虑offer。如果你打算未来深耕音视频,那么短视频技术offer则大于非短视频技术offer。如果你打算考虑往技术经理/技术团队管理,那么能带团队的offer > 不能带团队的offer,参与技术选型,技术架构搭建的offer > 负责某一块业务的开发 offer 等等。

这几年下来,我发现 “选择” 和 “努力” 在不同时期有不同的侧重。

  • 毕业时期,“选择” > “努力”,好的平台能带给你更多的机会,更好的薪资待遇,让你的视野更广;

  • 毕业前5年,“努力” > “选择",当你有一个好的平台之后,你要懂得利用平台资源去学习,比如各种内网,公司技术福利等,并借着平台项目的实践机会去野蛮生长;

  • 后几年,“选择” > “努力”,这是因为前几年为了积累的专业优势或更高的视野让你看清你以后要干什么,如果说选择的是平台,那么这个选择就是未来要尝试突破的方向。

当然,这些想法受限于我的经历,难免难以苟同。

非技术性问题的面试准备

非技术性的问题,实际上很多时候程序员回答得并不好,除了表达缺乏逻辑性外,沟通不畅也是一个问题。但事实上这些问题都可以提前准备的,而且我自己以前准备面试的时候都会把这些问题过一下,对着镜子表述。你只需要针对每一个问题点记住几个关键词,然后尝试脱稿,自己尝试把它串起来表达,几遍之后基本就 OJBK 了。

以下回答仅供参考。

自我介绍

我是来自xxx的xxxx。目前在xxx组Android研发。

平时基本能提前完成需求,经常会给产品同学提供一些技术上的意见或改进,并自主做一些技术调研来优化产品。另外,我更愿意让别人感受到,我是一个随和但执行能力知足的人。我喜欢组队答辩论,乐于与别人沟通与想法碰撞,乐于分享我自己观点与博文,因为我认为分享不仅仅是知识的传播交流,对他人也会知识上的重新认识,同时也是也是对自己的认增强自己的信息,对团队而言,能活跃整个技术氛围,让工作变得轻松,对新技术有渴望与追求。

但同时,我对自己也的要求也非常严格。工作上我喜欢通过化逻辑图细化需求实现,并按时点攻克,这种方法非常有效。而职业规划上,我会细分到每一周,每个月的学习计划。每一年或者每个阶段我应该去做哪些事情。可能有人会说,我给自己画圈限制死我的生活。其实不然,恰好相反,当我到达某个计划节点时,我更清楚我应该做什么且明白我为什么那么做,这会让我对生活变得更有信心与热爱。

平时看的书

技术类的书比如

《Java编程思想》《Effective Java》《突破Java程序员基本功的16门课》《深入理解Java虚拟机》 《Android高级工程师进阶》《Android研发录》《Android开发艺术探索》《打造高质量Android应用》《Android应用性能优化》 《安卓内核剖析》《深入安卓卷1》《深入安卓卷2》《Android系统源代码情景分析》

非技术类的书

《麦田里的守望者》《小王者》《少年维特》《世界因你而不同》 技术类的书阅读带来技术收获,非技术类的书阅读是兴趣,是扩展视野等都可以

博客类网站
  • App:掘金(yummyLau),以前也有简书(什么都学的小明)

  • 网站:简书,掘金翻译,Google developers,泡在网上的日子, CodeKK,安卓周报

  • 博主:stormzhang,酷壳,工匠若水,罗升阳,代码家,鸿洋等

怎么解决问题呢?

先找到问题的原因,然后在找解决问题的办法,找到问题的原因比找到解决问题的办法更重要。

如果你不能解决,那么你可以求助于其他人,而当你不知道问题的原因的时候,你去求助别人的时候,别人还有帮你去找问题的原因,这肯定会浪费很多时间的。

先不要找解决问题的办法,先找问题的原因。

一旦你了解解决问题的思路,那么当问你一些开放性的问题的时候比如 “项目里你遇到xxxx情况,你怎么处理的?当你解决不了的时候,你会怎么做?”

那么你就可以围绕上述的逻辑回答 “遇到xxxx情况的时候,首先我会分析出现这个问题的原因,(此处省略1w字),最终解决了。或者解决不了的时候,(这里需要强调自己能用的都用了,能查的都查了)就会去请教这方面比较专业的同事(此处省略1w字),最终这个问题在他的建议下我成功解决了。”

为什么选择离职

最主要的原因还是与自己的职业规划有偏差。

自己希望能呆在一个有技术方向性与能充分交流碰撞的团队中,希望能充分发挥自己更多专业能力,在比较充实的节奏中度过职业的现阶段。 因为事业部重组的原因,我们的项目组被分派xxxxx做xxxxx,目前只需要保证完成工作即可,codereview过程中,能感受到迭代功能完成需求会是最大满足,同时项目内团队基本不会互相分享项目经验及心得。

我希望可以完成得更好提前完成,可以帮助项目做优化做分享。在codereview过程中,我更希望我们不仅仅能把产品做好,还有更多的时间去优化,掌握更多新的技术来优化项目实现,让产品有更好体验。我希望我们的团队有技术瞻仰性与向前性,对技术的思考有深度,我渴望投身这样的团队并一起完善团队建设,而不是单纯无线迭代。所以我选择了在这个时候尝试新的机会。

很多时候,我们是能保证工作完成的,自己会做更多的优化或者调研工作来完善产品,整个良性过程中,组员的价值能得到最大化体现, 而团队应该是支持这种行为的,而不是间接地打磨掉组员的正向行为,这会让组内的氛围沉寂与消磨人的积极性。

我曾微信号分享过一篇关于一位大哥“辉哥”的文章,讲到做事要有匠心,要较真深挖,我解读为专注。而团队沟通工作应该是双赢的过程,大家可以放开交流碰撞,以team work形式去解决难题,这便是我追求的环境。

如何胜任这份工作

我的理解是,岗位的内容是高质量迭代开发国际业务客户端,能承担缺陷重构和痛点优化。

自己接触Andoid开发也两三年,在职时间差不多一年,一年内参与了xxxx项目迭代开发,能保证自己负责的工作都是提前完成的。而剩余的时间,我会主动去重构项目,也能针对用户痛点的主动做技术预研。而岗位的内容正是我主动追求的,我很乐意去挑战工作上的难点。

我个人的职业规划中,当前阶段是想深入掌握android底层的知识,所以当出现一个业务问题前,自己会深刻去认识一个问题产生的原因。针对工作的内容,自己能冷静分析原因并自主学习一些方案来解决。而提供的岗位工作正好是给了我充分的面对困难场景锻炼自己的机会。

学习习惯

这些越细越好,重在真实。

  • 周一到周五,9:30-7:30,上下班分别会看两篇博文;

  • 工作日完成一般会有两个小时时间用来继续本月的规划

  • 周六周日会把工作日踩的坑记录下,有时候写写博客,看看技术文章。

兴趣爱好

打篮球,写书法,游泳,桌球,乒乓球等,比较广泛,但是每一项我都在身边人中比较拔前

最近,想练长跑,慢慢看能不能小跑马拉松。

耐力,定性,这两者都是我这阶段需要的。

优缺点

责任> 协作沟通>接受意见但独立想法>自学能力>执行能力强

解决问题的心态不成熟,有时候容易钻牛角尖,处理计划过于急躁。

但是我相信,这是每个人都会经历的,而且是一个蜕变的过程,而我也正在慢慢转型。

工资待遇

可以了解先xxx的待遇结构吗。

希望能在xxxxK,因为(这个要按照真是想法表达)对于自己而言,我更看重xxx平台能给我的的职业帮助,而我也很相信自己能给团队创造相应甚至更多的价值。

想问的问题

技术面

  • 经过刚才的交流,针对应聘的岗位,面试官有哪些意见或建议,我能力的匹配度大概多少?

  • 假如有幸能通过面试,这个岗位现阶段负责哪些的工作?

HR 面

  • 经过刚才的交流,胜任该职位我应该加强哪些能力?

  • 假如有幸能通过面试,会进入哪个产品线,未来这个产品的发展方向和规划会有哪些?

  • 面试结果最晚会在什么时候通知?

面试涉及知识点/体系/书籍推荐

以下是面试中遇到的问题整理,有一些被我整理已被整理成博文,其他的都是我这些年积累的面试笔记,虽然不是很全面,但是已经是我保留的全部了。希望有帮助。

Java相关

====================================================================

  • HashMap

  • ArrayMap源码

  • Java关键字+类型大小

  • 进程线程+实现+同步问题

  • JVM模型+垃圾回收

  • 内存规则+程序加载过程+对象内存分配

  • 反射机制+android应用

  • JVM-编译相关

  • JVM-方法栈

  • JVM-对象的创建

  • JVM-内存区域

  • JVM-垃圾回收

  • equals与hashCode

  • 异常处理

  • IO流+字节流+字符流

  • 集合机制+哈希+线程同步集合

  • 我的Java编程心得

网络相关

==================================================================

  • https/http详解

  • 一次http请求流程

  • TCP流量控制、拥塞控制、可靠传输及区别于UDP

设计模式

==================================================================

  • Android中的设计模式

  • 设计模式-单例模式

  • 面向对象7个设计原则

Android

=====================================================================

  • 源码必懂-xml加载流程

  • 源码必懂码-Touch事件

  • 源码必懂-Handler

  • 源码解析-Rxpermissions

  • 源码解析-LiveData

  • Android类加载器

  • Java类加载

  • Rxjava 的归纳思考

  • Framework基础结构

  • Android虚拟机结构区别

  • 启动app流程

  • 启动framework流程

  • Android架构总结

  • 模式之MVC/MVP/MVVM

  • 换肤skin-support流程

  • 图片库glide

  • 源码-AsyncTask

  • 自定义view流程

  • Activity相关

  • Fragment基础

  • View篇之Touch传递

  • EventBus

  • 泄漏类型及定位

  • 性能可优化的点

其他

================================================================

  • 排序算法

书籍推荐

==================================================================

  • 《Java编程思想》

  • 《Effective Java》

  • 《突破Java程序员基本功的16门课》

  • 《深入理解Java虚拟机》

  • 《Android高级工程师进阶》

  • 《Android研发录》

  • 《Android开发艺术探索》

  • 《打造高质量Android应用》

  • 《Android应用性能优化》

  • 《安卓内核剖析》

  • 《深入安卓卷1》

  • 《深入安卓卷2》

  • 《Android系统源代码情景分析》

  • 《巧用Gradle构建Android应用》

  • 《Android高薪之路》

  • 《Android群英传》

  • 《程序员修炼之道–从小工到专家》

  • 《代码的未来》

结语

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是目录截图:

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

再附一部分Android架构面试视频讲解:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ndroid应用》

  • 《Android应用性能优化》

  • 《安卓内核剖析》

  • 《深入安卓卷1》

  • 《深入安卓卷2》

  • 《Android系统源代码情景分析》

  • 《巧用Gradle构建Android应用》

  • 《Android高薪之路》

  • 《Android群英传》

  • 《程序员修炼之道–从小工到专家》

  • 《代码的未来》

结语

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是目录截图:

[外链图片转存中…(img-e2hCOxYP-1715152094534)]

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

再附一部分Android架构面试视频讲解:

[外链图片转存中…(img-ueoXn9eF-1715152094534)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值