背景介绍

金三银四,又到了一年一度最火热的跳槽/招聘季节.相信很多小伙伴已经开始投简历,或者已经找到工作了
是的,我就是找到工作的那部分人
很多Android小伙伴最近找不到工作,特别急,其实我在找工作的时候也有过比较着急的情况,所以很能理解大家的心情.一直说要给大家分享一下我的面试经验,由于最近忙着和上一家公司say goodbye+找新工作+搬家+找房子+入职一系列事件,所以等到现在才跟大家分享.
本文的阅读对象是像我这样技术水平一般,却迟迟找不到工作的小伙伴们.

先自我介绍一下,本人13年毕业,一直在深圳从事Android应用开发,这次离职时裸辞,找工作将近20天左右,一共拿到4个offer,都是上市公司,其中一个是阿里巴巴的,因为要去杭州工作所以放弃了

背景

面是是上海的Android leader岗位,周日一轮面试,自我感觉答的都还不错。

结果收到邮件面试结束了,说什么"你优秀的学识和能力给我们留下了深刻的印象!经过对你综合情况的仔细评估,并经过与岗位需求进行谨慎匹配和权衡之后, 非常遗憾,我们这次没有和你达成合作。但你的信息已经被录入到公司人才库"。意思就是挂了呗。

后来打电话问hr,没跟我说原因。然后面试过程中,有一点奇怪的地方,面试前面试官跟我说我面的而这个岗位有点奇怪,他也没跟我说哪奇怪。

面试过程

下面是面试官提的一些问题:

面试官:点击一个图标到这个应用启动的全过程(前面是项目经验没啥好说的)。

回答:

点击图标后通过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。一个应用就此启动。

面试官:Retrofit原理。

回答:

主要是通过动态代理将接口直接转换成代理对象。动态代理和静态代理的区别,动态代理直接在虚拟机层面构建字节码对象。

面试官:View自定义的流程,实现哪些方法。

回答:

实现OnMeasure,onlayout,onDraw。

继续问“onMeasure中会用哪些方法?”(我觉得这题可能没大好,我是想回答的详细点的,结果还没打到点他就说好,继续下一题,不知道是认可了还是觉得我答的过于啰嗦,如果觉得太啰嗦可以提出来啊。。。)

我回答onMeasure 中传入两个int数值,这个数值32位,前2位表示模式,后30位表示宽度、高度。这是外表容器给内部view的限制。

一种模式是容器给你多大的值,你就是多大的值(match_parent),
第二种,容易给内部view多大的空间,内部view不用管,是多大就是多大。
第三种,容器给子view多大的空间,和子view自己算出来的占用空间,选择小的那个(wrap_content)。说到这我正打算说onMeasure会调用measureChildwithmargin类的函数,他说好了,然后下一题。

面试官:怎么设计app的。

回答:

基本都用的mvc架构,曾经有个项目使用mvp。还有其它一些整体设计上的问题,很零碎,但都答的差不多。

面试官:(最后是算法题,面试官的表述不是很清晰,所以开始没理解他的意思,我归纳一下题目)

有1,3,7三个面值的金钱,现在要取n元。怎么取个数最少。(n是已知数) 意思就是 1 * a+3 * b+7 * c=n 什么情况(a+b+c)最小。

当然这是我自己归纳出来的,他开始的描述让我想哭。

回答:

开始脑子有点没反应过来,把它当逻辑题做了,想了5分钟后才反应过来,这是编程题啊。遍历呀, a的取值范围(0n)b的取值范围(0n/3) c的取值范围(0~n/7) 遍历取最小值。当然这种情况效率并不高,我当时也和面试官说了,没太考虑效率,如果需要可以再改。感觉他也认可,思路对就行了。 其它一些零碎的问题没印象了,主要就这些。

我想大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,比如我这次的挂了的面试,大家可以对比下,发现一些自己回答的话会有哪些问题,这样对自己之后的面试才更有帮助。

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源

Android开发优秀开源项目:

  • ali1024.coding.net/public/P7/Android/git

  • github.com/android

最后

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。

还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

Android 基础知识点

Java 基础知识点

Android 源码相关分析

常见的一些原理性问题

希望大家在今年一切顺利,进到自己想进的公司,共勉!
码相关分析**

常见的一些原理性问题

[外链图片转存中…(img-Wjwa5jOH-1648518912610)]

希望大家在今年一切顺利,进到自己想进的公司,共勉!

