前言

移动研发火热不停,越来越多人开始学习 android 开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。市面上也多是谈论知识图谱,缺少体系和成长节奏感,特此编写一份 android 研发进阶之路,希望能对大家有所帮助。

在这里我把攻城狮分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。

面试官的问题:

(1)问:点击一个图标到这个应用启动的全过程(前面是项目经验没啥好说的)。
答:点击图标后通过startActivity远程调用到ams中,ams中将新启动的activity以activityrecord的结构压入activity栈中,并通过远程binder回调到原进程,使得原进程进入pause状态,原进程pause后通知ams我pause了。ams再根据栈中activity的启动intent中的flag是否含有new_task的标签判断是否需要启动新进程,启动新进程通过startProcessXXX的函数。启动新进程后通过反射调用ActivityThread的main函数,main函数中调用looper.prepar和lopper.loop启动消息队列循环机制。最后远程告知ams我启动了。ams回调handleLauncherAcitivyt加载activity。在handlerLauncherActivity中会通过反射调用Application的onCreate和activity的onCreate以及通过handleResumeActivity中反射调用activity的onresume。一个应用就此启动。
(2)问:Retrofit原理。
答:主要是通过动态代理将接口直接转换成代理对象。动态代理和静态代理的区别,动态代理直接在虚拟机层面构建字节码对象。
(3)问:View自定义的流程,实现哪些方法。
答:1.实现OnMeasure,onlayout,onDraw. 继续问“onMeasure中会用哪些方法?”(我觉得这题可能没大好,我是想回答的详细点的,结果还没打到点他就说好,继续下一题,不知道是认可了还是觉得我答的过于啰嗦,如果觉得太啰嗦可以提出来啊。。。) 我回答onMeasure 中传入两个int数值,这个数值32位,前2位表示模式,后30位表示宽度、高度。这是外表容器给内部view的限制。一种模式是容器给你多大的值,你就是多大的值(match_parent),第二种,容易给内部view多大的空间,内部view不用管,是多大就是多大。第三种,容器给子view多大的空间,和子view自己算出来的占用空间,选择小的那个(wrap_content).说到这我正打算说onMeasure会调用measureChildwithmargin类的函数,他说好了,然后下一题.
(4)问:问我怎么设计app的。
答:基本都用的mvc架构,曾经有个项目使用mvp。还有其它一些整体设计上的问题,很零碎,但都答的差不多。
(5)算法题,面试官的表述不是很清晰,所以开始没理解他的意思,我归纳一下题目:有1,3,7三个面值的金钱,现在要取n元。怎么取个数最少。(n是已知数) 意思就是 1a+3b+7*c=n 什么情况(a+b+c)最小。当然这是我自己归纳出来的,他开始的描述让我想哭。
答:开始脑子有点没反应过来,把它当逻辑题做了,想了5分钟后才反应过来,这是编程题啊。遍历呀。 a的取值范围(0n)b的取值范围(0n/3) c的取值范围(0~n/7) 遍历取最小值。当然这种情况效率并不高,我当时也和面试官说了,没太考虑效率,如果需要可以再改。感觉他也认可,思路对就行了。 其它一些零碎的问题没印象了,主要就这些。

我们很多程序员都有一个大厂梦,但如何针对大厂进行面试准备,很多程序员就显得手足无措了。本文就根据自己一些见解谈谈如何准备面试。

关于笔者: 阿里巴巴 Android 客户端开发工程狮一枚,喜欢技术、热爱开源。

细节杂谈

之所以是细节杂谈,说实话,是因为真的不知道可以写什么,网上关于面试的文章很多,大概看了几篇之后,更不知道写什么了。而根据自己的面试经验来看,发现其实有很多细节,在面试的时候都没有被好好重视起来。所以,这里针对这些细节做个总结,也希望可以对你们有所帮助。

1. 准备一个良好的开场白

首先笔者理解的自我介绍的作用是缓解初次交谈的尴尬以及过渡开场,然后才是扩展为对候选人的口才、逻辑以及表达能力的判断。

如果你实在不知道怎么说,即便是把你简历上的姓名、年龄、爱好、工作经验复述一遍,至少也是起到了暖场的作用。当然要是能基于此,表现出一定出彩的地方,那自然是再好不过,多花点心思准备是值得的。

PS:最近看到一个有趣的分享,唐僧每次介绍自己:贫僧唐三藏,从东土大唐而来,去往西天拜佛取经。其实这几句话包涵了每人都要问自己的三个问题:我是谁?我从哪里来?我要到哪里去?

2. 谦虚是必要的,因为这是礼节

很大程度上,面试官还有一个身份就是以后可能要一起共事的同事或者老板,所以切忌不要表现的心高气傲,尤其在电话面试中,很难在短时间就能了解一个人,你所表现出的态度就显得非常重要,如果和面试官产生了争论,要注意谈话技巧,可以在你的观点前加上我理解的是什么什么…

就连牛顿说他不过是站到了巨人的肩膀上了,所以永远不要觉得自己有多牛,真正牛的人只会更谦虚。这里手动,他是我很喜欢的一个 Android 开发同学。

3. 大招放的好,工作何愁找

