前言
8月份陆陆续续出去面试了一下,看一下自己的价值和当前的行情,总体来说,还是挺满意的。面试了几家知名工厂,且都拿到了offer。分别是小米、美团外卖、陌陌、快手。
简历怎么写
一份好的简历往往事半功倍。笔者平均一年一跳的工作经历,看起来是非常糟糕的,那为什么还能有很多的面试邀约呢?Boss直聘上往往有很多RD在要简历,他们往往是用人部门的leader,因此,突出的职业技能以及过往一年所做的工作尤为重要。下面是我的技能清单。
1、熟悉面向对象编程,熟悉Java、kotlin等开发语言,对并发、JVM等有一定的了解
2、熟悉Android开发,了解Android版本差异
3、熟悉自定义View、动画等技巧,熟悉消息、事件分发等机制
4、熟悉Android性能优化,能够合理利用工具处理工作中遇到的性能问题
5、熟悉NDK编程、熟悉JNI
6、熟悉常用的开源框架并了解其内部实现原理
7、熟悉Javaassit、ASM、AspectJ等字节码修改技术
8、熟悉Java层Hook,Native层Hook,能够合理利用并解决实际问题
9、熟悉gradle,能够根据需求编写出各种gradle插件
10、对Android插件化、热修复等有比较深入的研究
11、熟悉常用设计模式,并能去设计出良好的代码
12、对TCP/IP、Http、Https等有一定的了解
13、了解Android FrameWork及其部分流程与实现原理
14、对Android逆向有一定的了解,有一定的脱壳能力
15、有一定的架构能力和极强的解决问题的能力
再加上笔者在过去的一年,一直在做基础架构相关的工作,因此,简历方面会有不错的吸引力。
面试前的准备
工欲善其事必先利其器,要想拿到满意的offer,必须有一定的准备。以下列出来的东西是笔者认为应该准备的东西(虽然8月面试只准备了算法)。
- 简历中提到的,一定要有准备,别给自己挖坑
- Java准备,Java基础,有的公司会扣的很细,Java数据结构相关的类、JUC、Java的语言设计、
- JVM 推荐看一下深入理解Java虚拟机这本书
- 网络部分,推荐看一下图解TCP/IP,图解HTTP这两本书,如果觉得不满足,也可以看一些其他的,如详解TCP/IP卷
- Android Framework,推荐看gityuan的博客,并且自己看一下代码
- 第三方开源库,这个笔者保持这一直读代码的习惯,因此不会刻意准备
- 算法,推荐看一下剑指offer,leetcode随便刷一些题即可,不会太难
- 自己搜集的算法题
- 平常搜集的一些有质量的面试经验
- 相信每个人都有自己复习的方法,这里就不多说了。
面试过程
好的面试官会去发现候选人的优点,他们会根据你简历写的东西进行提问,因为,把简历上写的搞的明明白白,即可。在面试过程中,不要紧张,要突出自己的特点,有意的向自己擅长的方向引导。态度要好,要自信,如果遇到自己不会的,尽量别说自己不会,稍微思考一下,突出自己解决问题的能力。
接下来就是一些面试题。
###面试题
小米公司
电面-20分钟
- 简单的沟通自己的工作经历
- 聊聊过去一年做的事情
- 基本上以简历上的为主
一面-40分钟
- 介绍之前的工作内容
- 如何统计进程的启动时间,进程启动的过程,activity启动的过程
- jvm gc
- jvm 堆和栈的区别,栈上分配
- 四种引用的区别
- 性能优化
- handler
- binder
算法题。最大回文字串。有getmin功能的栈,时间复杂度o1,两数相加
二面-40分钟
- 自我介绍
- 插件化
- binder,经过几次内存拷贝,从哪里到哪里,
- okhttp
- 跨进程eventbus
- 设计模式6大原则,常用的
- activity a到b的生命周期变化,view是什么时候显示的
- 事件分发机制
- pms activityrecord
- 看源码的动力
- jni,jnienv作用,jni线程切换
- 性能优化,fd limit
- 算法题。随机打印k个数
三面-60分钟左右
- 说下对Android的了解
- 事件分发机制 给了个场景 讨论了半天
- mvp优缺点,mvvm
- 相册搜索,设计。讨论了半天
- 介绍了下他们的业务
- 职业规划
- 美团外卖
面试问的很多问题忘记。一面面试官重技术,广度+深度+基础都要有。
结尾
最后,针对上面谈的内容,给大家推荐一个Android资料,应该对大家有用。
首先是一个知识清单:(对于现在的Android及移动互联网来说,我们需要掌握的技术)
泛型原理丶反射原理丶Java虚拟机原理丶线程池原理丶
注解原理丶注解原理丶序列化
Activity知识体系(Activity的生命周期丶Activity的任务栈丶Activity的启动模式丶View源码丶Fragment内核相关丶service原理等)
代码框架结构优化(数据结构丶排序算法丶设计模式)
APP性能优化(用户体验优化丶适配丶代码调优)
热修复丶热升级丶Hook技术丶IOC架构设计
NDK(c编程丶C++丶JNI丶LINUX)
如何提高开发效率?
MVC丶MVP丶MVVM
微信小程序
Hybrid
Flutter
接下来是资料清单:(敲黑板!!!)
CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
1.数据结构和算法
2.设计模式
3.全套体系化高级架构视频;七大主流技术模块,视频+源码+笔记
4.面试专题资料包(怎么能少了一份全面的面试题总结呢~)
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
-1630831975371)]
不论遇到什么困难,都不应该成为我们放弃的理由!共勉~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
[外链图片转存中…(img-BfyZ27Zy-1630831975372)]