面试|2024 菜鸟金三银四铜五 Android 被锤历程出炉

和面试官聊着,聊着,突然很想去,如果我 Leader 是这样的该多好。可惜啊,这里奉劝大家一定要做好面试准备,不能浪费每一次面试机会。

超级喜欢这样的 Leader!!!

2021-4-20 平行未来

面试内容:

  • 自我介绍,公司、团队介绍、人员配比情况,简单说下项目情况,学历情况说明。

  • 直播用的哪儿家?有看过源码或者优化吗?

  • 就你一个 Android 会不会感觉孤独?

  • 离职原因是什么?

  • 您擅长哪儿些?

  • 说下如何进行瘦身?

  • 微信资源压缩,如果让你实现,你能实现吗?

  • 微信资源压缩原理是什么?

  • 启动优化过哪儿些内容?

  • 内存做过哪儿些优化?

  • 异步实现方式有哪儿些?

  • 简单说下 Handler。

  • 在一个线程中,可以创建多个 Handler 吗?

  • 一个线程中有两个 Handler,那么它有几个消息队列?

  • 消息队列中如何判断当前消息是归属于哪儿个 Handler 得呢?

  • 我能在子线程中创建一个 Handler 吗?

  • 子线程中为什么可以弹 Toast?

  • Looper 更深层次原理你了解吗?

  • 自定义 View 做过哪儿些?

  • 假设自定义 iOS 进度对话框,转圈使用逐帧动画,那么在什么时候销毁呢?

  • 两种实际业务考察以及最终布局考察。

面试感受:

老哥人不错,个人对基础知识掌握不够,还不深入,停留表面,就好像老大说的,仅仅掌握技术层面上的一层油,深入就完蛋。

2021-5-12 中广创思(车载)

进去先做题,4 道题,看的出来算是公司项目常用的场景。个人建议还是取消做题环节吧,直接开面,咱们唠起来,快速有效的进行面试,而且避免耽误更多时间,有时候临场反应更能代表个人真实水平(小白理解)。目前应聘 Android 岗位主要是负责将现有产品迁移车载平台相关开发工作,剩下可能还有一些待立项的项目开发。

面试内容:

一面小哥哥:

  • 目前工作状态?为什么离职?

  • 项目为什么做的这么乱糟糟?公司核心业务是什么?

  • 有没有可以演示的作品(我嫌麻烦,没带,哈哈哈嗝)。

  • 在你开发过程中有没有遇到什么难点?可以详细举例说说么?

  • 项目类型、团队情况以及主要负责内容。

  • 你负责的项目,有什么没有比较好的技术亮点?

  • 你是如何进行 Apk 瘦身的?

  • 性能优化方面做过什么操作?

  • 你是如何基于 lifecycle 进行日常组件封装?

  • 你是如何进行日常项目架构设计实践?

  • 模块化的情况下 Activity 之间数据传递以及数据持久化怎么实现的?

  • 目前现有项目采用什么架构?

  • 你觉得你更擅长做哪儿些方面吗?比如业务落地、基础库维护、新技术引入等等。

  • 你在公司中有给公司做过相关操作么?比如引入新技术等。

  • 可以谈谈你对 Flutter 的一个认知吗?比如适用哪儿些场景、个人经验?

  • 简单谈下你的学历情况。什么时候开始做的 Android 开发,自学的还是?

  • 启动、内存优化做过什么操作?

  • 什么情况下会使用软引用?

  • 内存泄漏一般会在什么情况下会遇到?

  • 在平时开发中,有没有注意过一些数据结构适用场景?

  • 平时开发过程中有没有思考过方案更优思路?

  • 字符串拼接 + 和 StringBuilder 有什么区别?

  • 内部类如何访问外部类呢?

  • 父类和子类同时拥有静态代码块和构造方法,它们执行顺序是什么?假设现在父类和子类又新增非静态代码块执行顺序是什么?

  • Activity 异常启动的生命周期是什么样子的?

  • 如何保证 Service 不被杀死?

  • 如何在 Service 中长时间播放一个音乐呢?

  • 自定义 View 做过哪儿些内容?如何实现的?

  • ArrayList 里面数据结构是什么样的?

  • 如果我使用 Arraylist 不断地 add,它的底层扩容机制是什么?

  • HashMap 底层数据结构是什么?

  • HashMap 数据结构为什么会是数据加链表,链表的作用是什么?

  • HashMap 是存储 key-value 形式,那么 value 在 HashMap 中是以什么形式进行存储的?

  • 你之前有涉及过一些车载相关的项目么?

  • 之前和蓝牙是如何进行数据通信的?

  • 机型以及屏幕适配是如何适配的?

  • 公司平时加班多吗?你是怎么看待加班的?

  • 公司有产品么?

  • 公司加班会有加班费或者其他补贴吗?(呵呵哒,有个锤子…)

  • 假如说领导在,让你多写一会儿,你会怎么做?

  • 假如有这样一个场景,领导给你评估的时间太短,这个时候你会怎么做?

  • 你这几家公司都在哪儿呢?

