Android 基础掌握好,面试基本不会倒!(Android 开发面经基础部分知识点整理)
Posted 涂程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 基础掌握好,面试基本不会倒!(Android 开发面经基础部分知识点整理)相关的知识,希望对你有一定的参考价值。
前言
时光一晃上半年就结束了,博主也收到了不少粉丝分享过来的面经,有实习面经也有社招面经还有内推跳槽等面试经验分享,我利用了闲暇时刻将他们分享来得面经中基础部分进行了整理,今天特此前来分享给其他粉丝参考学习,望能帮助到大家。
android中大厂面试都很重视基础知识的考察,面试前不仅要熟悉这些知识点,也要适当去背诵,保证面对面试官时能从容清晰地表述出来。强烈推荐《Android开发艺术探索》,校招社招都对我很有帮助;《Java并发编程实战》帮助理解多线程安全;《深入理解Java虚拟机》帮助理解JVM。理解了以下问题后,最好要用笔手写下来,帮助你组织语言,加深印象,帮助复习。
面试知识点整理
Android面试题
- ListView 如何缓存的?
- RecyclerView联系人列表如何实现A-Z快速定位
- 广播和EventBus的区别
- 主线程Looper循环为什么没有卡主线程?nativePollOnce
- SharedPreference的线程安全、进程安全,如何跨进程
- Android 中实现多线程: threads, Handler, AsyncTask, IntentService
- Android 中如何实现多进程
- 自定义View的过程:measure,layout,draw
- LayoutInflater#inflate 的 attrachToParent true 是什么意思
- theme 和 style 有什么区别,优先级
- 有哪些进程间通信方式
- View 的渲染过程
- Binder 的原理和优势
- AIDL 中的 oneway 有什么用,方向标签 in、out、inout 是什么意思
- Android 中有哪些动画,都说下
- Serializable 和 Parcelable 的区别
- 你知道哪些Layout,ConstraintLayout 的特点是什么
- 手机开发者选项有哪些,不保留活动是什么
四大组件
- 当内存不足时Service被杀死了,如何重启这个Service
- Android系统杀进程时,是怎么考虑进程优先级的?
- Fragment 的 ViewModel 如何访问到 Activity 的 ViewModel 的数据
- Activity 4种启动模式说下,各种启动模式适合的应用场景
- Activity 任务栈从底到顶为 A-B-C,低内存杀死进程后,重新点击,显示哪个?这时如果C里面有Fragment是怎样恢复的?
- Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
- window、view 和 Activity 的关系
- Activity、Fragment 的各个生命周期依次说一下,各个生命周期里面适合做什么
- Activity 调用 finish 方法后怎么走到 onDestroy 的
图片
- Glide缓存特点
- Glide为我们做了哪些内存优化
- Glide如何加载 GIF
- ListView 图片错位的原因,解决方案
- bitmap如何处理大图,30M的大图如何防止OOM?
网络
- OKHttp 如何实现缓存
- OKHttp 的超时时间,有考虑DNS超时码
- OKHttp 线程池、连接池讲下
- OKHttp 的所有拦截器有哪些,请求失败了重试1、2次怎么做
- Retrofit实现机制
- Room注解如何在编译时生成类文件
- http 和 https 的区别,shakehand的过程说下
- 状态码400、401,3xx有哪些
- 网络劫持是什么,应该怎么做
- TCP三次握手,握手中的网络包各个标记位是多少,四次挥手说一下
- TCP 发送窗口是什么?
- 混合开发h5了解多少
- 浏览器窗口访问一个网址的过程
- POST 和 GET 有什么区别
优化
- 内存泄漏分析,LeakCanary的原理,泄漏对象是如何找到引用链的
- APK瘦身
- 启动优化
- 卡顿分析!!
- ANR分析!!
- 为什么布局文件中层级越多,性能可能差很多
- 你有哪些应用性能优化的经验必问
- ProGuard怎么写
Java
- hashCode、equals
- HashMap 请开始你的表演
- ConcurrentHashMap 分段加锁的原理
- 动态代理如何写
- JVM 内存模型介绍下,哪些地方可能 OutOfMeomory
- JVM GC 算法
- 线程池的原理,有哪些拒绝策略
- Java锁优化:偏向锁、轻量级锁、自旋锁讲一下
- 为什么说反射的性能不好
Kotlin
- Kotlin协程为什么能以同步代码写出异步逻辑?
- suspend 函数的工作原理
- 在协程上定义了一个局部变量,为什么在其中的其他线程里的协程也能访问到?
- by 的两种场景,by Lazy 的实现
- object 单例的实现
算法
- 各种排序 算法(冒泡、选择、快排、归并。。。)的时间复杂度,各种查找算法)(顺序查找,二分查找……)的时间复杂度
- LRU 实现(146)参考LinkedHashMap实现的3个方法
- LFU 缓存(460) 同一频率使用LRU的NodeList,外面套一层{freq to NodeList},NodeList用双链表实现
- 两数相加(445)
- 找缺失的数字(268)注意相似题目里有中等
- 两个队列实现栈(225)
- 删除子文件夹(1233)
- 螺旋矩阵打印(54)
- 用生成随机数1-5(1,2,3,4,5)的方法,得到一个可以生成随机数(1-7)的方法
- 54张扑克牌,分成3堆,大小王出现在同一堆的概率(排列组合算数题)
抽象问题
- 讲讲做过的项目,有哪些亮点❤️
- 你自己的亮点在哪里,你的加入可以给团队带来什么❤️
- 技术规划,怎么发展❤️
设计题
- 如果让你设计一个音乐播放器,要实现哪些接口
- 设计一个图片下载库:深挖 Glide,如果图片没有设置有效期,如何保证缓存被更新???❤️
其实收集来的面经中问道的知识点远远不止这些,由于文章篇幅长度原因,我就整理这些Android 开发面试中被问频率较高的基础部分。其实你们把这些面试常见被问的基础部分掌握,再加对自己做个的项目有深入的了解,基本在面试时不会被面试官问倒,除非面试官特意刁难你。
最后
跟大家分享一下之前我进行收集整理复习的一些 Android 开发相关的学习文档、面试题、Android 核心笔记等等文档,希望能帮助到大家学习提升,如有需要参考的可以直接去我 CodeChina地址:https://codechina.csdn.net/u012165769/Android-T3 访问查阅。
以上是关于Android 基础掌握好,面试基本不会倒!(Android 开发面经基础部分知识点整理)的主要内容,如果未能解决你的问题,请参考以下文章