嗯,标题起的挺押韵,容笔者小小的骄傲下

安卓开发面试题,一个APP从启动到主页面显示经历了哪些过程?威力加强版相关推荐

  1. 录音机 在launcher中显示_「 腾讯 微信事业部 社招二面」——一个APP从启动到主页面显示经历了哪些过程?...

    8月份的时候离职,至今已经2个月了.突击复习下来结果算是有个交代了吧,有赞(深圳) .招商已经过了三面,等待HR面,腾讯过了二面,面试时状态还行,不知会不会有三面,许愿一个三面和HR面吧!(本人比较想 ...

  2. 一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)

    本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理.不介绍具体源码,仅仅构建一个大体框架. 原地址链接:http://www.jianshu.com/p/a72c5 ...

  3. 公司董事长——50w年薪程序员从顶端到谷底,一个APP从启动到主页面显示经历了哪些过程

    前言 在2020年1月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真 ...

  4. android github 多页面程序,论一个APP从启动到主页面显示经历的过程?

    前言 (个人观点.不喜勿喷) 本部分内容是关于Android进阶的一些知识总结,涉及到的知识点比较杂,不过都 是面试中几乎常问的知识点,也是加分的点. 关于这部分内容,可能需要有一些具体的项目实践.在 ...

  5. 安卓开发面试题及答案,一次哔哩哔哩面试经历,年薪50W

    没有稳定的工作,只有稳定的能力. 又到了万物复苏的季节,在程序猿这个行当里,作为 Android 开发出生的,在经历了八年的脱发生涯后,有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起,在 R ...

  6. 安卓开发面试题!带着问题深入学习Handler,进阶学习资料!

    进大厂本来就很难了,不过做足了准备,你会发现很多问题都迎刃而解了,当然有时候运气也占了一部分,除了运气以外,当然与我自身的努力也是分不开的.运气也是实力的一部分,毕竟天助自助者~ 每次到年底做总结的时 ...

  7. Flutter 里的语法糖解析,知其所然方能潇洒舞剑,安卓开发面试题及答案

    介绍完 late 接下介绍下 typedef, typedef 在 Dart 2.13 开始可以用于**「新的类型别名功能」**,比如: // Type alias for functions (ex ...

  8. android反射开启通知_作为Android开发者 你真的知道app从启动到主页显示的过程吗?...

    前言 之前我跟大家说过,在一个夜黑风高的晚上,我的男同事突然给我发了一条微信,我点开来看,他竟然问我Android从按下开机键到启动到底发生了什么?此刻我的内心如下图: 然后就在昨天晚上,我又收到了他 ...

  9. c++软件开发面试旋极面试题_经典软件开发面试题:浏览器中输入一个网址后发生了什么?...

    经典软件开发面试题:浏览器中输入一个网址后发生了什么? ​ 大家好, 这一期呢,我们来谈一个经典的面试题.这种题目是在浏览器中输入一个网址以后, 会显示一个网页,这期间到底发生了什么? 答案要求说的越 ...

最新文章

  1. kettle内存溢出
  2. 《精通Hadoop》:第 1 章 Hadoop 2.X
  3. 常用的Net Command
  4. # 电脑管家_如何彻底关闭电脑上的“恶心小广告”?联想电脑管家一步到位!...
  5. PowerManager.WakeLock使用(屏幕恒亮)
  6. Spring循环依赖,竟然有这样不可思议的坑!
  7. mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本
  8. mysql查询行数据_MySQL数据库~~~~~查询行(文件的内容)
  9. 第一章:计算机网络概述
  10. xml转matlab目标检测,将Cityscape转换为PASACAL VOC格式的目标检测数据集
  11. linux捕获鼠标点击事件文件,Linux捕捉鼠标事件和键盘事件的方法
  12. 今天手把手教你做一个Python版的迷宫小游戏
  13. MGF6mARice:利用分子图特征和残差块预测水稻DNAn6-甲基腺嘌呤位点
  14. CIO:人工智能将改变企业IT
  15. 2020最新天猫双十一自动获取喵币
  16. java发送邮件格式_java使用main函数进行邮件发送怎样设置邮件格式
  17. 如何建立广泛、牢固的人脉?
  18. Clickhouse 函数基础入门
  19. 【读图】钢铁侠 Elon Musk 的传奇人生
  20. 如何找到可靠的软件开发公司

热门文章

  1. Zookeeper客户端Curator使用
  2. linux mtd设备使用
  3. 一起来学Kotlin:概念:7. Kotlin 函数介绍:扩展函数,中缀函数,运算符函数,带有varrag输入的函数
  4. 安全教育平台显示服务器繁忙,为什么安全教育平台登录不上 安全教育平台登录不上是什么原因...
  5. 一次性将多个网址收藏到谷歌书签的文件夹中
  6. ubuntu20.04 nvidia 460显卡安装
  7. 标准H.460公私网穿越视频解决方案
  8. 快到假期了,还抢不到票?可以试试这两个工具
  9. 微信小程序头像叠加循环渲染
  10. 格雷希尔GripSeal快速密封接头G70外卡式、滑套式快速连接器型号规格