当前位置:首页 > 移动端 > Android高级开发面试题总结(很全面,不含答案)

Android高级开发面试题总结(很全面,不含答案)

2022年08月05日 19:40:47移动端10

每次面试过后,我都会把能想起来的面试题记录下来,方便及时补充知识。
下面记录的,都是我近年面试Android岗位所碰到的面试题,基本都是一些知名公司,为避免不必要的麻烦,公司名就隐去了,面试前可对照此面试题列表一一复习。

(本文删过一段时间,后来又重新发出了。所以网上看到别人复制我的,发表时间却比我早,汗……)

D办公面试题:

  • app保活的方式
  • 对binder的了解
  • ANR的发生原因
  • OOM的发生原因,如何分析
  • 哪些工具来分析app性能
  • 在Application的attachBaseContext 方法做耗时操作会ANR吗
  • Handler为什么会造成内存泄漏?相关对象是怎么持有的
  • Retrofit的原理,动态代理可以传入类而不传入接口吗
  • OKHttp的请求复用
  • 有哪些线程安全的容器,及其原理
  • 如何创建多进程,Activiy和Service如何通信
  • onSaveInstanceState()和onRestoreInstanceState()调用时机
  • Looper.prepare()做了什么
  • RxJava多次调ObserverOn,哪次生效

ZJ面试题:

1.HTTP基础操作有哪些,HTTPS的S是什么
2.webview加载比较慢怎么解决
3.Java线程安全有哪几种方式,synchronized和lock的区别,重量级锁
4.handler机制的几种角色,handler发送和接收消息,是靠什么实现的
5.handler的barrier机制,IdleHandler的运作
6.service的两种启动方式的区别,bindService的应用场景
7.怎么衡量app性能,用哪些指标,工具
8.anr的发生有哪些原因
9.有序和无序广播引发anr,一样吗
10.sharedPreference有哪些缺陷,为什么不能存大数据,存了会怎样
11.组件化的方案,组件间如何通信
12.ARouter的原理,缺陷
13.使用的网络请求框架,有做哪些优化
14.进程和线程的区别(本质)
15.Android如何创建多进程,什么场景会用到多进程
16.Android进程间通信的方式,Linux进程间通信的方式
17.android为什么使用binder作为通信机制,某场景为什么使用socket
18.TCP和UDP的区别,HTTP用的是哪个,UDP的使用场景

  • Java 有哪些锁
  • HashMap原理,红黑树原理,为什么能提升效率,时间复杂度
  • Handler的postDelay原理
  • 工作中做的最有挑战性的事

某视频app公司面试题:

  • Activity启动模式。
  • Activity生命周期,从A页面打开B页面,两个页面的生命周期。
  • onStartCommand的返回值和参数的作用。
  • Synchronized关键字。一个线程访问某个类的Synchronized成员方法A,同时另一个线程可以去访问这个类的Synchronized成员方法B吗?
  • App的启动优化。
  • Handler,Looper,MessageQueue的关系。Handler通过sendMessageDelayed发送延时消息, 消息什么时候入队列?
  • 主线程的Looper死循环为什么不会导致ANR?
  • Android 动画的实现方式。
  • 项目中有没有用到组件化,如何实现组件化。
  • Hybrid开发中Android和H5的交互有哪些方式。
  • 项目是怎样的架构,为什么这么搭建。

某BS物流公司的面试题;

  • 本地广播和全局广播的区别,本地广播的实现原理。
  • 常见第三方框架及其实现原理。
  • SQLite数据库操作。
  • Http请求中包含哪些内容,上传文件和发起请求的post请求的区别。
  • 线程池有哪几种,如何运用。
  • 设计实现大批量数据上传的方式。
  • MVC,MVP,MVVM架构的区别。
  • 如何解决Handler导致的内存泄漏。
  • 进程间通信的方式。

某厂TB电商及CN物流岗位的面试题:

  • View的绘制流程。
  • 实现延时任务的几种方式,postDelay,AlarmManager,TimerTask的区别。
  • 做过哪些优化性能的工作?如何考量优化的成果。
  • http和http2.0,以及https的不同。
  • Art虚拟机和Dalvik虚拟机。
  • 三级缓存的原理。
  • LruCache算法的原理。
  • 项目中用到了哪些设计模式,Android源码中用到设计模式的场景。
  • Java8有什么新特性。
  • Java类如何加载,类加载的过程。
  • 页面卡顿如何解决,viewHolder起什么作用。
  • 如果有大数据量网络请求,该如何优化

另某厂电商KL应用岗位面试题;

  • 在浏览器输入网址到打开网页,中间的过程。
  • 如何统计工程的代码量?如何去掉代码注释的影响?
  • 模式匹配
  • apt ,aop
  • 标签注解的原理
  • 热修复的原理。
  • 线程池的原理,如果核心线程数5,最大线程数10,新来的线程会怎样?
  • 如何在服务器接口未准备好的情况下调试接口?
  • 如何抓取Https传输的数据?
  • Android 与Js的交互,接口存在的安全隐患及修复
  • 不同方式创建字符串,通过==和quuals比较的结果

