[日常] 2024年年末Android开发面经

Posted by xiuyuantech on 2024-12-23

前言

前面章节有提到裁员,没错在这经济下行的2024年年末我遭遇了裁员。在这段时间里面试了几家公司,将一些面试经验分享给大家,希望对大家有所帮助。
由于近年来Android发展迅速,涉及到多个方面如Java、Kotlin、Jetpack、Compose、Flutter、Framework、车载、TV、机顶盒、智能硬件等。作为Android开发者来说,需要学习的东西实在是太多。 以后还有鸿蒙需要学习,不过对大家来说可选择的工作变多了,加油吧少年。

总体上说,有如下几种面试题型:

  • 基础知识
  • 项目经历
  • 算法题

面试常问

  • Java相关

    • 抽象类与接口的区别
    • 深拷贝与浅拷贝的区别
    • equals()和hashCode()的区别
    • JVM中类的加载机制与加载过程
    • 虚拟机内存模型
    • 什么是双亲委派
    • JVM的整体组成部分
    • 垃圾回收机制及回收算法
    • 说说Java的三大特性:封装、继承、多态
    • 字符串常量池和new String区别
    • 强引用、软引用、弱引用、虚引用区别及应用
    • 注解RetentionPoicy.SOURCE、RetentionPoicy.CLASS、RetentionPoicy.RUNTIME区别
    • 数组和链表的区别
    • hashmap的原理及如何扩容
    • 线程的几种状态及如何创建和终止
    • 线程池有哪些及如何保证线程安全
    • 静态代理和动态代理的区别,什么场景使用
    • 单例模式有哪几种,如何实现
  • Android相关

    • 四大组件有哪些及通信机制
    • 如何自定义View及事件分发机制
    • Activity的生命周期及启动模式
    • View滑动冲突如何解决
    • RecyclerView缓存原理及如何优化
    • Handler、Message、MessageQueue之间的关系,一个线程有几个Looper及原因
    • HandlerThread 的使用场景和用法
    • WebView如何与native通信及性能优化(包括首屏加载)
    • view.post与handle.post的区别及分别什么时候执行
    • http与https之间的区别及三次握手与四次挥手的原理
    • Tcp与Udp之间的区别及使用场景
    • 模块化、组件化、插件化之间的区别及架构如何搭建
    • MVC、MVP、MVVM、MVI之间的区别
    • LiveData和ViewModel的原理
    • 进程通信方式(IPC)有哪些及区别
    • AIDL中的方法可以重名么,oneway关键字的作用,最大内存是多大(1M)
    • ANR怎么产生的,如何分析处理解决
    • android如何做性能优化(包括启动优化)
    • Seriazable与Parceable的区别
    • binder机制通信原理
    • Android系统启动流程或者App冷启动流程
    • 怎么处理OOM和内存泄漏
    • Compose
    • kotlin 中 let run alse with apply 区别
    • kotlin 如何扩展函数及是否可重载
    • kotlin 中 lateinit 和 lazy 区别及是否线程安全
    • 线程和协程的区别及如何取消
    • kotlin中如何捕获异常及嵌套协程之间的关系
    • inline、noinline、crossinline之间的区别
    • 协程如何切换线程
    • dialog和popup会影响activity生命周期么及为什么context只能使用activity
    • Android启动界面如何修改
    • 系统级Luancher App如何开发及apk放在哪个目录下
    • Framework层如何添加自定义服务
    • View, SurfaceView, GLSurfaceView, TextureView的区别
    • Window 和 Activity 的关系
    • PathClassLoader与DexClassLoader有什么区别
    • Aop、AspectJ、ASM有了解么
    • 为什么 Android 要采用 Binder 作为 IPC 机制
  • 常用第三方框架

    • okhttp实现原理及运用
    • glide三级缓存原理及运用
    • retrofit实现原理
    • RxJava实现原理
    • Arouter实现原理
    • eventbus实现原理
    • LeakCanary、BlockCanary实现原理
  • flutter

  • 算法
    题海战术,刷题即可

简历

简历的作用是展示你的技术能力、项目匹配性、个人信息和工作履历。好的简历让你在众多候选人中脱颖而出,它是帮助你获得面试机会的敲门砖。同时,务必保证简历的真实性,天网恢恢疏而不漏,觉得不好的经历,可以不写,如果HR有问,再如实告知,但不能造假,否则就算能力再强,也很容易被直接Pass。

主要包括如下四个部分:

  • 个人信息
    基本信息项:年龄 \ 学校 \ 联系方式 \ 证书(例如英语六级)
    技术附加项:博客或者Github
  • 个人技术栈
    模版如下:
    简历模版
  • 工作经历
    公司名称: …
    工作时长: …
    职位名称: …
    职责及内容:…
  • 自我评价
    要体现出学习能力强,同时也要端正自己解决问题的态度。

总结

总之,面试的态度很重要,运气也是面试过程中很重要的因素。很多时候,面试不过,有可能跟当面你的面试状态以及和面试官有关,不一定代表你的实力。 准备好复习,多面试几次,调整好自己的心态和状。