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

二.技术的深度

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

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

三.技术的广度

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

比如你要实现一个功能, 在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单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 京东)

  9. 怎么拦截事件 onTouchEvent如果返回false onClick还会执行么?(58 京东)

  10. 事件的分发机制,责任链模式的优缺点 (美团)

  11. 动画的分类以及区别(车和家)

  12. 属性动画与普通的动画有什么区别?(车和家)

  13. 插值器 估值器的区别(车和家)

  14. RecyclerView与ListView的对比,缓存策略,优缺点。(美团)

  15. WebView如何做资源缓存?(字节跳动)

  16. WebView和JS交互的几种方式与拦截方法。(字节跳动)

  17. 自定义view与viewgroup的区别

  18. View的绘制原理

  19. View中onTouch,onTouchEvent和onClick的执行顺序

  20. View的滑动方式

  21. invalidate() 和 postInvalicate() 区别

  22. View的绘制流程是从Activity的哪个生命周期方法开始执行的

  23. Activity,Window,View三者的联系和区别

  24. 如何实现Activity窗口快速变暗

  25. ListView卡顿的原因以及优化策略

  26. ViewHolder为什么要被声明成静态内部类

  27. Android中的动画有哪些? 动画占用大量内存,如何优化

  28. 自定义View执行invalidate()方法,为什么有时候不会回调onDraw()

  29. DecorView, ViewRootImpl,View之间的关系,ViewGroup.add()会多添加一个ViewrootImpl吗

  30. 如何通过WindowManager添加Window(代码实现)?

  31. 为什么Dialog不能用Application的Context?

  32. WindowMangerService中token到底是什么?有什么区别

  33. RecyclerView是什么?如何使用?如何返回不一样的Item

  34. RecyclerView的回收复用机制

  35. 如何给ListView & RecyclerView加上拉刷新 & 下拉加载更多机制

  36. 如何对ListView & RecycleView进行局部刷新的?

  37. ScrollView下嵌套一个RecycleView通常会出现什么问题?

  38. 一个ListView或者一个RecyclerView在显示新闻数据的时候,出现图片错位,可能的原因有哪些 & 如何解决?

  39. Requestlayout,onlayout,onDraw,DrawChild区别与联系

  40. 如何优化自定义View

  41. Android属性动画实现原理,补间动画实现原理

第四章 性能优化


  1. 内存优化,内存抖动和内存泄漏。 什么时候会发生内存泄漏?举几个例子(美团)

  2. Bitmap压缩,质量100%与90%的区别?(东方头条)

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

img

img

img

img

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

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

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

(img-xZffq4wS-1714959339108)]

[外链图片转存中…(img-dZAWuohY-1714959339108)]

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

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

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值