Android保活黑科技的技术实现,在阿里工作5年了相关推荐

  1. Android最强保活黑科技的最强技术实现

    大家好,我是老玩童.今天来跟大家分享TIM最强保活思路的几种实现方法.这篇文章我将通过ioctl跟binder驱动交互,实现以最快的方式唤醒新的保活服务,最大程度防止保活失败.同时,我也将跟您分享,我 ...

  2. android 黑科技 hook技术简单示例

    Hook属于android 中的黑科技,一般在逆向研究中使用较多,这几天技术分享会需要分享这个点.趁此机会来try一try. 先说一下Hook 意思,让大家有个初步的认识,要不一脸懵逼,Hook 简单 ...

  3. 硬核黑科技、技术大咖、AI 音乐节……科大讯飞全球 1024 开发者节太燃了!

    (文末有价值1024元的福利赠送) 1956 年 8 月,自达特茅斯会议首次提出"人工智能"以来,人工智能的命运起起伏伏,经历三大浪潮. 在黄金时期的50-70年代,人们发明最早的 ...

  4. 揭秘登上2021春晚舞台的黑科技-XR技术

    我是架构精进之路,点击上方"关注",坚持每天为你分享技术干货,私信我回复"01",送你一份程序员成长进阶大礼包. ‍ 2021牛年春晚的舞台效果太美了,在视觉表 ...

  5. 业内顶尖 vivo NEX双屏版黑科技TOF技术大揭秘

    众所周知,在当今的手机市场上,苹果手机的拍照能力是毋庸置疑的,而近日,有媒体爆料称表示苹果将在下一代iPhone XI手机将会配备全新的TOF摄像头,给用户带来更好的使用体验.iPhone X的发布, ...

  6. iphone装android软件,黑科技降临,红手指教你苹果手机如何安装安卓APP

    原标题:黑科技降临,红手指教你苹果手机如何安装安卓APP 苹果手机怎么安装安卓APP? 苹果手机怎么玩安卓游戏? 苹果手机怎么多开? 苹果手机游戏怎么多开? 苹果手机游戏多开的方法大全 苹果手机源自美 ...

  7. android手机黑科技软件,4款安卓手机黑科技APP,功能非常牛逼,希望大家谨慎使用...

    原标题:4款安卓手机黑科技APP,功能非常牛逼,希望大家谨慎使用 众创音乐剪辑 众创音乐剪辑是一款非常出色的音乐编辑神器,里面提供的操作非常简单全面,并且完全免费.不仅支持音乐剪辑,还支持音频合并.音 ...

  8. 5个能让你15T硬盘立马爆满的黑科技网站,让你在工作中技高一筹

    职场当中你还在默默无闻了工作嘛?那你就很难有升职加薪的机会了,一般老板喜欢能办事情的员工,如果老板交代下去的一件事情,别人花1小时,或许你就只用了10分钟搞定了,这时老板就你就另眼想看了,那么在职场当 ...

  9. Android最强保活黑科技的最强技术实现!

    作者:小顽童 https://juejin.cn/post/6844904110219608078 大家好,我是老玩童.今天来跟大家分享TIM最强保活思路的几种实现方法.这篇文章我将通过ioctl跟b ...

最新文章

  1. 电子班牌系统服务器,电子班牌管理系统
  2. Jmeter之线程组详解
  3. hdu 1281(二分图匹配+增广路)
  4. python2.7出现IOError: [Errno 5] Input/output error
  5. 汇编试验五:编写、调试具有多个段的程序
  6. Mysql函数访问oracle,Oracle与MySql函数
  7. 视界云:CDN{内容分发网络} 知识详解
  8. python运行不了指令_python不是内部命令或外部命令,也不是可执行程序解决方法...
  9. 如何最大程度地提高cin和cout的效率
  10. JAVA运行时,获取运行路径和JRE路径
  11. Python规范:用用assert
  12. International Obfuscated C Code Contest(IOCCC)
  13. 生成项目有roslyn_Roslyn的代码生成:UML的骨架类
  14. 数据结构之图的基础知识(二)
  15. 16. Segmentation
  16. 去中心化自治组织DAO简要介绍
  17. Android开发学习—指纹识别系统的原理与使用
  18. C#与三菱FX5U PLC以太网通讯
  19. ps基础入门2-图层样式
  20. 运用highcharts绘制饼图

热门文章

  1. R语言两个矩阵(两组)数据的相关性分析
  2. 少数者博弈 matlab,少数者博弈
  3. 毕业设计 单片机(stm32)远程宠物喂养系统 - 物联网 esp8266
  4. 构建 ERC20 代币合约
  5. 区位码,国标码以及汉字内码的关系以及为什么是这样的关系
  6. 手机大战略的游戏设计(3)
  7. Knative v0.16.0安装全过程
  8. 激光振镜误差校正算法C语言,激光振镜扫描误差校正装置的制作方法
  9. cocos2dx以前的一些文章的项目下载地址
  10. 是为计算机局域网内的用户设置的,电脑中怎么在局域网内设置打印机的共享