二面老大:

  • 在职还是离职,预计离职需要多久?

  • 曾经任职公司主要业务是什么,你做的工作内容/范围是什么?

  • 你个人主要开发语言是什么?哪儿个用的更多?

  • 有一些工作上的亮点吗?你负责的功能或者亮点?

  • 你对音视频技术的了解有多少?实际当中使用过哪儿些?

  • 细节项目的介绍。

  • 你住哪儿?你是已婚吗?

  • 对我们这边有过了解吗?

  • 来给你秀一下我们目前的 App。

  • 你有什么想问我的吗?(老哥说这话的时候,感觉是信心满满,来哇,开启狂躁的问我吧,哈哈哈嗝)

  • 期望薪资这块能给我一个范围吗?

  • 还有什么其他方面想问我的吗?

面试感受:

小哥哥思维很跳跃,几乎从实际出发,整体来看蛮不错的,公司真正面试的效率蛮高,除了做题等待期(哈哈哈嗝,小哥哥看到不要喷我)。技术老大声音很有磁性,有一种莫名的振奋感,很不错的 Leader。聊完将近 12 点,特意叫住两个小姐姐帮忙送我出去,感谢啦~

2021-5-19 新文道教育

按照约定时间进公司,结果等半天,最后又主动找前台,结果呢,给了好几页题,那种 n 年前的题,直接蒙圈了,顿时想走了,墨迹了会儿,hr 又过来催,简单填写完资料又让全部填写,明确说明简历都有,还说要求标明每家具体薪资待遇等等等一系列不爽,都打算直接走人了,结果就在旁边,没法跑。无奈跟着又上楼,又等,接近一个多小时全部都在等待,明确说明了下面还有面试,不行就下午或者改天再约,hr 非要聊,聊到所谓的技术总监出来,开始所谓的不知所云的面试…

面试内容:

  • 个人简介,学历说明,工作内容,团队规模描述。

  • 简单描述下你重构的方面以及重构新开的项目还是在老项目重构。

  • 重构采用了哪儿些架构技术等。

  • 瘦身主要用到了哪儿些技术?

  • 性能优化你主要做了哪儿些方面?

  • LeakCanary 底层如何实现,如何捕获?

  • 造成内存泄漏情况有哪儿些以及如何解决?

  • Java 中的引用类型(强弱软虚)作用以及常用场景。

  • 除了 LeakCanary,你还用过哪儿些,Android Studio 自带工具有使用过吗?

  • 针对重构,有考虑使用组件化和插件化的方式吗?

  • 组件化在不同模块是如何通讯的?

  • 阿里的路由框架有了解过吗?

  • 简单聊下 MVC、MVP 以及 MVVM 的优劣势。

  • DataBinding 和 ViewBinding 区别,在项目中使用了哪儿些?

  • 项目中用到的网络框架是什么?对它们的底层源码有了解吗?

  • 介绍下 OkHttp 有几大工具类吗?

  • OkHttp 有几大拦截器?

  • Retrofit 如何工作的原理。

  • Retrofit 采用的设计模式是什么?

  • Retrofit 常用的几个方法。

  • 对源码的掌握程度怎么样?

  • 简单介绍如何实现一个懒加载。

  • Fragment 如何实现懒加载。

  • Fragment 常用的加载方式有哪儿些?

  • Fragment 常使用的方法或者类有哪儿些?

  • RecyclerView 多类型、分组如何实现?

  • Activity 生命周期以及 A 跳到 B 之间的生命周期是怎样的?

  • 自定义 View 常用到哪儿些方法以及如何实现的。

  • 自定义 View 中对 requestLayout 理解有多少。

  • requestlayout 以及 invalidate 区别。

  • 简单介绍下 Handler 消息机制。

  • loop 在什么时候创建的?你知道它是在什么类中创建的吗?

  • Handler 可以在很多地方都可以创建吗?

  • 假如我现在创建 Handler A、B、C,消息队列怎么知道是谁的?

  • loop 死循环为什么不会造成卡死?

  • ANR 的引起的原因以及解决方案。

  • 假如我现在使用 Handler 延迟五秒后进行业务处理,那么 Handler 内部是如何实现 5 秒后执行我的具体业务操作的呢?

  • Flutter 如何和原生交互?

  • Flutter 如何开启一个服务?

  • 纯 Flutter 可以调用原生吗?

  • Flutter 通道如何编写?通道的实现方式。

  • 为什么选择 Flutter 的原因。

  • Flutter 和 RN 的区别?谈谈个人理解。

  • 原生如何调用 Flutter?

  • 如何让你设计一个项目架构,你会从哪儿几个方面入手考虑,为什么?

  • 架构中有哪儿些内容是可以抽取一个公共的东西,让所有的模块都使用?

  • 你的 BaseActivity 中会放什么东西?

  • 你是如何管理 Activity 栈?

  • Activity 启动模式。

  • 页面中如何预防用户连续点击?如何在项目所有点击事件中使用呢?

  • AOP 知道实现原理吗?适用于哪儿些场景。

  • 动态代理的使用场景有哪儿些?

  • AOP 主要解决哪儿些场景问题?

  • 如何实现一个自定义进度条?

  • 如何实现自定义 View 的渐变色效果?

