Android面试的时候却不知所以然,不如看看面试题所含的技术内容

首先,在文章开始之前,需要的是大家说明的是,这篇文章篇幅较长,通过这阶段面试分析,我们如果选择跳槽或者正在面试的时候,面对技术这一关卡应该怎么去做。如今很多开发者在面试回答面试官的技术问题时候,面试官要你详细说明的时候,只会说“这个谁都用过,主要是看需求要做什么”问题的严重性,顺便发表一点点自己的想法。我认为,现在我们都是到处的去寻找面试题以及他的答案,却在面试的说不出个所以然来,所以我认为,面试的前期需要去认真仔细的了解下题目所含技术的内容。我们不要成为码农,而要成为一个优秀的程序员这才是我们努力的方向,做好规划,努力学习,记录总结,养成这样的习惯。

要说现在热门的编程语言,大多数程序员都会说,Android,Java,Python,JS,PHP等,但Java应该是这其中应用最广泛的。但从各招聘信息上来看,Android程序员的薪资也是从最低4k月薪到高达百万年薪不等,从专业角度来说,架构师是薪资相对高的,实习生找开发岗现在也比较难了。

在近期,我在某平台上看到了一个大厂面试官的吐槽:

再让我们看看网友们的评论:

好多人都是知道怎么去做东西,但是不知其所以然。出了问题就百度,一鳞半爪的去解决问题,没有系统的知识体系。结果就是一旦遇到具体基础问题的话,就傻眼了。这是这名网友的评论也是大家认同最多的回复。

当然在评论中也有许多批判这位面试官的,认为,面试官问的问题,是有点过于简单,三年的工作经验,开发的思维应更具全局思维,笼统的问继承抽象多态,意义不大。

但是如果你的基本功扎实,解决问题的速度就快,缺少的只是经验而已。

下面是给大家分享的一些面试题以及所含内容的一些好的文章(文章链接请在文末获取),希望对大家有一定的帮助。

一.四大组件

  • Activity

  • Service

  • Content Provider

  • Broadcast Receiver

  • 请阅读上面的基础知识

四大组件是什么
四大组件的生命周期
Activity之间的通信方式
横竖屏切换的时候,Activity 各种情况下的生命周期
Activity与Fragment之间生命周期比较
Activity上有Dialog的时候按Home键时的生命周期
两个Activity 之间跳转时必然会执行的是哪几个方法?
Activity的四种启动模式对比以及使用场景
Activity状态保存与恢复
Activity 怎么和Service 绑定
Service和Activity怎么进行数据交互?
Service的开启方式
请描述一下Service 的生命周期
谈谈你对ContentProvider的理解
请描述一下广播BroadcastReceiver的理解(实现原理)
广播的分类
广播使用的方式和场景
本地广播和全局广播有什么差别?

二.存储

描述一下你知道的数据存储方式
SharedPreferences的应用场景,核心原理是什么
SharedPreferences是线程安全的吗?
描述一下图片存储在本地的方式
sqlite升级,增加字段的语句
数据库框架对比和源码分析
数据库的优化
数据库数据迁移问题

三.网络

描述一次网络请求的流程
HTTP报文结构
HttpClient和HttpURLConnection的区别
Volley,okhttp,retrofit之间的区别和核心原理和使用场景
描述一下https
https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
说一下三次握手,四次挥手的具体细节
我经常用面试问别人这道题,哈哈,为什么不能两次握手呢?要三次?
描述一下socket是什么东西
从网络加载一个10M的图片,说下注意事项
TCP与UDP的区别
client如何确定自己发送的消息被server收到?
WebSocket与socket的区别
网络请求缓存处理,okhttp如何处理网络缓存的

四.性能优化

PS:性能优化包括内存,处理效率,视觉流畅度,CPU,电量,流量等方面,针对手机的性能去做相应的方案。个人认为更应该把握好内存优化、处理效率(代码质量)、视觉流畅度(布局优化)。

ANR产生的原因是什么?
oom是什么?
什么情况导致oom?
有什么解决方法可以避免OOM?
Oom 是否可以try catch?为什么?
内存泄漏是什么?
什么情况导致内存泄漏?
如何防止线程的内存泄漏?
内存泄露的解决方法
内存泄漏和内存溢出区别?
如何对Android 应用进行性能分析以及优化?
怎么去除无用代码?
性能优化如何分析systrace?
用IDE如何分析内存泄漏?
跑一段你觉得有问题的代码段,gc,再跑,再gc,看看内存会不会一直上升
Java多线程引发的性能问题,怎么解决?

五.JNI

请介绍一下NDK
什么是NDK库?
如何在JNI中注册native函数,有几种注册方式?
Java如何调用c、c++语言?
JNI如何调用java层代码?
你用JNI来实现过什么功能吗?怎么实现的?

六.WebView

描述一下Webview的作用
WebView的内核是什么
描述一下WebView与js的交互方式
描述一下WebView的缓存机制
有没有用过第三方WebView组件?讲一讲优势

七.进程保活

做过进程保活吗?
5.0下和5.0上的保活方式了解吗?
描述一下进程回收的过程
如何降低进程的oom_adj

八.图片

说一下OOM的原因,如何避免
说一下三级缓存的原理
描述一下内存缓存的容器
LruCache其实是一个Hash表,内部使用的是LinkedHashMap存储数据
图片库对比
图片库的源码分析
图片框架缓存实现
LRUCache原理
自己去实现图片库,怎么做?(随便套个开源框架的原理)

九.网络

描述一次网络请求的流程
HTTP报文结构
HttpClient和HttpURLConnection的区别
Volley,okhttp,retrofit之间的区别和核心原理和使用场景
描述一下https
https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
说一下三次握手,四次挥手的具体细节
我经常用面试问别人这道题,哈哈,为什么不能两次握手呢?要三次?
描述一下socket是什么东西
从网络加载一个10M的图片,说下注意事项
TCP与UDP的区别
client如何确定自己发送的消息被server收到?
WebSocket与socket的区别
网络请求缓存处理,okhttp如何处理网络缓存的

领取面试题内容链接
点击链接加入群聊获取Android进阶资料【Android技术开发交流】940780115:https://jq.qq.com/?_wv=1027&k=58dqn5n

猜你喜欢

转载自blog.csdn.net/weixin_43902172/article/details/86250848
今日推荐