WY音乐多媒体岗位面试题:

  • 对第三方框架的了解。EventBus可以跨进程通信吗?
  • Android P有什么新特性,后台限制策略是通过怎样的API来处理的?
  • HashMap的原理,hashCode的作用,重写equals为什么要重写hashCode方法
  • Synchronizd修饰静态方法也修饰了非静态方法,可以在两个线程同时被调用吗?
  • padding和margin的区别。给固定大小及wrap_content的textView设置padding,它的可点击区域会变化吗?
  • 如何自定义view, Canvas的作用
  • onMesure()方法的参数,MeasureSpec的结构
  • 动画有哪几种?属性动画怎么用,插值器什么作用
  • 讲一下include,merge 和viewstub。 viewstub可以被重复加载吗?在view树里是怎样的存在?
  • 对线程的理解,线程同步有哪几种方式
  • final关键字的作用,为什么匿名内部类里用到的变量必须是final类型的?
  • handler, Looper, MessageQueue的关系,这三个可以一对多吗?怎么保证message能被其对应的handler处理?
  • 触摸事件传递过程。有个竖向滑动的ViewGroup里嵌套了横向滑动的view,如何处理滑动冲突?
  • onSaveInstanceState触发的时机。

某母婴平台部分面试题:

  • 自定义view时如何刷新布局,invalidate会改变宽高吗
  • Java泛型是伪泛型吗
  • new Integer(1) == 1会执行拆箱吗
  • Looper无限循环为什么不会造成卡死
  • 组件之间,activity如何跳转
  • HTTPS及其双重检验

继续补充

某高校合作研究机构的面试题:

  • HashSet的原理,如何保证元素不重复的
  • 项目中登录密码是怎么加密的
  • 如何保证HTTP通信的安全
  • git存储的是快照还是差异
  • aop 代理
  • 了解哪些设计模式,讲解策略模式
  • 泛型是怎么回事,类型擦除发生在什么时候
  • 列出常用的Linux操作,如何查看内存占用

某小电商平台:

  • 如何计算bitmap占用的内存
  • 内存泄漏都有哪些可能的原因
  • 数据库优化,异步操作数据库会不会导致内存泄漏,怎么解决
  • MVP,MVVM模式。

某炒股平台面试题:

  • 自己实现StringBuffer类及其append方法
  • 如何优化ListView的显示
  • 有多个应用都能接收某个action广播,如何做到广播只被特定的应用接收到
  • 网络下载图片并保存到SD卡,过程涉及哪些IO类
  • 实现3秒延时后给TextView设置文字。
  • 有哪些措施能加强应用的安全性。
  • apk加固的原理。
  • 哪些情境会导致内存不一致
  • 如何检测应用卡顿的原因
  • 主线程要等待几个子线程处理完成后才能继续处理,该怎么实现

某人脸识别平台:

  • activity启动过程
  • BroadcastReceiver的工作原理
  • HandlerThread和Thread的区别,HandlerThread在Android中哪些场景用到
  • 普通线程以及线程池里的线程,如何给线程命名,设置优先级
  • 某个工具类的方法,传入了activity的回调,怎么解决内存泄漏
  • Object类的clone()是深克隆吗?怎么实现深克隆?
  • IntentService是怎么新建线程的?
  • MVP模式里,V是哪些?startService这样的操作,应该写在V里,还是P里

补充:

  • synchronized的实现原理,和lock的区别。
  • 多进程操作文件,怎么解决同步?
  • CAS同步方法。
  • binder的实现。
  • 插件化的原理。如果自己去设计插件化的框架,怎么设计?注意哪些地方?
  • 第三方框架及其原理。在用第三方框架时有没有做比较,了解项目之外的第三方框架吗?
  • 如何分析ANR问题?腾讯Bugly这样的框架是什么原理。
  • JNI开发,及原理。
  • Java反射的原理。
  • dex, odex是什么。
  • Android系统开机过程。
  • 面向切面编程。
  • AutomicInteger的原理。
  • 调用System.gc()会怎样,系统什么时候会触发GC。
  • 线程的sleep和wait的区别。
  • Google最新动态,Android最新变化等。
  • 队列有哪几种。
  • 从点击桌面图标,到App启动中间发生了什么。
  • fragment生命周期,和activity的配合
  • gilde加载图片
  • HandlerThread
  • Java 集合有哪些?哪些是线程安全的
  • 类的加载及静态变量,成员变量等的初始化顺序。
  • 线程池里的线程是如何复用的
  • HTTP请求头,响应都包含哪些内容
  • activity的四种启动模式分别在哪些场景会用到
  • 弱引用和软引用的区别,使用场景
  • 线程池里的任务如果发生异常了,会怎样
  • 手写二分查找算法
  • 栈内有个singleTask的activity,再次启动它时,生命周期怎样
  • 设计一个埋点功能模块,应该怎么做?
  • Java异常分为哪几类?RuntimeException包含哪些?
  • Volley框架存储请求数据时,key是什么?
  • 请基于数组实现队列。
  • 如何防止网络请求里的数据被抓包
  • fragmentTranstion有哪些操作?fragment如何回退?
  • 多维数组的长度,及初始化
  • surfaceView和View的区别
  • 线程间如何通讯
  • 自定义view时,如何在view被销毁时保存数据
  • activity,window,view的关系
  • 使用recyclerView实现三级item可伸缩的列表,如何实现

