想都不敢想,这个Android开发为了通过面试竟然做出这样的事情!

Posted 懂你的大海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想都不敢想,这个Android开发为了通过面试竟然做出这样的事情!相关的知识,希望对你有一定的参考价值。

前言

以下为楼主在最近的 android 开发(社招)面试中总结的 Android 基础知识点,楼主已经拿到心仪的offer。

Android中大厂面试都很重视基础知识的考察,面试前不仅要熟悉这些知识点,也要适当去背诵,保证面对面试官时能从容清晰地表述出来。强烈推荐《Android开发艺术探索》,校招社招都对我很有帮助;《Java并发编程实战》帮助理解多线程安全;《深入理解Java虚拟机》帮助理解JVM。理解了以下问题后,最好要用笔手写下来,帮助你组织语言,加深印象,帮助复习。

Android面试题

  • ListView 如何缓存的?
  • RecyclerView联系人列表如何实现A-Z快速定位
  • 广播和EventBus的区别
  • 主线程Looper循环为什么没有卡主线程?
  • SharedPreference的线程安全、进程安全,如何跨进程
  • Android 中实现多线程: threads, Handler,AsyncTask, IntentService
  • Android 中如何实现多进程
  • 自定义View的过程:measure,layout,draw
  • theme 和 style 有什么区别,优先级
  • 有哪些进程间通信方式
  • View 的渲染过程
  • Binder 的原理和优势
  • Android 中有哪些动画,都说下
  • Serializable 和 Parcelable 的区别
  • 你知道哪些Layout,ConstraintLayout 的特点是什么

四大组件

  • 当内存不足时Service被杀死了,如何重启这个Service

  • 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为我们做了哪些内存优化
  • 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)

抽象问题

  • 讲讲做过的有挑战性的项目
  • 你自己的亮点在哪里,你的加入可以给团队带来什么
  • 技术规划,怎么发展

设计题

  • 如果让你设计一个音乐播放器,要实现哪些接口
  • 设计一个图片下载库:深挖 Glide,如果图片没有设置有效期,如何保证缓存被更新???

最后

除了文中提到的四十道面试题,我从全网收集了五十份Android面试笔记,归纳整理之后,加上了自己的一点理解。
至于怎么获得,只需要关注我一下,然后点击获取:Android面试笔记

记得要关注我哦~

 

以上是关于想都不敢想,这个Android开发为了通过面试竟然做出这样的事情!的主要内容,如果未能解决你的问题,请参考以下文章

P7级别的Android开发,面试竟然被 Framework 那些知识点绊倒了

5年老Android面试竟然被这3道Android基础题难倒了,附大厂真题面经

程序员面试被一顿diss,结果却被录用了。原因竟然是...

浅析现代Web端im即时通讯开发技术

人人都说Android凉,一看,就这?Android的面试竟然这么简单?

十年沉淀,回头发觉我当年面试 “Android” 竟然这么难!