- 蚁群算法与蒙特卡洛算法;
- 百度 POI 中如何试下查找最近的商家功能(坐标镜像+R 树)
- …
Java 面试题
Java 基础面试题
- 谈谈对 java 多态的理解?
- 你所知道的设计模式有哪些?
- 通过静态内部类实现单例模式有哪些优点?
- 静态代理和动态代理的区别,什么场景使用?
- 简单工厂、工厂方法、抽象工厂、Builder 模式的区别?
- 装饰模式和代理模式有哪些区别 ?与桥接模式相比呢?
- 外观模式和中介模式的区别?
- 策略模式和状态模式的区别?
- 适配器模式,装饰者模式,外观模式的异同?
- 代码的坏味道
- 是否能从 Android 中举几个例子说说用到了什么设计模式 ?
- 集合框架,list,map,set 都有哪些具体的实现类,区别都是什么?
- set 集合从原理上如何保证不重复?
- HashMap 和 HashTable 的主要区别是什么?,两者底层实现的数据结构是什么?
- HashMap、ConcurrentHashMap、hash()相关原理解析?
- …
Java 并发面试题
- 什么是线程池,如何使用?为什么要使用线程池?
- Java 中的线程池共有几种?
- 线程池原理?
- 线程池都有哪几种工作队列?
- 怎么理解无界队列和有界队列?
- 多线程中的安全队列一般通过什么实现?
- synchronized 的原理?
- Synchronized 优化后的锁机制简单介绍一下,包括自旋锁、偏向锁、轻量级锁、重量级锁?
- 谈谈对 Synchronized 关键字涉及到的类锁,方法锁,重入锁的理解?
- wait、sleep 的区别和 notify 运行过程
- synchronized 关键字和 Lock 的区别你知道吗?为什么 Lock 的性能好一些?
- volatile 原理
- synchronized 和 volatile 关键字的作用和区别
- …
Java 虚拟机面试题
- JVM 内存区域
- JVM 的内存模型的理解?
- 描述一下 GC 的原理和回收策略?
- 类的加载器,双亲机制,Android 的类加载器
- JVM 跟 Art、Dalvik 对比?
- GC 收集器简介?以及它的内存划分怎么样的?
- Java 的虚拟机 JVM 的两个内存:栈内存和堆内存的区别是什么?
- JVM 调优的常见命令行工具有哪些?JVM 常见的调优参数有哪些?
- jstack,jmap,jutil 分别的意义?如何线上排查 JVM 的相关问题?
- JVM 方法区存储内容 是否会动态扩展 是否会出现内存溢出 出现的原因有 哪些?
- 如何解决同时存在的对象创建和对象回收问题?
- JVM 中最大堆大小有没有限制?
- …
Android 面试题
Android 基础面试题 (⭐⭐ ⭐)
- 什么是 ANR 如何避免它?
- Activity 和 Fragment 生命周期有哪些?
- 横竖屏切换时候 Activity 的生命周期
- AsyncTask 的缺陷和问题,说说他的原理
- onSaveInstanceState() 与 onRestoreIntanceState()
- android 中进程的优先级?
- Bunder 传递对象为什么需要序列化?Serialzable 和 Parcelable 的区别?
- 动画
- Context 相关
- Android 各版本新特性
- Json
- android 中有哪几种解析 xml 的类,官方推荐哪种?以及它们的原理和区别?
- Jar 和 Aar 的区别
- Android 为每个应用程序分配的内存大小是多少
- 更新 UI 方式
- …
Android 高级面试题 (⭐⭐ ⭐)
- 你们做了哪些稳定性方面的优化?
- 性能稳定性是怎么做的?
- 业务稳定性如何保障?
- 如果发生了异常情况,怎么快速止损?
- 如果提高启动速度,设计一个延迟加载框架或者 sdk 的方法和注意的问题
- 你们内存优化项目的过程是怎么做的?
- 你做了内存优化最大的感受是什么?
- 如何检测所有不合理的地方?
- App 绘制优化
- 卡顿的一整套解决方案是怎么做的?
- TextView setText 耗时的原因,对 TextView 绘制层源码的理解?
- View 的事件分发机制?滑动冲突怎么解决?
- 如何解决 View 的事件冲突?举个开发中遇到的例子?
- View 的绘制流程?
- 跨进程通信
- Android 系统启动流程是什么?
- 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?
- AMS 家族重要术语解释
- App 启动流程(Activity 的冷启动流程)
- ActivityThread 工作原理
- 说下四大组件的启动过程,四大组件的启动与销毁的方式
- AMS 是如何管理 Activity 的?
- 理解 Window 和 WindowManager
- 安卓采用自动垃圾回收机制,请说下安卓内存管理的原理?
- JNI
- Android 中 App 是如何沙箱化的,为何要这么做?
- 请介绍一下 NDK?
- 你项目中用到哪些开源库?说说其实现原理?
- …
其他扩展面试题
Kotlin (⭐⭐)
- Kotlin 特性,和 Java 相比有什么不同的地方?
- Kotlin 为什么能和 Java 混编?
- 什么是协程?
大前端 (⭐⭐)
- Hybrid 通信原理是什么,有做研究吗?
- JS 的交互理解吗?平时工作用的多吗,项目中是怎么与 Web 交互的?
- react native 有多少了解?讲一下原理
- weex 了解吗?如何自己实现类似技术?
- Dart 语言有研究过吗?
- 快应用了解吗?跟其她方式相比有什么优缺点?
- 说说你用过的混合开发技术有哪些?各有什么优缺点?
脚本语言 (⭐⭐)
- 脚本语言会吗?
- Python 会吗?
- Gradle 了解多少?groovy 语法会吗?
非技术面试题
- 你还要什么了解和要问的吗?
- 你觉得安卓开发最关键的技术在哪里?
- 研究比较深入的领域有哪些?
- 自己最擅长的技术点,最感兴趣的技术领域和技术?
- 项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题?
- 说下你都看过那些技术书籍,你是如何自学的。你觉得自己的优势与弱点是什么?
- 说下项目中遇到的棘手问题,包括技术,交际和沟通
- 说下你近几年的规划?
- 对加班怎么看?
- 介绍你做过的哪些项目
- 为什么要离职?
- 当你的开发任务很紧张,你怎么去做代码优化的?
- …
总结
其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
今天分享的面试题就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
上面只列举出了面试题,答案解析内容过长,所以我把答案解析都整理成了一个完整的PDF,需要答案解析的朋友**点这里,以及还有我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2020面试真题解析**,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
那么该如何复习?
我为大家准备了以下一体系的复习资料:
《Android开发七大模块核心知识笔记》
《960全网最全Android开发笔记》
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
文末
当你打算跳槽的时候,应该把“跳槽成功后,我能学到什么东西?对我的未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段
最后祝大家工作升职加薪,面试拿到心仪Offer
未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段**
最后祝大家工作升职加薪,面试拿到心仪Offer
[外链图片转存中…(img-RRlHbqli-1712035402829)]
[外链图片转存中…(img-5goAc6Bi-1712035402830)]