O(∩_∩)O~今天又给大家带来了21道Android高级面试题,搞懂了这些相信你去面试的时候一定可以镇住面试官

为此我把这些知识整理成了一个983页PDF从基础到进阶。含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化线程.View.OpenCV.NDK等应有尽有。还有辅之相关的视频+学习笔记

这是我印象深刻的一道题,很明显它是我的第一次,那时我去一家公司(暂时叫它T公司吧)面试外派到韩国三星的工作机会。T公司的面试官是一个叫Bely架构师,显然那个时候Android开发是稀缺资源,知道Service那都不得了了,当然Bely也没打算为难我(必竟也工作4年多了,人长得也不错),我轻松对答:

Service是一个专门在后台处理长时间任务的Android组件,它没有UI。它有两种启动方式,startService和bindService。

你猜得没错,Bely紧接着问我:这两种启动方式的区别。

startService只是启动Service,启动它的组件(如Activity)和Service并没有关联,只有当Service调用stopSelf或者其他组件调用stopService服务才会终止。
bindService方法启动Service,其他组件可以通过回调获取Service的代理对象和Service交互,而这两方也进行了绑定,当启动方销毁时,Service也会自动进行unBind操作,当发现所有绑定都进行了unBind时才会销毁Service。

这应该是比较关键的区别了,在面试前我刚刚用Serivce做过一个音乐播放器。几年后,我在深圳面试过很多人,他们中有60-70%的人没有使用Service的经验,让我一度感觉得深圳这座城市做Android开发的比较浮躁。因为这儿工作机会太多了,初级的开发者都比较急功近利,不需要在自己身上下太多的功夫也可以找到工作(当然这是片面的认识)。

当然还有其他的区别,如两种调用对Service生命周期函数影响,面试官也可以就这个问题展开一下。

当我遇到面试者知道怎么使用Service,也如多年前的我可以自如的答出startService和bindService的区别时,我一般会多问一句:

Service的onCreate回调函数可以做耗时的操作吗?

很多人都会说:可以。

原形毕露,他前面的回答只是在面试前预习了一下面试题而已。如果知道Service的onCreate是在主线程(ActivityThread)中调用的,耗时操作会阻塞UI,我一般再接着问:

如果需要做耗时的操作,你会怎么做?

问题便这样展开了,一个人是否真正懂得原理会灵活运用,一下子便能看出来。 当面试者回答到线程和Handler方式时,我会再问一下对方:

是否知道IntentService,在什么场景下使用IntentService?

这也是面试官要看的点,真正的项目需要一个开发人员对某个问题有一定的深度,也需要对整个Android的知识点有一定的广度。深度代表这个人对问题认真对待有钻研的精神,广度代表这个人在面对同一个问题时,会更容易从多种可行的方案中选出最合适的一种。

Service的实际项目中一直被很多人忽略,为什么我一再强调Service很重要,我们来看看,如果对Service完全无知会在工作中遇到什么问题。

场景:如果一个应用要从网络上下载MP3文件,并在Activity上展示进度条,这个Activity要求是可以转屏的。那么在转屏时Actvitiy会重启,如何保证下载的进度条能正确展示进度呢?

没有Service概念的人,一般想出来的方案如下:

  1. 在转屏前将进度缓存,转屏后再读出来。
  2. 使用android:configChanges设置,让转屏时Activity不销毁和重建。

针对第1个方案,我会继续问他将进度值存在哪里? 转屏的过程中,我们知道Activity的重建算是比较耗时的,会可能会有几百毫秒以上,那么这时候下载线程仍然在工作,进度肯定和保存时的进度不一致了,如何处理这个问题呢?

第2个方案,大家可以自己展开思考,实际的项目中可能会需要额外做一些事情来处理ContentView的横竖布局的问题。

如果使用Service来解决这个问题,看似是比较完美的,不过就会涉及Activity(UI)和Service的交互问题,这个我们以后再讨论。

最后

本文在开源项目腾讯文档已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

目前已经更新的部分资料,需要的自取:



1mDmD-1621570729654)]
[外链图片转存中…(img-Az62i4wx-1621570729656)]

