跳槽必备,全面总结Android面试知识点

news/2024/3/29 0:46:42/文章来源:https://blog.csdn.net/m0_70748458/article/details/130343106

在最近的 Android 开发(社招)面试中总结的 Android 基础知识点,已经拿到心仪的offer,回馈同学们,感谢其他大佬的分享。

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

如果喜欢的话,希望大家给个关注,点个赞呗,点击即可 找我拿该文章PDF版本的面试学习指南。
在这里插入图片描述

常规面试题

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 的特点是什么
  • 手机开发者选项有哪些,不保留活动是什么
  • 基本的数据类型有哪些?
  • String、StringBuilder、StringBuffer的区别?
  • Fragment是什么,使用场景和生命周期
  • 说一下Context和内存泄露
  • 线程创建的方法?
  • Activity的启动模式和适用场景?
  • ViewPager用过吗?然后扯到了它和Fragment联合;

内存泄露和内存溢出说一下

(1)内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

(2)内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。

内存溢出的原因及解决方法

(1)内存溢出原因:

①内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

②集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

③代码中存在死循环或循环产生过多重复的对象实体;

④使用的第三方软件中的BUG;

⑤启动参数内存值设定的过小

(2)内存溢出的解决方案:

①第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

②第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。

③第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

垃圾回收机制说一下?

四大组件

  • 当内存不足时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

1、Java中==和equals和hashCode的区别
2、int与integer的区别
3、谈谈对java多态的理解
4、String、StringBuffer、StringBuilder区别
5、抽象类和接口区别
6、Serializable 和Parcelable 的区别
7、string 转换成 integer的方式及原理
8、哪些情况下的对象会被垃圾回收机制处理掉?
9、什么是强引用、软引用、弱引用以及虚引用?
10、什么是依赖注入?能说几个依赖注入的库么?
11、静态代理和动态代理的区别,什么场景使用?
12、Java的异常体系
13、JVM的回收算法是怎样的
14、说一下泛型原理,并举例说明
15、能说说HashMap常用操作的底层实现原理吗?
16、垃圾回收机制和调用 System.gc()的区别?
17、说一下你所了解的设计模式有哪些
18、说下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堆,大小王出现在同一堆的概率(排列组合算数题)

Android第三方库源码

1、网络底层框架:OkHttp实现原理
2、OKhttp针对网络层有哪些优化?
3、网络请求缓存处理,okhttp如何处理网络缓存的?
4、从网络加载一个10M的图片,说下注意事项?
5、网络封装框架:Retrofit实现原理
6、响应式编程框架:RxJava实现原理
7、图片加载框架:Glide实现原理
8、Glide如何确定图片加载完毕?
9、Glide内存缓存如何控制大小?
10、加载bitmap过程(怎样保证不产生内存溢出)
11、Android中软引用与弱引用的应用场景。
12、LruCache原理
13、Fresco与Glide的对比:
14、Bitmap如何处理大图,如一张30M的大图,如何预防OOM?
15、事件总线框架EventBus实现原理
16、内存泄漏检测框架:LeakCanary实现原理
17、leakCannary中如何判断一个对象是否被回收?
18、依赖注入框架:ButterKnife实现原理
19、依赖全局管理框架:Dagger2实现原理
20、数据库框架:GreenDao实现原理

性能优化

这个主要结合你所做过的项目问,一般面试官会问你项目做过哪些方面的优化,常见的问法就是:
优化的思路是什么
用到了哪些技术
遇到了哪些困难(问题)
如何解决
有什么心得
主要结合自己项目回答。切记不要自己给自己挖坑,比如没有做过这方面优化,你为了表现自己,说做过,结果面试官往下问回答不出来,这关乎诚信问题,你们懂的~

抽象问题

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

设计题

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102686.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之访问者模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、访问者模式是什么? 访问者模式是一种行为型的软件设计模式,表示一个作用于某对象结构中的各元素的操作…

智能家居代码架构---简单工厂模式

(11条消息) 智能家居 (10) ——人脸识别祥云平台编程使用(编译libcurl库支持SSL,安装SSL依赖库libssl、libcrypto)openssl 依赖库行稳方能走远的博客-CSDN博客 看上面这个博客的往期文章 代码设计经验的总结,稳定,拓展性更强。一系列编程思…

DAX:概述ALL函数

简单的说,当ALL用作表函数时,忽略应用到表上的任何过滤器,并返回数据表;当ALL用作CALCULATE和CALCULATETABLE函数中修饰器时,ALL函数从扩展表中移除已经应用的过滤上下文。 注意自动存在(auto-eixist)对ALL()函数的影响…

选址-路径问题(Location-Routing Problem, LRP)

今天为大家介绍的是选址-路径问题(Location-Routing Problem, LRP),首先上目录 目录 问题简介 基础模型、扩展问题及应用 算法 参考文献 1 问题简介 为了更好地了解这个问题,我们不妨当一波老板。 想象一下我们是经营一家口罩生产企业的老板&am…

案例——数据表的基本操作

目录 案例目的: 创建表: 创建offices: 创建employees表: 修改表: 将 employees 的 mobile 字段移动到 officeCode 字段后: 将 birth 字段名称改为 employee_birth: 修改 sex 字段,数据类…

