Android 初中级开发社招面试总结!

面对外界的纷繁复杂和技术栈的日新月异,我们更应该清楚认识到自身技术的短板来进行知识巩固。目前移动端Android初中级人才大量涌入,正所谓僧多粥少,但楼主始终认为 苦心人,天不负,只要自身有过硬的知识广度和深度储备,在寒冬之下,同样也能站稳脚跟。

楼主年前走了一波社招试试水,一番厮杀后最终拿到多家offer,回味之余,不得不感叹现在的985、211出身的技术人才真的强(楼主只是普通本科),为了践行社会主义核心价值观,于是总结自己的面试经历,结合参考其他社招面试总结整理出这一份面试解答,承蒙大家不弃,文中知识点如有描述错误,还望提出探讨纠正。

注:答案在文末获取,因为实际开发与参考答案会有所不同,再者怕误导大家的理解,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。

Android篇


Activity

  • 说下Activity生命周期 ?

  • Activity A 启动另一个Activity B 会调用哪些方法?如果B是透明主题的又或则是个DialogActivity呢 ?

  • 说下onSaveInstanceState()方法的作用 ? 何时会被调用?

  • 说下 Activity的四种启动模式、应用场景 ?

  • 了解哪些Activity常用的标记位Flags?

  • 说下 Activity跟window,view之间的关系?

  • 横竖屏切换的Activity生命周期变化?

  • 如何启动其他应用的Activity?

  • Activity的启动过程?(重点)

Fragment

  • 谈一谈Fragment的生命周期 ?与Activity生命周期的不同 ?

  • 谈谈Activity和Fragment的区别?

  • Fragment中add与replace的区别(Fragment重叠)

  • getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之间的区别?

  • FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景

Service

  • 谈一谈Service的生命周期?

  • Service的两种启动方式?区别在哪?

  • 如何保证Service不被杀死 ?

  • 能否在Service开启耗时操作 ? 怎么做 ?

  • 用过哪些系统Service ?

  • 了解ActivityManagerService吗?发挥什么作用(重点)

Broadcast Receiver

  • 广播有几种形式 ? 都有什么特点 ?

  • 广播的两种注册方式 ?

  • 广播发送和接收的原理了解吗 ?(Binder机制、AMS)

ContentProvider

  • ContentProvider了解多少?

  • ContentProvider的权限管理?

  • 说说ContentProvider、ContentResolver、ContentObserver 之间的关系?

数据存储

  • 描述一下Android数据持久存储方式?

  • SharedPreferences的应用场景?注意事项?

  • SharedPrefrences的apply和commit有什么区别?

  • 了解SQLite中的事务操作吗?是如何做的

  • 使用SQLite做批量操作有什么好的方法吗?

  • 如何删除SQLite中表的个别字段?

  • 使用SQLite时会有哪些优化操作?

IPC(重点)

  • Android中进程和线程的关系? 区别?

  • 如何开启多进程 ? 应用是否可以开启N个进程 ?

  • 为何需要IPC?多进程通信可能会出现的问题?

  • Android中IPC方式、各种方式优缺点,为什么选择Binder?

  • Binder机制的作用和原理?

  • Binder框架中ServiceManager的作用?

  • Bundle传递对象为什么需要序列化?Serialzable和Parcelable的区别?

  • 讲讲AIDL?原理是什么?如何优化多模块都使用AIDL的情况?

View

  • 讲下View的绘制流程?

  • MotionEvent是什么?包含几种事件?什么条件下会产生?

  • 描述一下View事件传递分发机制?

  • 如何解决View的事件冲突 ? 举个开发中遇到的例子 ?

  • scrollTo()和scollBy()的区别?

  • Scroller是怎么实现View的弹性滑动?

  • invalidate()和postInvalidate()的区别 ?

  • SurfaceView和View的区别?

  • 自定义View如何考虑机型适配 ?

Handler

  • 谈谈消息机制Handler ? 作用 ?有哪些要素 ?流程是怎样的 ?

  • 一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?

  • 软引用跟弱引用的区别

  • Handler 引起的内存泄露原因以及最佳解决方案

  • 为什么系统不建议在子线程访问UI

  • Looper死循环为什么不会导致应用卡死

  • 使用Handler的postDealy后消息队列会有什么变化 ?

  • 可以在子线程直接new一个Handler吗 ?怎么做 ?

  • Message可以如何创建 ? 哪种效果更好 ? 为什么 ?

线程(重点)

  • 线程池的好处? 线程池的几个参数的理解,四种线程池的使用场景

  • Android中还了解哪些方便线程切换的类?

  • 讲讲AsyncTask的原理

  • IntentService有什么用 ?

  • 直接在Activity中创建一个thread跟在service中创建一个thread之间的区别

  • ThreadPoolExecutor的工作策略 ?

  • Handler、Thread和HandlerThread的差别?

  • ThreadLocal的原理

  • 多线程是否一定会高效(优缺点)

  • 多线程中,让你做一个单例,你会怎么做

  • 除了notify还有什么方式可以唤醒线程

  • 什么是ANR ? 什么情况会出现ANR ?如何避免 ? 在不看代码的情况下如何快速定位出现ANR问题所在 ?

Bitmap

  • Bitmap使用需要注意哪些问题 ?

  • Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这个Bitmap,为什么垃圾回收不会直接回收?

  • 一张Bitmap所占内存以及内存占用的计算

  • Android中缓存更新策略 ?

  • LRU的原理 ?