中高级Android面试中你不得不会的知识点,3面直接拿到offer相关推荐

  1. 入职三个月,游戏SDK开发总结,中高级Android面试中你不得不会的知识点

    2.2 游戏SDK的流程图 游戏SDK最核心的是登录和支付功能,其它的都是运营相关的,例如埋点.数据统计等等~ 登录和支付的流程大概如下图: 图画的比较简陋,解释一下,上半部分是登录流程.下半部分是支 ...

  2. 中高级Java面试中你不得不会的知识点,完整版开放免费下载!

    正文 如果你参加过一些大厂面试,肯定会遇到一些开放性的问题: 1. 写一段程序,让其运行时的表现为触发了5次Young GC.3次Full GC.然后3次Young GC: 2. 如果一个Java进程 ...

  3. 为何优秀的程序员不断离开?,中高级Java面试中你不得不会的知识点

    以下为译文: 鉴于我刚刚换了份新工作,所以最近有很多人问我为何有此决定. 一般来说,每当有人离职时,同事.经理.人力资源,甚至朋友和家人都想知道其中的原因.就我个人而言,我一般会给出不太让人满意的答案 ...

  4. 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点

    对于一名高级 Java 工程师来说,JVM 可以说是面试必问的一个知识点,而大多数人可能没有对 JVM 的实际开发和使用经验,接下来这一系列文章将带你深入了解 JVM 需要掌握的各个知识点.这也将帮助 ...

  5. 机器学习(Machine Learning)、深度学习(Deep Learning)、NLP面试中常考到的知识点和代码实现

    网址:https://github.com/NLP-LOVE/ML-NLP 此项目是机器学习(Machine Learning).深度学习(Deep Learning).NLP面试中常考到的知识点和代 ...

  6. 一线互联网大厂中高级Android面试真题收录!大厂直通车!

    行业激烈变化时,恰恰是机会最多的时候 坦白讲,许多人骨子里害怕变化和竞争. 其实大可不必. 一来,怕也没用嘛.二来,变化越快,组合要素增加了,意味着新的工作机会越多. 就像传统媒体VS新媒体. 放在1 ...

  7. Android面试中常见问题集锦

    Android面试中常会被问到的问题及解答方式: http://www.cnblogs.com/deman/p/5860976.html 1,PendingIntent 和Intent的区别: Pen ...

  8. flutter全屏时钟!9次Android面试经验总结,学习路线+知识点梳理

    前言 回顾一下自己这段时间的经历,三月份的时候,疫情原因公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷.到五月份,公司开始第二波裁员,我决定主动拿赔偿走人 ...

  9. AUC/ROC:面试中80%都会问的知识点

    本文分享自华为云社区<技术干货 | 解决面试中80%问题,基于MindSpore实现AUC/ROC>,原文作者:李嘉琪. ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的 ...

  10. android智能!46道面试题带你了解中高级Android面试,吐血整理

    前言 大家应该看过不少人分享的面试成功的面经,是不是觉得自己"说不定也可以"呢? 这里重提一个理论:幸存者偏差.当取得资讯的渠道,仅来自于幸存者时(因为死人不会说话),此资讯可能会 ...

最新文章

  1. Java图形化界面设计——容器(JFrame)
  2. -bash: git: command not found
  3. 只有失去了,才知道珍惜!!!
  4. Go语言介绍 安装 基础命令(一)
  5. kettle将文件路径定义为_kettle_步骤解释
  6. linux监听远程ip,设计一个脚本,监控远程的一台机器(假设ip为123.23.11.21)的存活状态,当发现宕机时发一封...
  7. Android开发中如何创建自定义对话框
  8. 【牛客 - 551D】CSL 的字符串(单调栈,思维)
  9. html button跳转页面_HTML跳转到页面指定位置的几种方法
  10. c++ hough变换代码_hough变换原理以及实现(转载)
  11. html 360 浏览器图片自适应,360浏览器看图模式 一键保存高清套图
  12. eclipse安装中文补丁包
  13. 内存CL-RCD-RP-RAS含义
  14. windows资源管理器经常出现无响应 window语言栏不见了
  15. 前国际奥委会主席罗格去世,敬生命!这些残奥特写太戳了
  16. Android静态壁纸和动态壁纸的使用和理解
  17. C++泰勒公式实现反余弦函数
  18. latex 论文致谢
  19. 【总结】C#上传excel文件到Sql server数据库
  20. 脑电分析系列[MNE-Python-20]| 脑电图处理和事件相关电位(ERP)

热门文章

  1. 算法案例分析—字符串模式匹配算法
  2. 黎曼猜想--论文笔记《On the Number of Primes Less Than a Given Magnitude》
  3. cocos小小打飞机游戏项目源码资源共享学习
  4. 编译原理第六七章总结
  5. 小散量化炒股记|Python也能量化财务指标!教你用净资产收益率选股!
  6. 还在到处找Linux内核的学习资料吗?你想要的都在这里
  7. 笔记本连接老式显示器(VGA线+HDMI接口)
  8. 【Windows XP】下载地址及产品密钥
  9. 利用python3 爬取 网易云 上 周杰伦所有专辑,歌曲,评论,并完成可视化分析已经歌曲情绪化分析...
  10. python爬虫|post的响应,利用python实现有道翻译在线翻译