上面这些都是技术的问题,还有一些频繁被问到的体现技术能力的问题:

  • 在工作中做过的最有难度的需求是什么,是怎么实现的。
  • 工作中遇到的最难的Bug是怎样的,及解决过程。
  • 工作中代码优化、性能优化等,是怎么做的,代码规范性如何保证。
  • 在团队中担任怎样的角色,团队的开发流程是怎样的。
  • 有开源项目吗?
  • 平时怎么获取新知识。

另外,作为Android开发,只会Android和java的知识是不够的,虽然可以应付一般工作,但是如果想进阶的话,下面这些技能起码要掌握一二:

  1. Java虚拟机。推荐看《深入理解Java虚拟机》
  2. 设计模式。经典书籍很多,比如《大话设计模式》
  3. 数据库操作。
  4. Http,TCP/IP相关
  5. Android源码,底层实现。
  6. 跨平台开发技术,比如ReativeNative,flutter,week等。
  7. Android和其他方向的行业新技术,新动态
  8. Kotlin,python,Linux等。

这些面试题的答案贴出来的话太多了,而且还不一样全面准确。需要的话各位自己去研究,把这些都搞清楚并能在面试中流畅应对的话,相信通过中高级Android 面试是没问题的了。

祝成功~~

作者:此去正年少
来源链接:https://blog.csdn.net/fenggering/article/details/82911441

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/mobile/17944.html

标签: 高级面试题
分享给朋友:

“Android高级开发面试题总结(很全面,不含答案)” 的相关文章

android kotlin面试题,Kotlin面试25题

android kotlin面试题,Kotlin面试25题

大家好,这一期呢,我们谈一下kotlin的面试题。 第1题,什么是kotlin? kotlin是静态类型的编程语言,运行于jvm之上。 第2题, 是谁开发了kotlin? kotlin是由jetbrains开发的。 第3...

Spark常见20个面试题(含大部分答案)

Spark常见20个面试题(含大部分答案)

1、什么是宽依赖,什么是窄依赖?哪些算子是宽依赖,哪些是窄依赖? 窄依赖就是一个父RDD分区对应一个子RDD分区,如map,filter 或者多个父RDD分区对应一个子RDD分区,如co-partioned join 宽依赖是一个父RDD分区对应非...

遇到的面试题记录

1、面试题题目相关的问题,有一张订单表,有个订单日期字段,其他有订单id、下单人、金额信息,要统计每天的总金额,需求查询4月25到6月5号之间的数据,要求:中间没有日期的也要有展示数据,都是0 2、常量问题a = new Integer(2)b = new Integer(2)a...

面试题(1)最全BAT面试精华汇总

面试题(1)最全BAT面试精华汇总 面试题(2)阿里最全面试100题 面试题(3)史上最全阿里技术面试题目 面试题(4)阿里等BAT必考多线程面试60题 面试题(5)BAT面试笔试33题:JavaList、Java Map等经典面试题...

SQL常见的一些面试题

java基础-1 java基础-2 Dubbo面试题 springboot面试题 SQL常见的面试题 Linux常见的面试题   1.根据表中的信息编写sql语句:...

Android 高级开发面试题以及答案整理

Android 高级开发面试题以及答案整理

如今安卓开发不像前几年那么热门,但是高级人才依然紧缺,大家看着这句话是不是很熟悉,因为 web 高级人才也紧缺,c++ 高级人才一样紧缺,那么到了人工智能时代,人工智能时代的高级人才也同样会紧缺!似乎是高级人才的人在其他领域也是高级人才,而不是因为选择了...

jenkins 面试题

1.jenkins是什么 Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。 2.为什么使用jen...

Git仓库操作命令

Git仓库操作命令

创建仓库 git init 在当前目录执行,会生成.git目录文件,这个和SVN一致。 提交到仓库 git commit -m "first commit" -m:表示提交描述,必须要填。 添加到远端仓库 git re...

2019Android阿里&腾讯&百度&字节面试汇总(附面试题总结、Android书单)

2019Android阿里&腾讯&百度&字节面试汇总(附面试题总结、Android书单)

阿里,腾讯,百度,字节跳动,面试,android ,offer,学习资料,电子书,PDF,移动开发 1、基本情况 先简单说说我今年的面试经历吧,本人2018届211软件工程硕士生,Android开发岗。此文主要是2019年年初春招的面试和秋招面试经验汇总,最终拿...

高级工程师->架构师

高级工程师->架构师

1. 分解等级 技术人员典型的发展路径基本上都是下面的这个模式: 1) 0 ~1年:菜鸟,需要别人手把手来教 2)1 ~ 3年:初级,需要别人带你做 3)3 ~ 5年:高级,能独当一面,可以带初级技术人员了 4)5 ~ 8年:资深,能独挡多面 5)8...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。