性能优化(重点)

  • 图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?

  • 内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?

  • WebView的性能优化 ?

  • Bitmap如何处理大图,如一张30M的大图,如何预防OOM

  • 内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象

  • 内存泄露和内存溢出的区别 ?AS有什么工具可以检测内存泄露

  • 性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理?

  • 强引用置为null,会不会被回收?

  • ListView跟RecyclerView的区别

  • ListView的adapter是什么adapter ?

  • LinearLayout、FrameLayout、RelativeLayout性能对比,为什么?

JNI

  • 对JNI是否了解
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

面试复习路线,梳理知识,提升储备

自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。

关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

  • 架构师筑基必备技能
  • Android高级UI与FrameWork源码
  • 360°全方面性能调优
  • 解读开源框架设计思想
  • NDK模块开发
  • 微信小程序
  • Hybrid 开发与Flutter

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:

Android开发七大模块核心知识笔记

《960全网最全Android开发笔记》

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

的频率,代表重要推荐指数

[外链图片转存中…(img-GkMqiRZF-1713734600268)]

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Android中四大组件分别是什么?它们的作用是什么? 答:四大组件分别是Activity、Service、Broadcast Receiver、Content Provider。它们的作用分别是: - Activity:用户界面的展示和交互。 - Service:后台运行的组件,没有用户界面。 - Broadcast Receiver:接收系统或应用发出的广播消息。 - Content Provider:数据共享组件,用于不同应用之间的数据交互。 2. 说一说Intent的作用? 答:Intent是Android中用于传递消息的一种机制,可以在应用内或应用间传递消息。Intent可以启动Activity、Service和Broadcast Receiver,并且也可以传递数据给这些组件。 3. 什么是ANR?如何避免ANR? 答:ANR即应用程序无响应(Application Not Responding),通常是由于主线程被阻塞导致的。为了避免ANR,需要注意以下几点: - 不要在主线程中进行耗时操作,例如网络请求和大量的计算。 - 避免在主线程中进行阻塞IO操作。 - 尽可能使用异步任务和线程池。 - 将耗时操作放入Service或者IntentService中处理。 4. 什么是Fragment?Fragment和Activity有什么区别? 答:Fragment是一种可以嵌入到Activity中的组件,可以在一个Activity中展示多个Fragment,也可以在多个Activity中复用同一个Fragment。Fragment可以看作是Activity中的一个子模块,具有自己的生命周期和用户界面。 区别: - Fragment需要依附于Activity才能使用,而Activity是独立的。 - Fragment可以被多个Activity复用,Activity只能使用一次。 - Fragment有自己的生命周期,Activity有自己的生命周期。 5. 什么是Handler?如何使用Handler? 答:Handler是Android中的消息机制,用于异步处理消息和更新UI。通过Handler可以将消息发送到主线程的消息队列中,然后在主线程中处理这些消息。 使用Handler的步骤: - 创建一个Handler对象,通常在主线程中创建,因为Handler会绑定主线程的消息队列。 - 在后台线程中发送消息到Handler中。 - 在主线程中处理消息。 6. 什么是RecyclerView?它和ListView的区别是什么? 答:RecyclerView是一种高度可定制化的列表控件,可以展示大量的数据,并且支持滚动和快速滑动。它和ListView的主要区别是: - RecyclerView的布局可以自由定制,可以实现瀑布流等效果。 - RecyclerView的ViewHolder可以复用,可以大大提高列表的效率。 - RecyclerView支持动画效果,可以实现更加流畅的用户体验。 7. 如何实现数据的持久化? 答:Android中有多种方式可以实现数据的持久化,包括: - Shared Preferences:用于存储少量的简单数据,例如应用的配置信息。 - 文件存储:可以通过FileOutputStream和FileInputStream将数据以文件的形式存储到本地。 - SQLite数据库:用于存储大量的结构化数据,例如应用的用户信息和日志等。 - Content Provider:用于不同应用之间的数据共享。 8. 什么是Service?它和Thread的区别是什么? 答:Service是Android中的一种后台运行的组件,用于处理一些长时间运行的任务。它和Thread的主要区别是: - Service是Android中的一种组件,可以和其他组件进行交互,而Thread是Java中的一种线程,不能直接和其他组件进行交互。 - Service可以在后台运行,即使应用被关闭也可以继续运行,而Thread需要在应用中运行。 - Service可以通过Intent启动和停止,而Thread需要手动创建和销毁。 9. Android中常用的布局有哪些? 答:Android中常用的布局有: - LinearLayout:线性布局,可以将子控件排列成水平或垂直方向。 - RelativeLayout:相对布局,可以根据控件之间的相对位置进行排列。 - FrameLayout:帧布局,可以将子控件叠加在一起。 - ConstraintLayout:约束布局,可以通过设置控件之间的约束关系进行排列。 10. 如何实现Activity之间的数据传递? 答:可以通过Intent来实现Activity之间的数据传递。Intent可以通过putExtra()方法将数据放入Intent中,然后在目标Activity中通过getExtra()方法获取数据。例如: ```java // 在源Activity中传递数据 Intent intent = new Intent(this, TargetActivity.class); intent.putExtra("key", "value"); startActivity(intent); // 在目标Activity中获取数据 String value = getIntent().getStringExtra("key"); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值