Android 面试官:这些经验要记录好,面试途中会遇到!(1)

本人作为一名某公司的面试官,这几年帮公司面试的一些Android 中高级岗位的工程师,现已破百人之多,但被我Pass 刷掉的人也不少。

现在正式金三银四的面试旺季,特此赶来与大家分享一些谈谈我对 Android 中高级面试的一些看法和体会。

大家读完这篇文章,如有自己的看法不妨在评论区留言,一起互相讨论。

首先面试的时长是不固定的,以本人平常面试的平均时间做标准的话,大概是在1小时左右,如果遇到优秀的Android 开发面试的话,可能会将时间拉长,因为问的细致一些。

如果大家在面试过程中,面试时间比较长的话,难么恭喜你,面试官这关你基本稳定通过了,后面就是谈薪资待遇的事了。

因为面试本来就是一个输入和输出的过程,面试官主要的职责是要引导面试者在短时间展现他最强的实力,如果一位面试官连这点都做不好,我敢断定这决对不是一位合格的面试官。

那对于面试官,该如何完成一次高效的 Android 面试呢?

一般会考察这几点:


一.简历是否真实

这其实是面试第一要务, 面试的过程其实就是看简历是否属实的过程,因为能到面试环节,说明这个人是符合要求的,不满足要求的早就被剔除了,如果他真的如简历描述的那样,100%会招过来,如果人人都如此,那就不需要有面试这种过程了。

需要注意的是这里的真实有三层含义:

  1. 他如实描述了自身经历,很多人只在一些大项目里做一个很小的螺丝钉,但简历里往往夸张这段经历。

  2. 不知道自己不知道,常见于简历里各种“精通”开头的描述,因为知识体系与视野的局限,明明只是了解很浅却夸口精通,很多时候他并不认为自己说的有问题,而是真的以为自己已然精通,有点井底之蛙的感觉。

  3. 简历里的真实要与你的期望相匹配,一门技术了解到怎样的程度才算精通,很难有定论,所以这里的“真实" 只能是候选人与面试官标准之间的契合,这种有主观运气成分,也许面试官水平不够错误判断了你,也不用感到不爽,面试何尝不是种双向选择呢。

二.技术的深度

技术的深度一向是我最看重的部分,当今任何一个技术领域都非常宽广,一个人要同时掌握那么多知识并且都深入几乎不可能,那都需要拼学习效率与工作年限了。而你曾经做过的东西,正在做的东西,是绝对可以了解得更深入的,一个对技术有好奇心,有技术热情的人,都不会仅仅停留在这个东西挺好用,而是会忍不住去探究它背后的技术原理,即便不是亲自去看源码,也会花点时间了解别人整理过的经验,所以单凭考察技术上的深度,就可以考察-个人是否对技术有热情 ,是否有技术好奇心等等这些很多大牛认为的所谓“优秀程序员的特征”。

之前曾看到过一句话:“一个人对他所做的事情了解得越深,他就能做的越好”。放在这里再合适不过了。

三.技术的广度

深度是有了,还需要广度吗?我个人的理解是:深度是必要条件,广度是加分项。同样的有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也会想要尝试一些其它的领域和方向,因为投入问题也许不够深入,但很多领域知识你知道与不知道,对你个人知识体系的形成关系很大。

比如你要实现一个功能, 在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单Sqi语句就可以实现啦,为什么要搞得那么麻烦?这个例子虽然举得很蹩脚,但是我想意思大家应该已经明白了。知识越有厂度,头脑里的技术体系就越备,同样的问题,你就可以想到N个解,思考一下就得出最优解了 。

如果你听都没听过一些东西,就会经常说出“这个好难搞啊”、"这根本就不可能”其实有的时候真是知识的局限问题,所谓的从0到1难,也是这个意思。

四.逻辑思维能力

这也是我比较看重的一点,这里并不是指那些臭名昭彰的脑经急转弯问题,而是通过交流观察,判断一个人表达观点逻辑是否清晰,回答问题是否有章法,这个很难描述,但如果你细心观察,你会发现很容易通过一些简单的交流,就可以看出一一个人是否逻辑清晰。

有时候你会觉得某个人表达沟通很不错,其实不是沟通的问题,是他说出去的话,经过了他大脑的条理清晰的整理,让你很容易就能明白。这种习惯不是一朝一夕就能养成的,所以面试过程中这点装不出来。

另外一个人如果逻辑清晰,而且反应又敏捷,语速很快,那是大大的加分项,恭喜你,碰到一个聪明人了。

面试前的准备工作:


1.简历调查

简历到你手上的时候,你要做好充分的调查分析,不仅仅是对公司负责,也是对自己与候选人时间的尊重,明显不“对劲”的简历,就不要抱着“要不喊过来试试看”的想法了,候选人也许很不错,但如果跟你的岗位不匹配,也不要浪费大家时间,你要想清楚现在需要的人是有潜力可以培养的,还是亟需帮忙干活的。另外如果简历里附带了博客链接,GitHub地址, 相关作品的,可以提前去看看,直接看人家多年积累的文章与代码,比这短短一小时的面试来得靠谱的多。

