2024Android面经:教你增加拿到BAT等大厂offer几率(-面试技巧

不太推荐这部分只看博客,因为很多博客并不系统也不完整,推荐完整看一遍《深入理解Java虚拟机》这本书,基本上这里面涵盖了JVM相关的所有面试问题,包括内存分区、GC机制、内存模型、锁、字节码、类加载等。JDK的部分会杂一些,基本上可以归类为几种:容器(必问HashMap、CurrentHashMap、ArrayList等)、线程池(必问)、注解、同步工具、动态代理、notify/wait/sleep。这部分可以从一些JDK相关的文章中去整理一遍。

Android部分:

这部分必问的是Handler机制、触摸事件传递、四大组件启动流程、View绘制流程、Binder机制、生命周期。经典的问题比如:

  • 触摸事件一定是先传递到Activity然后才传递给View的么?
  • 如果要在Application的onCreate生命周期之前执行一些逻辑,可以放在哪里?
  • draw、onDraw、dispatchDraw执行的顺序如何?
  • View真正显示是在onResume之前还是之后?
  • Activity中嵌套有一个Fragment,startActivity之后,Activity和Fragment的生命周期顺序是如何的?

数据结构与算法:

这部分在客户端开发中考察的比例会小一些,不过也有很多公司非常重视手写代码。经常碰到的问题有二叉树遍历、有序二维数组查找,排序等,基本上以《剑指offer》或者《编程之美》为准就可以了。

计算机基础:

这部分涵盖的比较杂,比如计算机网络(7层网络模型、Http和Https)、git工作流和命令、计算机缓存策略、UML、信息安全等等。

设计模式:

在自己的项目中一定要多总结和使用设计模式,面试官问你使用过什么设计模式的时候,如果能回答出比如状态模式、责任链、装饰等等,肯定会加分不少。如果只是回答单例和建造者模式,那就会逊色多了。这部分推荐看《研磨设计模式》。

开源项目:

这个也是必问的环节之一,建议从自己项目使用的开源项目入手,跟着代码,画一遍流程图和架构图,仔细体会这里面设计的优点和缺点。

比如OkHttp、LeakCanery等等,这些都可以。开源项目根据面试官的个人经验不同,问的深入程度也不一样,这时候就需要你个人的一些引导技巧,比如面试官可能不是很熟悉这个框架,这时候你能主动表达出这里面设计的一些细节,也能给面试官留下不错的印象。切忌在简历上写只是用过但是没看过源码的框架。

2020Android面经:教你增加拿到BAT等大厂offer几率( 面试技巧)

上图是我自己整理的一些资料,有需要的朋友可以私信我【资料】领取

重点项目经历

小厂的项目往往追求业务快速迭代上线,相对比较能容忍一些技术难点,但是这些技术难点往往是能体现一个人技术能力的。所以你如果在小厂,就不能过分陷入到业务中,必须跳出来找一些有亮点的技术点,做好做精。这些技术点才是一个程序员安身立命的本钱,否则公司业务陷入困境了,你的价值也就不复存在了。在如何准备面试中项目这部分,小编有几点心得:

分成三部分:

  1. 为什么要做这个点,
  2. 考虑了什么因素并且是如何做的,
  3. 取得了什么效果(比如启动速度从1000ms降到200ms,这种具体的数据)

可以把几个小点串起来,这样可以显得更系统和全面一些,比如代码优化和性能优化结合在一起讲。

小厂的一些优化点往往只能做性价比最高的一部分,这时候还可以讲一下业界还有哪些更优的方案

最好再准备一下“如果你没有离职项目中还有有什么不足和可以优化的地方?”(笔者面试中碰到过几次这样的问题)

**小厂跳大厂,技术基础可以准备得很充分,但是项目绝对是一个弱项。**大厂一个App可能就有几十上百人在做,小厂很多所谓的优化在大厂的面试官眼中可能都是他们很早就做过了,这时候项目本身做了哪些东西并不是太重要,需要着重体现你解决问题的思路以及你是一个有追求的程序员,至少你要能做到业界的平均水平,这样才能有机会通过面试。

技术以外的东西

大厂面试中技术以外的部分也是非常重要的一部分,这部分大多是一些软技能:

自我驱动和追求

这部分主要是在平时工作中的一些自我驱动学习和自主追求一些技术能力,而不仅仅是完成需求就可以了,这样才能体现出你个人的成长性和潜力。

沟通和协作

这部分会评估你未来在团队的融入程度以及跟团队跨团队协作和沟通的能力。比如你在工作中是否能正确看待和解决一些跨部门沟通的问题。

我的面经总结

主要分为四个方面:

Android

  1. Android各个版本的特性(例如6.0,动态权限)
  2. ANR的原因
  3. Android中进程间通信的方式和对比
  4. AsyncTask的实现原理及优缺点
  5. Handler机制
  6. 自定义view三部曲,流程(或者实际场景题,例如实现一个表盘,怎么做)
  7. FrameWork层次结构
  8. Activity生命周期(A跳转到B,A和B中生命周期的执行顺序)
  9. Dvlik、ART、JVM三种虚拟机的区别
  10. 能不能在非UI线程更新UI
  11. Service和IntentService的区别
  12. Thread和HandlerThread的区别
  13. Touch事件分发机制
  14. 怎么知道一个Activity是否发生了泄露
  15. 从点击一个APP图标开始发生了什么
  16. Activity启动流程(源码看一遍,能大致讲出来就行)
  17. Activity启动模式(四种)
  18. Intent启动Activity的方式
  19. onStart和onResume的区别
  20. LruCache以及实现原理
  21. Android中的MVC、MVP、MVVM的区别和联系
  22. Parcelable和Serializable的区别
  23. Service生命周期
  24. Service的启动方式及区别
  25. Binder机制
  26. onSaveInstanceState和onRestoreInstanceState的调用时机(需要理解,一般会出个场景让你判断)
  27. onNewIntent的调用时机(同上)
  28. Android中的性能优化和内存优化
  29. RxJava说一下(常用操作符,背压,线程切换原理,实际应用)
  30. RxAndroid说一下
  31. EventBus原理
  32. Volley原理
  33. OkHttp原理
  34. Retrofit原理
  35. RxJava和Retrofit结合
  36. Dagger2原理
  37. 组件化介绍一下(为什么要有组件化,怎么解决合并冲突问题)
  38. 快应用介绍一下
  39. 屏幕适配的常用方法
  40. Service、进程保活
  41. Glide原理
  42. AsyncTask原理
  43. SurfaceView和普通View的区别
  44. 依赖注入框架的实现原理

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

《Android高级架构师面试指导+2021大厂面试真题》免费领取

711125807198)]

《Android高级架构师面试指导+2021大厂面试真题》免费领取

[外链图片转存中…(img-dbMir1rt-1711125807198)]

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值