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

news2024/11/16 10:54:11

在最近的 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.coloradmin.cn/o/456079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

射频封装技术:层压基板和无源器件集成

射频和无线产品领域可以使用非常广泛的封装载体技术,它们包括引线框架、层压基板、低温共烧陶瓷(LTCC)和硅底板载体(Si Backplane)。由于不断增加的功能对集成度有了更高要求,市场对系统级封装方法&#xf…

精进云原生 - Dubbo 3.2 正式发布

作者:Dubbo 社区 我们非常高兴地宣布,Dubbo 3.2 已经正式发布了!这个版本带来了许多新功能和改进,这也是 Dubbo 在面对云原生化的当下的一次重要的尝试。 背景介绍 Apache Dubbo 是一款 RPC 服务开发框架,用于解决微…

nodejs+vue 蛋糕甜品商城系统

根据蛋糕甜品商城系统的功能需求,进行系统设计。 系统功能:用户进入系统可以对首页、商品信息,公告信息,个人中心、购物车,客服中心等功能进行操作; 后台主要是管理员,管理员功能包括个人中心、…

大学生用什么蓝牙耳机好?2023好用的蓝牙耳机推荐

近几年,蓝牙耳机市场不断扩大,逐渐取代有线耳机成为最受人欢迎的数码产品之一。作为蓝牙耳机主要受众群的大学生,用什么蓝牙耳机比较好呢?下面,我来给大家推荐几款便宜好用的蓝牙耳机,一起来看看吧。 一、…

apple pencil必须要买吗?高性价比电容笔排行榜

可能很多人都觉得苹果的原装电容笔是无可替代的,但在我看来,这是要看我们的预算和需要了。如果你对绘画的要求不是很高,你可以选择平替电容笔,而并非Apple Pencil,因为它的价格非常昂贵。为了让大家对电容笔有更深的了…

KeePass搭建一个私人密码库

本文转载于我的博客KeePass搭建一个私人密码库 前言 {% note info no-icon %} 既然有人想看那我就不咕了嘻嘻 {% endnote %} 不知道在哪部电影里看到过这样一句话:根据社会工程学,正常人人脑是不会记住超过3种以上完全不同的复杂密码 所以你只要泄露一个…

智慧水务建设的发展与配电设计

摘要:目前以新技术应用带动水务信息化技术水平的全面提升,是水务发展的必然趋势,全国智慧水务正如火如荼建设中。智慧水务聚焦供水安全保障与水务精细化管理,本文通过各应用场景深入分析智慧水务建设价值,提出智慧水务…

Redis集群(caluster)

Redis集群(caluster) Redis集群是一个提供在多个Redis节点间共享数据的程序集 1. Redis集群的作用: Redis 集群是 Redis 的分布式实现,在设计中按重要性顺序具有以下目标: 高性能和线性可扩展性,多达 1000 个节点。没有代理,使…

Pyqt应用相关之PDF汇总案例说明

相信有不少小伙伴遇到了想要把多份pdf汇总到一起的问题,本期就带来用Pyqt界面制作的关于pdf汇总的教学流程。 def pdf_files_btn_click(self):files QFileDialog.getOpenFileNames(self, os.getcwd(), opentxt, PDF Files(*.pdf))file_list files[0]self.pdf_file…

2023年6月DAMA-CDGP数据治理专家认证请尽快报名啦!

目前6月DAMA-CDGP数据治理认证考试开放报名地区有:北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中,打算参加6月考试的朋友们可以抓紧时间报名啦!!! 5月初,…

(一)服务发现组件 Eureka

1、Eureka 简介 Eureka 是Spring Cloud Netflix 微服务套件中的一部分, 它基于Netflix Eureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。我们只需通过简单引入依赖和注解配置就能让Spring Boot 构建的微服务应用轻松地与Eureka 服务治理…

两百左右哪款蓝牙耳机好?两百左右高性价比蓝牙耳机推荐

现如今,蓝牙耳机无疑已经成为学生党外出的标配了。比起一些动辄上千的蓝牙耳机,两百左右的似乎更符合学生党的选择。接下来,我来给大家推荐几款两百左右高性价比的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

Spring 循环依赖处理之三级缓存设计

一、思考 1、Spring是如何解决循环依赖问题的? 2、为什么要使用三级缓存?二级缓存能否解决问题? 3、提前暴露对象暴露的是什么? 4、主要源码 二、循环依赖 1、介绍 如上图,创建A之前需要先创建B,创建B之前需要先创建A,造成循环依赖。 由于A没创建完成&am…

C++:IO流

CIO流 C系统实现了一个庞大的类库,其中ios为基类,其他类都是直接或间接派生自ios类 注意: 1. cin为缓冲流。键盘输入的数据保存在缓冲区中,当要提取时,是从缓冲区中拿。如果一次输 入过多,会留在那儿慢慢…

今年SMETA审核费用即将涨价

【今年SMETA审核费用即将涨价】 SMETA全称( Sedex Members Ethical Trade Audit ),即Sedex会员社会道德贸易审核,它是Sedex发起的一种负责任的供应链审计方法/项目。 Sedex是一个全球性的责任商业平台,SMETA是审核方法…

大白话chatGPT GPT的发展区别

大白话chatGPT & GPT的发展区别 从GPT名字理解chatGPTchatGPT三步曲GPT-1到GPT-4GPT-1~GPT-4的相同点GPT-1~GPT-4的区别GPT-1——pre-training fine-tune,自监督学习无监督预训练有监督微调GPT-2——zero-shot,无监督学习,多任务学习GPT…

机器学习快速入门1(机器学习概念与数据预处理)

文章目录 1.机器学习介绍2 机器学习7大步骤3.数据预处理八大策略4 缺省值、异常值、重复值处理**rand、randn、randint区别**normal与randn缺失值处理判断缺失值删除缺失行填充缺失值 重复值处理异常值处理 5 抽样VS全量数据为什么需要抽样简单随机抽样等距抽样分层抽样整群抽样…

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

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

Ceph入门到精通-Ceph 编排器简介

第 1 章 Ceph 编排器简介 作为存储管理员,您可以将 Ceph 编排器与 Cephadm 实用程序搭配使用,能够发现设备并在 Red Hat Ceph Storage 集群中创建服务。 1.1. 使用 Ceph Orchestrator Red Hat Ceph Storage Orchestrators 是经理模块,主要…

深入JVM了解Java对象实例化过程

文章目录 一、对象创建方式二、对象产生步骤1、判断对象是否已经加载、链接、初始化2、为对象分配内存空间3、处理并发问题3.1 TLAB 4、初始化零值5、完善对象内存布局的信息6、调用对象的实例化方法 <init>7、总结 三、对象的内存布局1、对象头1.1 运行时元数据&#xf…