2.准备面试题

了解清楚候选人背景后,要根据简历,有针对性的准备问题,可以是他作品或做过项目里的某个技术细节的实现方式,也可以是他声称精通的某些领域的相关问题。总之不要等到面试过程中现想问题,特别是刚开始面试别人的同学,往往经验不足稍带紧张导致大脑短路,其实也是很尴尬的,把要问的问题提前写下来,准备充分。

面试官通常会问哪些深度与广度并存的 Android 面试题呢?

因文章篇幅长度有限,我就在这里简单的列举几类很经典的 Android 面试题更大家进行分享一下,如果大家想要了解更多Android 大厂面试题,可以直接去我 GitHub:https://github.com/733gh/Android-T3 参考学习。

第一章 Android FrameWork

  1. Android中多进程通信的方式有哪些? 进程通信你用过哪些?原理是什么?(字节跳动、小米)

  2. 描述下Binder机制原理?(东方头条)

  3. Binder线程池的工作过程是什么样?(东方头条)

  4. Handler怎么进行线程通信,原理是什么?(东方头条)

  5. Handler如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)

  6. handler.post(Runnable) runnable是如何执行的?(字节跳动、小米)

  7. handler的Callback和handlemessage都存在,但callback返回true handleMessage还会执行么?(字节跳动、小米)

  8. Handler的sendMessage和postDelay的区别?(字节跳动)

  9. IdleHandler是什么?怎么使用,能解决什么问题?

  10. 为什么Looper.loop不阻塞主线程?Looper无限循环为啥没有ANR(B站)

  11. Looper如何在子线程中创建?(字节跳动、小米)

  12. Looper、handler、线程间的关系。例如一个线程可以有几个Looper可以对应几个Handler?(字节跳动、小米)

  13. 如何更新UI,为什么子线程不能更新UI?(美团)

  14. ThreadLocal的原理,以及在Looper是如何应用的?(字节跳动、小米)

  15. Android 有哪些存储数据的方式?

  16. SharedPreference原理,commit与apply的区别是什么?使用时需要有哪些注意?

  17. 如何判断一个 APP 在前台还是后台?

  18. 如何做应用保活?

  19. 一张图片100x100在内存中的大小?(字节跳动)

  20. Intent的原理,作用,可以传递哪些类型的参数?

  21. 如果需要在Activity间传递大量的数据怎么办?

  22. 打开多个页面,如何实现一键退出?

  23. LiveData的生命周期如何监听的?(B站)

第二章 Android组件

  1. Activity的4大启动模式,与开发中需要注意的问题,如onNewIntent() 的调用;

  2. Activity A跳转B,B跳转C,A不能直接跳转到C,A如何传递消息给C?(美团)

  3. Activity如何保存状态的?

  4. 请描诉Activity的启动流程,从点击图标开始。(B站)

  5. APP是怎么启动的?

  6. 启动一个Activity的流程分析

  7. Service的生命周期是什么样的?Service两种生命周期以及区别

  8. 你会在什么情况下使用Service?

  9. startServer和bindServier的区别?(美团)

  10. Service和Thread的区别?

  11. IntentService与Service的区别?

  12. ContentProvider如何自定义与使用场景是什么?

  13. BroadcastReciver的静态注册与动态注册的区别?

  14. 广播的分类与工作原理

  15. 可以再onReceive中开启线程么,会有什么问题?

  16. 什么是有序广播?

  17. Application、Activity、Service中context的区别?能否启动一个activity、dialog?

  18. Fragment的生命周期? (美团)

  19. Fragment的构造函数为啥不让传参?(B站)

  20. Fragment add与replace的区别,分别对Fragment的生命周期影响(美团)

第三章 View System

  1. View绘制流程与自定义View注意点。(东方头条、美团)

Android中的每一个UI控件都是集成自View,然后这些View都具有相同的绘制流程,必须经过measure,layout和draw. view的绘制流程是在Window添加过程中,ViewRootImpl类的setView方法开始的

  1. 在onResume中可以测量宽高么

  2. 事件分发机制是什么过程?(东方头条)

  3. 事件冲突怎么解决?(东方头条)

  4. View分发反向制约的方法?(字节跳动)

  5. 自定义Behavior,NestScroll,NestChild。(东方头条)

  6. View.inflater过程与异步inflater(东方头条)

  7. inflater为什么比自定义View慢?(东方头条)

  8. onTouchListener onTouchEvent onClick的执行顺序。(58 京东)
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

img

img

img

img

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

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

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

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

上面分享的百度、腾讯、网易、字节跳动、阿里等公司2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

【Android高级架构视频学习资源】

**Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

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

是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

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

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值