尴尬!6年Android经验面试滴滴,刚聊10分钟就被送走,技术再次被摩擦在地

2021-06-18 10:40:56 浏览数 (1)

背景

作为一名优秀的程序员,技术面试是不可避免的环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。

正常情况下,一轮技术面至少要 30 分钟,有的甚至能聊一个多小时,低于这个时长的基本就算凉了。

有个前同事,6 年 Android 经验,去滴滴面试,不到 10 分钟就被送走了,之后再也没有接到下一轮面试的通知。

好不容易拿到的面试机会,仅仅十分钟就被 PASS 了,说到底还是因为技术不达标。面试官问的几个问题,他回答得都不是很好,直接导致对方没有继续聊下去的意愿:

  • AMS是如何启动的?
  • AMS在Android起到什么作用?
  • AMS有哪些应用场景?我们是如何应用AMS核心原理的?
  • WMS的工作原理说说?
  • JVM的核心原理你懂多少?
  • 我们的代码是如何在栈区中运行的?
  • 如何使用字节码研究系统级原理?

这些底层问题能回答上来吗?是不是看上去很难?是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。

面试技术点考察

其实,Android 技术面考察的知识点很多,从框架、JVM、并发,到 NDK、kotlin、Flutter和性能优化,覆盖面非常广。

其实很多的移动开发者都止步于这个水平,要想再进一步深入发展很难,进阶学习成为了一个迫在眉睫又进展艰难的点。

进阶学习难吗?有一定难度。工作和学习遇到瓶颈后我们需要钻研底层原理,而现在我们基本上都是上班怼业务代码,晚上经常性加班赶任务进度,回到家已经很累了,很少有时间去提升自己的技术。钻研底层原理对我们来说相当奢侈。

现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

对于一些不知道学习什么,没有一个系统路线的程序员,这里给大家提供一个大概的思路:

  • 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
  • Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
  • 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
  • 微信小程序:小程序介绍 UI开发 API操作 微信对接
  • Hybrid 开发与Flutter:Html5项目实战 Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用

帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。

1.2020大厂面试高频知识点

  • 图片
  • 网络和安全机制
  • 数据库
  • 插件化、模块化、组件化、热修复、增量更新、Gradle
  • 架构设计和设计模式
  • 性能优化
  • Android Framework
  • Android优秀三方库源码

2.Jetpack架构组件从入门到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3.Framework精编内核解析

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin强化实战(附Demo)

  • 第一章 Kotlin入门教程
  • 第二章 Kotlin 实战避坑指南
  • 第三章 项目实战《Kotlin Jetpack 实战》
    • 从一个膜拜大神的 Demo 开始
    • Kotlin 写 Gradle 脚本是一种什么体验?
    • Kotlin 编程的三重境界
    • Kotlin 高阶函数
    • Kotlin 泛型
    • Kotlin 扩展
    • Kotlin 委托
    • 协程“不为人知”的调试技巧
    • 图解协程:suspend

5.Android设计思想解读开源框架

  • 热修复
  • 插件化
  • 组件化框架设计
  • 图片加载框架
  • 网络请求框架
  • RXJava 响应式编程框架设计
  • IOC 架构设计
  • Android架构组件Jetpack

6.NDK模块开发

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

7.Android源码解析

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

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

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

简历的包装也很重要

但想要拿下大厂 Offer,不仅要具备过硬的技术能力和丰富的项目经验。

最重要的是你的简历必须要有足够的含金量,能经得起 HR 的筛选,否则你连面试机会都没有,又怎么能用实力征服面试官呢?

高端码农简历

我们来看看一份高端码农的简历,这个简历写得相当漂亮,漂亮的让人一看就想约。

简历的重要性:
  • 第一:整理简历的过程,其实是一次复盘总结。在这过程中,我们会知道自己哪些地方做得好的,哪些做得不好的,这样才能针对性地进行复习。
  • 第二:挺多人,简历写不好,在筛选简历的时候,直接被 Pass,连面试的机会都没有,这是很可惜的。
  • 第三:简历写不好,没突出重点,面试官很难从短短的一个小时之内,发现你的亮点,空有一身才华,却得不到展现,多可惜呀。

下面,就让我们一起来聊一聊,对于技术人来说,怎样才算是一份好的简历?

突出优势:

简历基本主要分为四个部分:

1.个人的基本信息 2.自己过往的一个履历 3.说明自己个人技能 4.自己做过的一些优秀项目经历

