前言
终于做了这个决定
别人怎么说我不理
只要你也一样的肯定
我愿意天涯海角都随你去
我知道一切不容易
我的心一直温习说服自己
最怕你忽然说要放弃
跳槽真的需要勇气
来面对流言蜚语
只要你一个 Offer 肯定
我的跳槽就有意义
我们都需要勇气
去相信会在一起
人潮拥挤我能感觉你
放在我手心里你的 Offer
随着五音不全的歌喉,2021 年面(被)试(锤)正式开始...
个人简介
- 5 年工作经验,后将近三年技术栈野蛮生长(Flutter、微信小程序、PHP、H5、后台 Api、PS 等...)
- 96 非本非专,高中学历。已报名成人函授,24 年 1 月下证;
- 无大厂光鲜履历以及较好项目,小公司,项目类型杂乱;
求职渠道
- BOSS/拉勾:记得提前查询公司信息,提前避坑;
- 内推:个人推荐有底气的直接走这个较好。建议优先线上,节省双方时间,后续可以约线下。
关于跳槽
对于跳槽,个人其实相对比较抵触,相比来来回回跳,内心更趋向于随着公司的成长而成长...
可事实岂能如人愿?
此想法还是太过于理想主义,但至少这是个简单、真挚且内心一直期望的小梦想...
不过也是,及时的从温水区离开,走向更远的地方,看更多的风景,未尝不是一种更好的选择...
这里特别奉劝各位小伙伴,一定、一定、一定要有自己明确的规划,以及及时止损!!!
真的是狗血鸡汤,总要苦过一阵子...
这次找工作,的的确确被锤很久,遇到过暖心面试官,也遇到过无良公司,还好一直坚持想找个自己相对喜欢的公司,还好结果还不错。
面试,无非就是一场技术交流。遇到不会的很正常,积极响应面对,主动尝试分析,尽力就好。这面试是否成功,有时候还真不是实力决定,不过实力有时候确实也能决定很多东西。
不管如何,一起加油~
本来想着记录面试过程以及尽自己努力去搜寻对应较好的面试答案,当个笔记和参考留存,奈何个人能力有限,也不想简简单单的就是背背题、抄个答案或者误导他人。知其然而不知其所以然,还是想后续抽空好好亲自测试走一下,真正的去掌握,所以本文不会单独的为每个面试官问我的问题特别注明对应的答案,我还是希望各位看官,尤其和我一样的小白,可以认真的思索下,假如面试官这样问你,你的答案会是什么?还有没有更好的回答?
虽然个人能力有限,但是还是希望做出一些正确引导,至少自己认为正确就好。
或者说,初心不变吧...
在此别过,江湖再见,祝君更好~!
面试题的答案都已整理好,需要的点击 【这里】 查看获取方式。
漫漫坎坷面试路...
以下面试题并不完善,有一些由于紧张忘记了,😂 大家见谅...
一起加油,努力找到自己喜欢的公司~!!!
关于 Title 公司五星说明:
-
58 最棒!感谢 58 面试官,全程平易近人,全程都是在找我个人的优势,帮我总结,另外后续很贴心的指出简历上存在的不足,包括对个人的一些建议,全程由好到爆,而且面试老哥实打实的从我个人的角度出发,去替我认认真真分析。感觉不像是面试,更多的是学习,能感受到一丝丝鸡老大的感觉。强烈推荐 Android 小伙伴参与投递,还是要有一些学历哈,技术贼牛掰的大佬除外。
-
亚洲创新集团、Keep、中科物栖、微爱面试老哥也是蛮不错的,贼老贴心,最后还不忘记鼓励以及提出建议,强烈推荐~
2021-3-1 雅识(做老年人产品)
电话沟通大概 30 分钟左右,整体来看面试官相对较为随和。
面试内容:
- 你是如何跨地区协调处理开发相关事宜,痛点是什么,如何解决,请详细列举说明。
- 关于任务安排,我们想具体了解任务细化的范围,请详细列举说明。
- 关于前后端配合,这块有什么痛点,你又是如何解决的?
- 针对你个人经验,来谈谈 Flutter 和移动端的优劣势,排除性能相关。
- 工作中会编写测试用例吗?用过哪儿些?自动化测试工具呢?
- 举例说明你在工作中最有成就感、最有难度的一个事儿。
- 我看你最近在应用上架,简单聊聊目前应用上架需要注意的细节以及槽点。
- 平时工作中会去关注卡顿率么?你是如何处理卡顿?
- Code Review 你们是怎么做的?为什么这么做,请说明原因。
- 简单聊下你为什么会选择离职以及为什么选择我们公司的原因。
面试感受:
对于回答面试官的答复,条理性还是有些欠缺,下次脑子里先过一遍,有个轮廓在慢条斯理答复。面试官感觉蛮友好的。😂
2021-3-6 Keep(硬件)⭐️⭐️⭐️⭐️
13:30 进 15:46 出来,Keep 公司环境蛮不错的,望京南附近,接待的小姐姐很友好,流程处理很快,门口保安大哥蛮贴心,给了一瓶水。
Keep 分两个面试官先后面试,具体第一个面试官职称忘记了,简称软件面试官吧,应为后续的面试官是硬件方向的,希望小哥哥看到我这么描述别干我,😂
面试内容:
1、软件面试官:
- 自我介绍、工作履历简述。
- SVN 和 Git 区别?描述下 Git 提交过程以及什么是工作区和暂存区?
- Git 中 merge 作用?和 rebase 有什么区别?
- Java 中强引用、软引用、弱引用、虚引用区别。
- Https 和 Http 区别,内部使用哪儿些算法。
- 对称加密和非对称加密区别。
- Jetpack 实际项目中用过哪儿些?
- 简述 Apk 包大小优化思路。
- Kotlin 拓展函数怎么实现的?基于什么原理。
- Kotlin 属性委托怎么实现的?基于什么原理。
- 简述 SharePreferences 以及过程中遇到的问题。
- 为什么选择 MMKV,MMKV 有什么优势,内部原理是什么?
- 简述 Handler 以及原理。泄漏怎么解决?
2、硬件面试官:
- Flutter 实际开发经验有多久?使用/了解过 Flutter 混编吗?
- 怎么优化的 Flutter 包大小?
- Flutter 中 Element、Widget 简述。
- Android Compose 了解过吗?简述一下。
- so 库动态加载有了解过吗?
- 简述 MMKV 原理。
- SharePreferences 有什么缺陷?支持跨进程吗?
- 在不使用任何三方库,如何实现弹幕功能?如何保证低端机上流畅性。
- 自定义弹幕中,你 Model 怎么设计?View 又怎么设计?
- RecyclerView 和 ListView 有什么区别?
- RecyclerView 缓存原理。
- 在不使用任何三方库以及系统提供控件,如何实现 RecyclerView 下拉刷新?
- 直播是什么实现的?需要注意的有什么?使用过的视频格式有什么?如何保证视频以及文字/语音同步性?
- 开发过音频相关吗?用的是什么?音频格式是什么?
- 微信小程序使用什么开发的?Vue 还是?
面试感受:
-
公司环境很 nice,整栋楼都是,我还在下面找了半天。
-
面试官很不错,一面面试官我都能感受到尴尬了,问啥啥不会,扎心的一批,没好好背,面试官一进来直接后背全湿透了,手动滑稽。二面面试官问的很全面,有技术、有业务、也会现场出场景,回答对应方案,以及其中存在的不足。整理来看很不错,强烈推荐小伙伴去 Keep,全程友好到极致。
-
所谓的八股文还是要背的,不然仅仅使用还是不够的。白白错失好的机会,蛮可惜的。
2021-3-9 快手(架构组)⭐️⭐️⭐️⭐️
牛客网线上面试,煎熬的 22 分钟,都能感觉到面试官的无语,也算是一场经历吧。
面试内容:
- 自我介绍以及学历简述。
- HashMap 内部存储是怎样的?
- hash 冲突是个什么概念?冲突之后怎么解决?
- 哈希桶是什么结构?
- 链表结构节点是怎样的?
- Java 中的 volatile 是线程安全的吗?如果对他做自增操作,例如 a++。
- Handle 中的 postDelay 实现原理是怎样的,它是怎么实现的延迟处理?
- 优化线上 Apk 大小都了什么操作?做完 Apk 大小之后从多少降低到多少?
- 下载转换率怎么统计的?
- 假设现在给你个需求,需要在打包的过程中去处理图片,你有什么思路?在哪儿个 task 去做 hook?
- 资源编译的流程是什么样的?
- 360 加固原因是什么?
- 你觉得加固或者安全方面,应该从哪儿个方面入手?Dex 层怎么处理能防止反编译?
- so 加固你知道有什么方案吗?
- 你比较擅长什么?设计或者某个技术有比较深的了解?
- 责任链模式简述,一般用于什么场景下。
- 你怎么理解的依赖倒置设计,具体在什么场景下使用?
面试感受:
只能说个人平时对底层关注较少,很多东西了解的不够透彻。感谢老哥最后仍不放弃,尝试问我有什么优势或者哪儿些我擅长的地方没有问到,感谢~
2021-3-10 58 ⭐️⭐️⭐️⭐️⭐️
58 得坐公交,下地铁还有六站地,搞得有点晕车。环境没得说,高大上。对于我这小司简直是刘姥姥进入了大观园。58 面试官很不错,很贴心,一场面试,一场交流,非常感谢。祝面试官早日晋升,超神吧~
面试内容:
- 自我介绍、学历说明。团队规模多大,团队角色。项目为什么做的这么杂?
- Flutter 实际经验有多久?有混编经验吗?
- 和 RN 对比后怎么会选择的 Flutter?Flutter 相比 RN 有什么优势?Flutter 不支持热更你怎么看?
- 如果现有项目想接入 Flutter,需要做一些什么样的前提准备?或者是否考虑混合方式?
- 在 Flutter 中遇到过一些什么问题?
- Flutter 地狱嵌套有什么好的解决方案?
- Flutter 有涉及到状态管理方面吗?具体说下。
- Flutter App 针对应用崩溃是如何监控的?
- 假如说我们现在有款产品需要快速迭代,在不考虑人力成本的前提下,你是如何决策使用某种技术以及原因。
- 你了解的大厂混编方式有哪儿些?
- Java 迁移 Kotlin 是什么时候进行?是你主导迁移吗?基础组件也迁移了吗?你是如何说服领导进行技术升级?
- 迁移过程中遇到过哪儿些问题,团队怎么磨合?升级过程中是否涉及到版本升级这块内容,怎么处理?
- Kotlin 协程有用过吗?简单描述。
- 协程挂起组装和 RxJava 有什么区别吗?
- 协程的挂起和我们平时使用的线程挂起有什么区别吗?
- App 中有开启多进程操作吗?有多进程开发经验吗?
- 插件化、组件化了解过吗?
- 模块化是怎么划分的?划分的模块复用率是怎样的?
- 页面间的通信是怎么做的?
- 性能上优化是怎么操作的?
- 内存优化以及统计怎么处理的?
- 内存泄漏怎么处理的,什么情况下导致泄漏?
- 图片优化怎么做的?
- Glide 原理底层是什么样的,说说简单理解。
- 关于图片缓存有没有做过一些处理?
- 你了解一张图片在内存中和硬盘中所占空间大小吗?
- 是否在布局这块有过优化?具体怎么操作的?使用过约束布局吗?简单描述。
- 项目中有做过一些统计、埋点吗?怎么操作吗?有研究过一些静态 hook 方案吗?
- 关于 Android 中插桩、注入有了解过吗?
- Apk 瘦身具体是什么操作吗?
- 关于自定义 View,有没有比较做过比较好的?常用的方式是什么样的?
- 个人 Github 大概内容是什么样类型的?
面试感受:
58 真的是有史以来体验最棒的,全程面试官一直在试图给我总结亮点,挖掘优势,甚至多次提到,有什么你擅长的东西我没问到的吗?很平易近人,很好,很贴心。老大也说过,好的面试官是回去挖掘你的优势。聊了很多吧,发散面很广泛,大厂老哥说话很精简,基本是我啰啰嗦嗦废话一通,老哥几个关键词概括,而且有理有据。给我提了很多建议,很不错,很贴心的一个老哥。从 58 出来很开心,默默看了 58 好久,突然爱了。😂 再次感谢面我的老哥~也希望互联网多一些和老哥一样的人。
真的是,知道而为实践,终究还是纸上得来终觉浅。感谢老哥,学习到很多。强烈推荐去 58 看看,哪儿怕和我一样被挂了,也能学到不少东西。
2021-3-17 微软
微软是直接下来一轮笔试,一帮人坐在会议室,刷刷写。
当时旁边有个小姐姐,上来一通写,给我整懵了,感觉好强。然而好景不长,开始涂了,随后各种唉声叹气。整的我无语到了极限...
算法貌似有四道,就记住两道,剩下忘干净了,瞧我这脑子啊...
算法内容:
- 写个方法,接受一个字符串,输出反转后的字符串。
- 假定现在有 s1 和 s2 两个字符串,求最长公共值。
- ...
Android 内容:
- Android 动画有几种?区别是什么?版本发布前推荐使用什么动画?和用户交互推荐使用什么动画?如果两者都要兼顾呢?说明理由。
- 如何实现代码封装,如何保证团队多人开发代码复用。
- Android 中 UI 适配的方式有什么?举例说明。
- 项目中的 Log 模块如何设计?
- 手写实现 event bus 关键部分。
- MVP 是什么?有什么优势?手写关键部分。
面试感受:
环境蛮不错,贼老大。可以和鸡老大吹水了,我也是进过微软的男人啦~
2021-3-18 汽车之家
前期发生了一些不愉快,门口保安大叔去热饭了,折腾半天才进去。给 hr 打电话,hr 让找前台登记,找半天没找到,问了一个同事,人直接说哪儿有前台。无奈之下又打电话,又让找水吧,最后得亏大爷热饭回来了,给我带过去了。贼郁闷。还是建议邮件直接写明较好吧。
面试内容:
- 自我介绍。
- 从你项目中列举一个你觉得比较有成就感的项目来说说。
- 从架构上、组件化、插件化或者解决问题的角度上来介绍下你做了哪儿些工作,有什么深刻印象积累?
- 简单说下常用的 support 包有哪儿些和 androidx 相关的。
- 既然有 support 包的存在,为什么还要出现 androidx 呢?
- 对 App 大小优化是怎么操作的?
- 屏幕适配怎么做的?
- 比如说,现在有个需求,大分辨率手机一行显示 30 个,小屏幕手机一行显示 20 个,如果是你的话,你会怎么实现?
- 常见的内存溢出场景有哪儿些?
- 项目中列表使用 ListView 多还是 RecyclerView 比较多,简单说说。
- RecyclerView 如何更新一条数据?
- MVVM 和 MVP 有什么区别?你更喜欢用哪儿种模式,为什么?
- Retrofit 如何全局监听相应体,比如我现在需要把请求信息全部打印出来。拦截其中具体是如何实现的?
- Android 中的多线程是如何处理?如果多任务情况下如何处理?
- Android 中线程池你了解多少?
- 你项目中全部迁移 Kotlin 了吗?为什么迁移?
- 你感觉 Flutter 适合用于什么项目类型/场景?
- Flutter 列表高速滑动和原生列表有什么性能差异性?
- 你用 Flutter 做列表有没有做过一些列表方面的性能优化?
- 灰产 App 中主要用了哪儿些技术,解决了什么问题?
- 你是出于什么想去破解逆向其它 App 的?有尝试过破壳吗?
- 离职原因以及学历说明。
面试感受:
相比其他家的 hr,汽车之家的多少让人感觉比较无语。可能也是,毕竟我还是小渣渣,要是鸡老大,可能会好很多吧。面试官很友好,问的很全面。就是面试环境不咋地,后期应该到吃饭时间,好多人,很吵,得趴着凑过去说话,回家听录音进行复盘,后期全是一个小姐姐狂野的笑声。😂
2021-3-19 亚洲创新集团(社交)⭐️⭐️⭐️⭐️⭐️
周五下午迷迷糊糊就接到电话了,想着去溜达溜达一圈,结果失策了。公司环境很不错,从前台小姐姐到 hr,再到面试官,最后直接给我整的老后悔了,被朋友一通 diss,哪儿来的胆子,不做任何准备,直接下雨杀过去...
面试内容:
- 工作多久了,你觉得你和其它 Android 工程师相比,有什么优势。
- 你的 GitHub 主要内容是什么?
- 假如当你带小朋友,你是如何和他进行分享以及帮助等?
- 你持续写东西,输出的动力是什么?
- Kotlin 用多久了,你认为你的 Kotlin 掌握水准在哪儿?初级、中级、高级?
- var、val、let、apply 有什么区别?
- let 返回 it,apply 返回 this,它们有什么区别?为什么这么设计。
- lateinit 作用是什么?
- Kotlin 协程有用过吗?用在什么场景?
- 协程是个什么东西?
- 有了解过协程如何切换线程原理吗?
- Retrofit 和 OkHttp 是什么关系?
- Retrofit 是如何通过注解来方便我们 api 调用?基于什么原理。
- JetPack 用过哪儿些?
- ViewModel 用来做什么的?
- ViewModel 如何实现生命周期绑定?
- ViewModel 为什么存在?那我直接创建个类不可以吗?如何实现数据绑定。
- ViewModel 如何实例,如何使用的?
- LiveData 如何实现的?
- LiveData postValue 和 setValue 赋值,这两个会不会丢失数据,有没有遇到过?
- MVC、MVP、MVVM 区别是什么?
- Rxjava 用的多么?map 和 flatMap 有什么区别。
- RxJava 使用哪儿个操作符能保证顺序执行?
- 如果让你自己设计一个 Glide 你会如何设计?
- RGB_565 每个像素点占多少内存?
- 为什么会使用 RGB_565?
- 为什么要对图片进行一些压缩?那服务器直接给我们直接裁剪指定尺寸大小不就好了。
- 假设现在有一张 1MB 图片,我直接设置给 ImageView,那么它在内存中占用空间有多大?
- 性能优化都做过哪儿些内容?
- 瘦身的话,我们都是怎么做的呢?
- armeabi 和 armeabi-v7a 有什么区别?
- so 库可不可以动态加载,如何实现?
- Android 版本从 5.0 到 12 都更新了什么东西?
- Android 5.0 ART 是个什么东西,具有什么优势。
- 今天的面试,自我感觉怎么样?
面试感受:
和面试官聊着,聊着,突然很想去,如果我 Leader 是这样的该多好。可惜啊,这里奉劝大家一定要做好面试准备,不能浪费每一次面试机会。
超级喜欢这样的 Leader!!!
2021-4-20 平行未来
面试内容:
- 自我介绍,公司、团队介绍、人员配比情况,简单说下项目情况,学历情况说明。
- 直播用的哪儿家?有看过源码或者优化吗?
- 就你一个 Android 会不会感觉孤独?
- 离职原因是什么?
- 您擅长哪儿些?
- 说下如何进行瘦身?
- 微信资源压缩,如果让你实现,你能实现吗?
- 微信资源压缩原理是什么?
- 启动优化过哪儿些内容?
- 内存做过哪儿些优化?
- 异步实现方式有哪儿些?
- 简单说下 Handler。
- 在一个线程中,可以创建多个 Handler 吗?
- 一个线程中有两个 Handler,那么它有几个消息队列?
- 消息队列中如何判断当前消息是归属于哪儿个 Handler 得呢?
- 我能在子线程中创建一个 Handler 吗?
- 子线程中为什么可以弹 Toast?
- Looper 更深层次原理你了解吗?
- 自定义 View 做过哪儿些?
- 假设自定义 iOS 进度对话框,转圈使用逐帧动画,那么在什么时候销毁呢?
- 两种实际业务考察以及最终布局考察。
面试感受:
老哥人不错,个人对基础知识掌握不够,还不深入,停留表面,就好像老大说的,仅仅掌握技术层面上的一层油,深入就完蛋。
2021-5-12 中广创思(车载)
进去先做题,4 道题,看的出来算是公司项目常用的场景。个人建议还是取消做题环节吧,直接开面,咱们唠起来,快速有效的进行面试,而且避免耽误更多时间,有时候临场反应更能代表个人真实水平(小白理解)。目前应聘 Android 岗位主要是负责将现有产品迁移车载平台相关开发工作,剩下可能还有一些待立项的项目开发。
面试内容:
一面小哥哥:
- 目前工作状态?为什么离职?
- 项目为什么做的这么乱糟糟?公司核心业务是什么?
- 有没有可以演示的作品(我嫌麻烦,没带,哈哈哈嗝)。
- 在你开发过程中有没有遇到什么难点?可以详细举例说说么?
- 项目类型、团队情况以及主要负责内容。
- 你负责的项目,有什么没有比较好的技术亮点?
- 你是如何进行 Apk 瘦身的?
- 性能优化方面做过什么操作?
- 你是如何基于 lifecycle 进行日常组件封装?
- 你是如何进行日常项目架构设计实践?
- 模块化的情况下 Activity 之间数据传递以及数据持久化怎么实现的?
- 目前现有项目采用什么架构?
- 你觉得你更擅长做哪儿些方面吗?比如业务落地、基础库维护、新技术引入等等。
- 你在公司中有给公司做过相关操作么?比如引入新技术等。
- 可以谈谈你对 Flutter 的一个认知吗?比如适用哪儿些场景、个人经验?
- 简单谈下你的学历情况。什么时候开始做的 Android 开发,自学的还是?
- 启动、内存优化做过什么操作?
- 什么情况下会使用软引用?
- 内存泄漏一般会在什么情况下会遇到?
- 在平时开发中,有没有注意过一些数据结构适用场景?
- 平时开发过程中有没有思考过方案更优思路?
- 字符串拼接 + 和 StringBuilder 有什么区别?
- 内部类如何访问外部类呢?
- 父类和子类同时拥有静态代码块和构造方法,它们执行顺序是什么?假设现在父类和子类又新增非静态代码块执行顺序是什么?
- Activity 异常启动的生命周期是什么样子的?
- 如何保证 Service 不被杀死?
- 如何在 Service 中长时间播放一个音乐呢?
- 自定义 View 做过哪儿些内容?如何实现的?
- ArrayList 里面数据结构是什么样的?
- 如果我使用 Arraylist 不断地 add,它的底层扩容机制是什么?
- HashMap 底层数据结构是什么?
- HashMap 数据结构为什么会是数据加链表,链表的作用是什么?
- HashMap 是存储 key-value 形式,那么 value 在 HashMap 中是以什么形式进行存储的?
- 你之前有涉及过一些车载相关的项目么?
- 之前和蓝牙是如何进行数据通信的?
- 机型以及屏幕适配是如何适配的?
- 公司平时加班多吗?你是怎么看待加班的?
- 公司有产品么?
- 公司加班会有加班费或者其他补贴吗?(呵呵哒,有个锤子...)
- 假如说领导在,让你多写一会儿,你会怎么做?
- 假如有这样一个场景,领导给你评估的时间太短,这个时候你会怎么做?
- 你这几家公司都在哪儿呢?
二面老大:
- 在职还是离职,预计离职需要多久?
- 曾经任职公司主要业务是什么,你做的工作内容/范围是什么?
- 你个人主要开发语言是什么?哪儿个用的更多?
- 有一些工作上的亮点吗?你负责的功能或者亮点?
- 你对音视频技术的了解有多少?实际当中使用过哪儿些?
- 细节项目的介绍。
- 你住哪儿?你是已婚吗?
- 对我们这边有过了解吗?
- 来给你秀一下我们目前的 App。
- 你有什么想问我的吗?(老哥说这话的时候,感觉是信心满满,来哇,开启狂躁的问我吧,哈哈哈嗝)
- 期望薪资这块能给我一个范围吗?
- 还有什么其他方面想问我的吗?
面试感受:
小哥哥思维很跳跃,几乎从实际出发,整体来看蛮不错的,公司真正面试的效率蛮高,除了做题等待期(哈哈哈嗝,小哥哥看到不要喷我)。技术老大声音很有磁性,有一种莫名的振奋感,很不错的 Leader。聊完将近 12 点,特意叫住两个小姐姐帮忙送我出去,感谢啦~
2021-5-19 新文道教育
按照约定时间进公司,结果等半天,最后又主动找前台,结果呢,给了好几页题,那种 n 年前的题,直接蒙圈了,顿时想走了,墨迹了会儿,hr 又过来催,简单填写完资料又让全部填写,明确说明简历都有,还说要求标明每家具体薪资待遇等等等一系列不爽,都打算直接走人了,结果就在旁边,没法跑。无奈跟着又上楼,又等,接近一个多小时全部都在等待,明确说明了下面还有面试,不行就下午或者改天再约,hr 非要聊,聊到所谓的技术总监出来,开始所谓的不知所云的面试...
面试内容:
- 个人简介,学历说明,工作内容,团队规模描述。
- 简单描述下你重构的方面以及重构新开的项目还是在老项目重构。
- 重构采用了哪儿些架构技术等。
- 瘦身主要用到了哪儿些技术?
- 性能优化你主要做了哪儿些方面?
- LeakCanary 底层如何实现,如何捕获?
- 造成内存泄漏情况有哪儿些以及如何解决?
- Java 中的引用类型(强弱软虚)作用以及常用场景。
- 除了 LeakCanary,你还用过哪儿些,Android Studio 自带工具有使用过吗?
- 针对重构,有考虑使用组件化和插件化的方式吗?
- 组件化在不同模块是如何通讯的?
- 阿里的路由框架有了解过吗?
- 简单聊下 MVC、MVP 以及 MVVM 的优劣势。
- DataBinding 和 ViewBinding 区别,在项目中使用了哪儿些?
- 项目中用到的网络框架是什么?对它们的底层源码有了解吗?
- 介绍下 OkHttp 有几大工具类吗?
- OkHttp 有几大拦截器?
- Retrofit 如何工作的原理。
- Retrofit 采用的设计模式是什么?
- Retrofit 常用的几个方法。
- 对源码的掌握程度怎么样?
- 简单介绍如何实现一个懒加载。
- Fragment 如何实现懒加载。
- Fragment 常用的加载方式有哪儿些?
- Fragment 常使用的方法或者类有哪儿些?
- RecyclerView 多类型、分组如何实现?
- Activity 生命周期以及 A 跳到 B 之间的生命周期是怎样的?
- 自定义 View 常用到哪儿些方法以及如何实现的。
- 自定义 View 中对 requestLayout 理解有多少。
- requestlayout 以及 invalidate 区别。
- 简单介绍下 Handler 消息机制。
- loop 在什么时候创建的?你知道它是在什么类中创建的吗?
- Handler 可以在很多地方都可以创建吗?
- 假如我现在创建 Handler A、B、C,消息队列怎么知道是谁的?
- loop 死循环为什么不会造成卡死?
- ANR 的引起的原因以及解决方案。
- 假如我现在使用 Handler 延迟五秒后进行业务处理,那么 Handler 内部是如何实现 5 秒后执行我的具体业务操作的呢?
- Flutter 如何和原生交互?
- Flutter 如何开启一个服务?
- 纯 Flutter 可以调用原生吗?
- Flutter 通道如何编写?通道的实现方式。
- 为什么选择 Flutter 的原因。
- Flutter 和 RN 的区别?谈谈个人理解。
- 原生如何调用 Flutter?
- 如何让你设计一个项目架构,你会从哪儿几个方面入手考虑,为什么?
- 架构中有哪儿些内容是可以抽取一个公共的东西,让所有的模块都使用?
- 你的 BaseActivity 中会放什么东西?
- 你是如何管理 Activity 栈?
- Activity 启动模式。
- 页面中如何预防用户连续点击?如何在项目所有点击事件中使用呢?
- AOP 知道实现原理吗?适用于哪儿些场景。
- 动态代理的使用场景有哪儿些?
- AOP 主要解决哪儿些场景问题?
- 如何实现一个自定义进度条?
- 如何实现自定义 View 的渐变色效果?
面试感受:
害...直接拉出来干一架多好,哈哈哈嗝
老大之问:
敲黑板,划重点,的确大部分是我知识盲区了,汗颜,让我一度不知道怎么和老大开口...
- 自定义 View onDraw 详细怎么操作,比如我现在要画一个无毛边的正方形。
- 多边形和 View 里的动画怎么做?相交、叠加?
- 一个 View 怎么实现内容触摸滑动?
- 两个 View 怎么同时消费一组触摸事件,A 动的时候 B 跟着动?
- View 最终渲染到屏幕是什么机制?比如处理为什么物理屏幕会按你的代码需求如期画你的圆。
- 渲染的刷新率是谁控制的,控制间隔是多少?
- 为什么当你切换应用的时候,UI 的窗口会跟随应用的 app 切换。
- 安卓可以跨进程渲染视图吗?
- 为什么不能在主线程里做耗时操作?
- 为啥耗时操作会导致 UI 卡顿?
面试的一些感受
最后在唠叨几句吧。
本文的初衷并不是提供对应的面试答案,更多的是将自己亲身经历的面试过程记录,方便各位跳槽的小伙伴进行自我模拟,也欢迎一起交流学习。
其实,面试这么久,对人的心理以及生理都是一种折腾,58 无缘以及经历汽车之家无奈的面试,导致后续一段时间内的心态崩溃,可能有的老哥会嫌弃这两家,可是对于我小公司出身,这就是蛮大的公司了。还是希望各位准备充分,心态放平,展示自己最好的一面就好了。
千万别像我一样,匆匆忙忙面试,对之前比较不错的面试官道个歉吧...
另外,感谢我老大期间对我的帮助,感谢老大,老大万岁~!!!
最后呢,说说张张吧,暴躁小伙儿,嫌我面试吊儿郎当,不好好准备,喷了我无数次,周末以约酒的名义去复盘我简历,顺便交流面试经验,感谢~
有时候真的觉得自己蛮幸运的。虽然现实的确也很残酷,但是呢,也希望能把自己的一点小幸运传递下去~
面试前系统复习路线准备好!
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!
- Android学习路线图
首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
- 模块化学习资源
接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
①看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。
②读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
③面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
④2020大厂面试高频知识点
- 图片
- 网络和安全机制
- 数据库
- 插件化、模块化、组件化、热修复、增量更新、Gradle
- 架构设计和设计模式
- 性能优化
- Android Framework
- Android优秀三方库源码