本来打算年前离职,但是昨天的一次 Android 面试让我心好累……我迷茫了

PS:最近有些难受,以下内容并不客观,更偏向于自己。希望大家友善发言,如果能够说一下自己的想法或者对于面试看法技巧之类的就更感谢了。

前言

首先介绍一下自己的情况。目前所在的是一家小的创业公司,待了 3 年多,薪资一般吧。

我觉得自己的能力是没问题的,想寻求更好的发展。

本来呢,也打算骑驴找马,打算年前离职,但是昨天的一次 Android 面试让我心好累……我迷茫了。

我的工作经历

由于这几年公司也在转型。工作经历大概可以分为 3 个阶段。

第一阶段是从进公司开始做 android app 开发,无论是外包或者公司的主力产品都做过。

第二阶段是做 ROM 开发,由于公司规模不大,除了硬件和底层的东西外,基本上是一个人负责了整个 ROM 的修改,编译,发布(基于 MTK 的某一个 rom,然后做一些 android framework 层面上“奇奇怪怪”的定制)。

第三阶段,也就是当前。之前做的 ROM 所适配的手机销量未达预期,公司也不再准备投入更多,基本上是做做简单的维护。而我被分配的新任务是做机器学习的一些东西,比如 Tensorflow, OpenCV 做做图片处理,训练之类的。

相信诸位看了上边的经历,大概也猜到我现在所面临的问题。即,当前在一线做 android app 开发,而我的目标仍然是想找 android 开发的职位(没错,或许你会说我傻,但是我有自己的坚持)。

我对自己的评价

事先说一下,因为确实有段时间未做公司正式项目的 app 开发,但是也不是说已经荒废了技能,下面是我对自己的一些评价:

  • Android app 开发能力一般,但是足以胜任一般 app 开发的任务;
  • Android frameworks 方面比普通开发者了解更多;
  • 解决问题,学习实践新技术的能力不错(无论是从第一次编译 AOSP 到后来整个 ROM 的开发,发布。还是从对机器学习完全陌生,到现在能够描述常见机器学习的算法,使用 Tensorflow 实现一些这方面的需求)。

总的来说,我觉得自己的能力还是很不错的,就是感觉运气好像不是很好,当初校招的时候就没有找到拿到心仪的offer。

来自面试的棒击

我从来没想到,自己会在面试中沦落到如此尴尬的境地。

我当时是投的腾讯的Android开发岗(毕竟小厂待了这么多年,还是想要进大厂看看的)

腾讯面试官非常耐心,差不多都是按照他所准备的 Android 面试题一一提问。一开始的问题也能应对自如,可是后面我就懵了!

1、说下jvm内存结构、代码调用过程中的内存流程吧。
2、java如何分配内存,多线程呢?
3、Spring如何加载注解
4、Spring启动流程、bean实例化
5、xxljob原理,使用流程
6、OOM定位、解决方式,流程
7、讲项目xxxxx

以上问题基本上没有什么阻碍,大多顺利的回答了,但是我没想到后面居然越挖越深了。

8、redis pipline是全双工还是半双工
9、云原生是什么?(这个真不会,我直说了自己不会,面试官就换了个问题)
10、用过广播吗?说说广播的注册方式?
11、你知道为什么要设计者两种方式吗?(不知道,不过面试官给了提示,后面跟上了)
12、那说说广播底层的设计原理吧
13、为什么要用Binder呢?
14、Binder的原理是什么?Binder的优势有哪些?为什么Binder不用socket实现?

前面几个还能在面试官的提示下勉强答上来,但是后面就是真的跟不上了,很多技术都会用,但是要我讲出来是真的很难。Binder原理我是真的搞不懂啊……难受,后面的算法题也没有答上来……人都傻了,大厂都喜欢这么问吗?

面试只进行了二十几分钟,面试官就跟我说“回家等通知”了。

自我总结

最主要的就是底层原理这些准备的不够充分。

我对自己的表现非常不满意,面试官问的技术我都用过,大部分都能答上。

但是我自己所组织的语言,描述的结果却差强人意。我更期待的是对于我自己项目经历的说明。因为这是我和其他应聘者不一样的地方。而面试官却完全没问我简历上的项目经历。虽然最后我还是自己硬讲了一下,但面试官也并未有兴趣,我讲的也很干瘪。最后面试就这样结束了。

哎,后面面了阿里,也是一样的挖底层,Handler和Binder这些东西必问啊!!!要好好准备!!

后面我干脆去机构买了一份大佬编写的PDF资料,这份资料我上传到我们2000人小圈子的共享文件了,需要的自取,密码找管理员要(点击此处蓝色字体可以直达)

Android Framework精编内核解析

(一)Handler原理

1.Handler Looper Message 关系是什么?

  • 分析 Handler
  • 发送消息
  • ……

2.Messagequeue 的数据结构是什么?为什么要用这个数 据结构?

  • 为什么要用 Message Queue
  • Messagequeue 的数据结构是什么?
  • ……

3.如何在子线程中创建 Handler?

  • ……

4.Handler post 方法原理

  • 源码分析
  • 整理
  • ……

5.Android 消息机制的原理及源码解析

  • 消息机制概述
  • 消息机制的源码解析
  • ……

6.Handler 都没搞懂,拿什么去跳槽啊?

  • 重识 Handler
  • Handler 原理解析
  • Handler 的延伸
  • ……

7.Android Handler 消息机制中的迷惑行为

  • 带有消息队列线程概述
  • 带有消息队列线程的具体实现
  • ……

需要份资料的可以点击下面的蓝色字体免费获取↓↓↓↓↓
这份资料我上传到我们2000人小圈子的共享文件了,需要的自取,密码找管理员要(点击此处蓝色字体可以直达)

(二)Binder原理

1.学习Binder前必须要了解的知识点

  • Linux中的IPC机制种类
  • Android中的IPC机制
  • Linux的IPC通信原理
  • Binder的通信原理
  • 为什么要使用Binder
  • 为什么要学习Binder?

2.ServiceManager中的Binder机制

  • 基于Binder通信的C/S架构
  • MediaServer的main函数
  • 每个进程唯一的ProcessState
  • ServiceManager中的Binder机制
  • ……

3.系统服务的注册过程

  • 从调用链角度说明MediaPlayerService是如何注册的
  • 从进程角度说明MediaPlayerService是如何注册的
  • ……

4.ServiceManager的启动过程

  • ServiceManager的入口函数
  • ……

5.系统服务的获取过程

  • 客户端MediaPlayerService请求获取服务
  • ……

6.……(省略)

需要份资料的可以点击下面的蓝色字体免费获取↓↓↓↓↓
这份资料我上传到我们2000人小圈子的共享文件了,需要的自取,密码找管理员要(点击此处蓝色字体可以直达)

最后,在这里预祝大家新年快乐!面试顺利,早日拿下心仪的offer!

猜你喜欢

转载自blog.csdn.net/BUGgogogo/article/details/113747899