HR、面试官在筛选简历的时候,一般不会超过一分钟,如果想自己的简历在60秒钟内脱颖而出,简历中要有突出自己的亮点优势,让人耳目一新,彰显你自己的才能。

对于开发者们来说,个人技能亮点,可以从一下几个方面着手,比如:

1.解决了什么疑难杂症,如解决了 top crash, crash 率降低了 0.1% 等 2.性能上面带来了多少提升,如编译速度的提升,提升了多少,降低了多少 min等 3.你在这个项目作出了什么成绩,比如主导搭建了代码扫描框架,自动扫描,提高代码质量,减少 review 成本。

千里马常有,而伯乐不常有。一定要重视简历,让简历能够反映你的真实水平,先不说做到锦上添花,至少不要拖后腿。

展现自己的个人技能:

个人技能这块,也是简历中必不可少的一部分。

第一,先说最重要的一点,按照掌握的程度分为几个等级,精通,熟悉,掌握,了解,强烈建议不要写精通,道理你懂的。

第二:不熟悉的点不要写到简历上面,否则就是给自己挖坑。

比如,你只是使用了网络库 OkHttp,你在简历上面写熟悉/掌握 Okhttp。恭喜你,兄弟,你给自己埋下了一颗定时炸弹。面试官可能会问你各种原理的,Okhttp 的设计原理是怎样,拦截器是怎样设计的,有什么优缺点,连接池等等?

第三:技能要具体,突出重点,让面试官有话可问。

  • 反例: 熟悉 Java
  • 正例: 熟悉类加载,并使用类加载技术开发了一个模块化框架

面试其实是一个双向的选择过程,简历上面技能写得具体,面试官看到了,可能会往这个方面提问题,这是非常 nice 的,我们恰好可以展现自己的特长。

相反,如果简历上面写得不具体,面试官找不出想问的点,那可能就会往他/她擅长的方面问,这时候,对于求职者来说,是非常吃亏的。

因为每个人都有擅长和不擅长的技能,不可能面面俱到。

第四,写的技能一定要跟你应聘的岗位相关,不相关的不要写上去。

比如,你应聘的是 Android 开发工程师,你在简历上面写一堆后端技能。匹配度不高,简历可能会 pass。

当然,也不是不可以写与应聘岗位不相关的技能,只是说简历要跟我们应聘的岗位匹配度高一点。这样,简历筛选通过的几率比较高。

最后,专有名词一定要写对,这体现一个人的专业素养和细心。比如 Java,不要写成 java,Android 不要写成 android。

以项目为主体,展现自己的技术能力和项目贡献

我们可以从以下思路,以项目为主体,设计我们的简历。如图,大概分为以下层级:

  • 项目名称,开始时间和结束时间,在项目中担任的角色
  • 项目简介,说清楚这个项目主要是做什么的,有多少量级,尽量不要超过一行,切忌不要超过两行
  • 项目职责,个人的建议,主要分为两大块,一个是技术职责,一个是业务职责。这样面试官能够很清楚的知道,你在项目中做了什么。

项目职责,这一块是最重要的,也是展现我们能力的时候,尤其要重视。

在写一块的时候,建议分点论述,这样显得调理清晰。

  • 比如你解决了项目的什么疑难杂症,带来了什么收益。这块在面试当中也经常被问到,项目中你有遇到什么技术难点嘛,是怎么解决的?这块回答好了,可以给我们的面试加很多分
  • 做了什么性能优化?这块可以有很多,根据自己擅长的领域和项目经历加上去即可。比如启动优化,编译速度优化,APK 瘦身等
  • 你在这个项目中作出了什么成绩?这块要结合我们项目中的情况来说,比如你推动了 MVVM 框架,组件化的落地等
简历注意事项

写简历,有一些新手会经常犯一些错误,下面简单列举一下:

  • 简历要用 PDF 格式,不要用 Word 格式,有兼容性问题,可能会乱码
  • 简历命名,建议已这样的格式命名,昵称-应聘岗位-联系方式,这样可以一目了然
  • 简历不要太长,尽量控制在两页之内。主要重点介绍你最近做过的项目或者你觉得自己做得比较好的项目
  • 不要在简历中写之前的待遇和期望待遇。
  • 如果平时有写博客,可以将博客地址写在简历上面,这是一个加分项。不过,如果你的博客上面只是单纯记流水账,就不要写上去了,反而容易减分。Github 也是同样的道理。

暂时就想起这么多了,以后记得再补充,对了,我整理了一份简历模板,想获取的话,可以点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

最后:一个优秀的Android开发者,一定有扎实的基础!

0 人点赞