面试感受:

害…直接拉出来干一架多好,哈哈哈嗝

老大之问:

敲黑板,划重点,的确大部分是我知识盲区了,汗颜,让我一度不知道怎么和老大开口…

  • 自定义 View onDraw 详细怎么操作,比如我现在要画一个无毛边的正方形。

  • 多边形和 View 里的动画怎么做?相交、叠加?

  • 一个 View 怎么实现内容触摸滑动?

  • 两个 View 怎么同时消费一组触摸事件,A 动的时候 B 跟着动?

  • View 最终渲染到屏幕是什么机制?比如处理为什么物理屏幕会按你的代码需求如期画你的圆。

  • 渲染的刷新率是谁控制的,控制间隔是多少?

  • 为什么当你切换应用的时候,UI 的窗口会跟随应用的 app 切换。

  • 安卓可以跨进程渲染视图吗?

  • 为什么不能在主线程里做耗时操作?

  • 为啥耗时操作会导致 UI 卡顿?

面试的一些感受


最后在唠叨几句吧。

本文的初衷并不是提供对应的面试答案,更多的是将自己亲身经历的面试过程记录,方便各位跳槽的小伙伴进行自我模拟,也欢迎一起交流学习。

其实,面试这么久,对人的心理以及生理都是一种折腾,58 无缘以及经历汽车之家无奈的面试,导致后续一段时间内的心态崩溃,可能有的老哥会嫌弃这两家,可是对于我小公司出身,这就是蛮大的公司了。还是希望各位准备充分,心态放平,展示自己最好的一面就好了。

千万别像我一样,匆匆忙忙面试,对之前比较不错的面试官道个歉吧…

另外,感谢我老大期间对我的帮助,感谢老大,老大万岁~!!!

最后呢,说说张张吧,暴躁小伙儿,嫌我面试吊儿郎当,不好好准备,喷了我无数次,周末以约酒的名义去复盘我简历,顺便交流面试经验,感谢~

有时候真的觉得自己蛮幸运的。虽然现实的确也很残酷,但是呢,也希望能把自己的一点小幸运传递下去~

面试前系统复习路线准备好!


很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典

  • Android学习路线图

首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!

  • 模块化学习资源

接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。

除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~

①看视频进行系统学习

前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

②读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

③面试前夕,刷题冲刺

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结

现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。

我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。

Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。但是周末花一天时间体验一下它的开发流程,了解一下它的优缺点、能干什么或者不能干什么。这个时间,并不是我们不能接受的。

如果有时间,其实通读一遍 Flutter 的文档,是最全面的一次对 Flutter 的了解过程。但是如果我们只有 8 小时的时间,我希望能关注一些最值得关注的点。

(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

关注的点。

(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)

[外链图片转存中…(img-Cp44yWFy-1712576851122)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值