「Android高工面试之旅」疫情失业裸面失败后,花费3个月复习面试了20家公司后收割好运

「Android高工面试之旅」疫情失业裸面失败后,花费3个月复习面试了20家公司后收割好运_第1张图片

前言

不知不觉2020年已经快要过去了,然而受到疫情影响,之前的公司四月份都没有正式复工,于是只能被迫走上了重新找工作的道路

开篇

在完全没有准备的情况下面了几家公司,由于好几个月没有工作了,基本上以前做过的技术细节都记得不是很清楚了,以至于面试的情况非常不理想。由此,这段时间心情一直起起伏伏,甚至产生了对自己技术能力的怀疑,以及担心自己到底能否找到一份工作了。

从事Android开发也三年有余了,然而在投简历过程中也是遇到了很多问题,比如简历上的经历跟公司需的不匹配;比如自身的技术面过窄,觉得自己学了很多,但是过于理论化而没有落实到实践当中;再比对之前做过的项目细节把握的不好,也没有去深究,都导致了面试当中出现的一系列问题。

然而生活还是要继续,工作也要继续找下去。虽然自己也面临也写生活上的压力,但是这也不是停滞不前的理由和借口。写这个博客的目的也很明确,帮助自己梳理相关的技术,直面自己内心的恐惧,以更好的准备面试,找到一份满意的工作。

准备

1. 简历

在投简历的过程中,跟HR交流有时直接说“经验不匹配”。自我感觉还是简历写的有问题,这种情况下,简历盲投感觉已经不合适了,还是要有针对性的对简历进行定制化,先过简历关。

2. 技术点

既然毫无准备的裸面行不通,那就开始查漏补缺,准备相关的知识点吧。

作为一个三年多的Android研发,自认为还是积累了一定的技术实力和能力的,只是没有系统,深入的整理过自己的项目技术点。

3. 拓展

针对面试中问的一些问题,没有思路去回答的,面试结束后可以针对这些问题去拓展和深挖,避免下次面试再出现相同的情况。

思考

这次的面试目标是「Android高工」,那么要思考的是,这个「高」,究竟高在哪里?我们以一个什么样的工作经验,技术水平,思想深度,才能达到这个高度,这个是要思考的,在面试和准备过程中我也不断的反思和总结。

面试经历

后来复习了三个月左右。7月底开始边投简历边进行复习扫尾、巩固,大大小小的公司投出了大概三四十份简历。收到面试大概20场。下面我挑了几个较好的和一些大厂的真题面经分享一下。

小建议:
面试某家公司前,最好是要先了解你所面试的工作岗位,公司的业务,主要是做哪个方面的,这样可以更加具有针对性的复习和准备。

华润集团下某借贷子公司

一家借贷公司,肯定对APP安全方面比较着重。

  • Activity 的启动过程
  • Broadcast 注册方式与区别
  • 磁盘缓存怎么实现
  • 进程间通信原理、Binder 机制原理
  • APK加固、dex文件加密实现、原理
  • 说一下类加载的过程、机制,为什么要这样设计?
  • 谈谈你对安卓签名的理解。
  • 对于提高app的安全性,你有哪些建议或方法?

腾讯新闻

大概就是UI、页面流畅度、适配这些方面吧。

  • 如何将一个Activity设置成窗口的样式。
  • Android中跨进程通讯的几种方式
  • 屏幕适配的处理技巧都有哪些?
  • ListView卡顿原因及处理
  • 广播传输的数据是否有限制,是多少,为什么要限制?
  • 如何防止过度绘制
  • View的回执流程
  • 说说对Context的理解
  • 卡顿的一整套解决方案是怎么做的?

某知名外卖APP

布局、页面、高级UI之类的

  • View的绘制过程,onMeasure方法中两个参数的含义;
  • 你在做布局优化的过程中用到了哪些工具?
  • 做完布局优化有哪些成果产出?
  • 看过哪些源码
  • 混合开发有没有做过
  • 大致说一下自己做过最满意的项目吧

字节跳动抖音部

音视频、算法

  • 静态注册和动态注册的原理分别说一下吧
  • JNI是如何访问java中的方法和字段的?
  • JNI规范中定义了哪些引用,区别是什么
  • 算法:获取单链表倒数第k个元素
  • 单例实现线程的同步的要求?
  • LaunchMode应用场景
  • 计算一个view的嵌套层级

算法:

「Android高工面试之旅」疫情失业裸面失败后,花费3个月复习面试了20家公司后收割好运_第2张图片

某上市公司(母婴类产品)

  • 请介绍下ContentProvider是如何实现数据共享的。
  • android本身的一些限制,比如apk包大小限制,读取大文件时的时间限。
  • 算法:复制含有随机指针节点的链表
  • Android系统中GC什么情况下会出现内存泄露呢?
  • 三次握手四次挥手说一下吧
  • HashMap 、HashTable原理?
  • Java 虚拟机&内存结构&GC&类加载&四种引用&动态代理
  • 进程保活怎么做

合资外企

  • LeakCanary 原理
  • OOM 场景及规避
  • App 安装过程的怎样的
  • ANR是什么?怎样避免和解决ANR
  • MVC MVP MVVM原理和区别
  • 算法:2000万个整数,找出第五十大的数字?
  • App 是如何沙箱化,为什么要这么做?
  • flutter用过吗?
  • Flutter 如何与 Android iOS 通信?

志安科技

类似于华为海思,对底层很看重。

  • HashMap 原理
  • andorid的Binder机制是怎么样的
  • Linux的原理有了解吗
  • 有看过哪些源码,有深入到C++中吗,C++熟练吗?
  • 熟悉framework哪些模块的源码,对图像性能优化有了解吗
  • 以后的技术发展方向是如何的

阿里巴巴P6岗

  • HTTP2.0与3.0的区别
  • 项目中常用的设计模式
  • https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
  • 了解过Android虚拟机有哪些?
  • 对Dalvik、ART虚拟机有什么了解?
  • Gradle自动补丁包生成原理
  • Hybrid 通信原理是什么,有做研究吗?
  • 来介绍下你最成熟的一个项目是哪个?
  • 能简单的画一下你这个项目的架构图吗?
  • 除了MVP,MVC,MVVM外还有什么其他的架构方式?
  • 动态编译和反射相比,除了性能方面外还有什么区别?
  • 死锁如何避免、处理?
  • Flutter中的Widget、State、Context 的核心概念?是为了解决什么问题?
  • 卡顿 {如何检测卡顿,卡顿原理是什么,怎么判断页面响应卡顿还是逻辑处理造成的卡顿} ,BlockCanary 的原理
  • 算法:双链表翻转、写出你所知道的排序算法及时空复杂度,稳定性

最后

多余的话就不讲了,接下来将分享我面试之旅的复习过程,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!

这里给大家提供一个方向,进行体系化的学习:

1、看视频进行系统学习

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

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

2、进行系统梳理知识,提升储备

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

系统学习方向:

  • 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO

  • Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化

  • 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化

  • 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack

  • NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发

  • 微信小程序:小程序介绍+UI开发+API操作+微信对接

  • Hybrid 开发与Flutter:Html5项目实战+Flutter进阶

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

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

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

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

4、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

总结

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者关注主页扫描加 微信 获取。

你可能感兴趣的:(「Android高工面试之旅」疫情失业裸面失败后,花费3个月复习面试了20家公司后收割好运)