Vue的路由实现:hash模式 和 history模式原理及区别

目录标题 1、hash模式2、history模式 Vue-Router有两种模式: ** hash 模式和 history**模式。默认的路由模式是hash模式。 1、hash模式 简介:hash模式是开发中默认的模式,它的URL带着一个#,例如:http://www.abc.com/#/vue,它的…

Facebook、Google、亚马逊,谁将成为跨境电商的营销宠儿?

跨境电商在全球范围内的发展日益迅猛,而营销渠道的选择也变得越来越多样化。在众多的广告平台中,Facebook、Google和亚马逊被公认为是跨境电商卖家们最主要的营销平台。那么,这三个平台中哪个会成为跨境电商的营销宠儿呢? 一、Fac…

【GIT】git push后长时间没反应

方向一 查看是否添加ssh 打开git bash cd ~/.ssh看是否成功,能成功说明之前生成过,看文件夹下是否有id_rsa.pub和id_rsa文件,有的话跳过生成步骤3 输入 ssh-keygen -t rsa -C ‘your_emailexample.com’(注:your_emailexample.c…

二百左右的蓝牙耳机哪款好?200左右音质最好的蓝牙耳机

在日常生活中离不开智能手机,特别是对无线蓝牙耳机的需求程度也越来越高,但是市面上有很多的蓝牙耳机戴久了耳朵会出现不舒服,为了获得更好的使用体验,我整理了市面上200左右价位佩戴和音质都表现不错的蓝牙耳机。 一、南卡小音舱…

“SCSA-T学习导图+”系列:IPSec VPN原理与应用

本期引言: 本章主要讲解IPSec VPN相关理论概念,工作原理。从安全和加密原理入手,讲解了IPSec 在VPN对等体设备实现的安全特性,如数据的机密性、数据的完整性,数据验证等。重点分析IPSec封装模式,IPSec安全…

【HDCTF2023】wp

【HDCTF2023】wp 文章目录 【HDCTF2023】wpwebWelcome To HDCTF 2023SearchMasterYamiYamiLoginMaster mischardMiscMasterMiscExtremeMiscSuperMisc web Welcome To HDCTF 2023 在源码的 game.js中找到了flag 在控制台输出 console.log(seeeeeeeecret)得flag SearchMaster …

亚马逊美国站带绳窗帘

带绳窗帘 如果您在亚马逊商城发布商品,则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策(包括本政策)。 本政策涵盖的带绳窗帘 带绳窗帘是一种室内用窗帘,可通过一根吊绳控制升降。此类商品包括但不…

【PR 基础】轨道遮罩键、交叉溶解的简单使用

在上篇博客(【PR 基础】裁剪工具的简单使用)介绍了裁剪效果的使用,本篇博客在上篇的基础上继续添加 轨道遮罩键、交叉溶解的效果。 效果 步骤 1.可以先将恢复裁剪区域的关键帧删除 2. 接下来添加字幕,点击 新建-》旧版标题 点击…

vue3+ts+pinia+vite一次性全搞懂

vue3tspiniavite项目 一:新建一个vue3ts的项目二:安装一些依赖三:pinia介绍、安装、使用介绍pinia页面使用pinia修改pinia中的值 四:typescript的使用类型初识枚举 一:新建一个vue3ts的项目 前提是所处vue环境为vue3&…

flask学习-实践02

项目实战 入门文当(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客 入门项目 抄作业了!6 大 Flask 开源实战项目推荐_小詹学 Python的博客-CSDN博客 (66 条消息) GitHub 上有…

Transformer 位置编码代码解析

Transformer 位置编码代码解析 Transformer 的 Multi-Head-Attention 无法判断各个编码的位置信息。因此 Attention is all you need 中加入三角函数位置编码(sinusoidal position embedding),表达形式为: P E ( p o s , 2 i ) …

OpenText Exceed TurboX (ETX) 安全功能介绍

OpenText Exceed TurboX (ETX) 安全功能介绍 将所有重要的知识产权(IP )相关数据保存在受良好保护的中央数据中心是保护 IP 的最佳做法。安全的远程访问是保护知识产权的关键。 所有数据流量均采用最新标准加密技术进行加密ETX 整合多种身份验证系统ET…

FE_TA不知道的CSS 换行系列【1】white-space

在W3C官方描述中,white-space主要有以下两个作用: 是否进行空格合并,以及控制空格合并的方式;是否在soft wrap opportunities(文本中可进行换行的断点位置)处进行文本换行。 从字面意思来看white-space即…

私人工具集6——使用C# 创建一个简单的restful风格的WebAPI

创建一个简单的WebApi 工具:VS2022 创建新项目 打开VS2022,创建新项目,可以搜索API作为关键字。 为项目取个名字 创建的应用程序,选择WebAPI,注意,右侧的信息默认即可,不要随意选择。 点击创建&#xff…

nodejs+vue 学分置换管理系统

在大学四年参加了各类竞赛后,我发现参加各类比赛存在报名过程过于繁琐,评比过程不透明和易出错等问题,所以在定题时与老师商讨后确定设计和实现基于nodejs的高校竞赛信息发布系统,帮助老师发布竞赛内容,便于同学们线上…