我的Android跳槽之路:3年2家公司,去哪倒哪,复习一个月1
写在前面的话
我是双非本科15年毕业的,毕业之后就一直在做Android相关方面的开发工作,到18年经历了两家创业公司。
一家工作了不到半年老板就跑路了,一家工作到18年初,因为运营不当倒闭了(一度怀疑自己是不是去哪家公司就得哪家倒闭)。
自上家公司倒闭后,只身来到深圳寻求发展,因为之前待的小公司不是老板跑路,就是公司倒闭,所以这次就想找个大公司,想稳定一点。
大公司技术底蕴也比较强,想多学习学习,提升自己。前后大概经过了1个月左右,找到了一家公司,虽然不是大厂级别,但我所在的技术团队也有大几十号人,相比于我之前的经历,这应该也算得上大公司了,然后一直待到了今年5月份。
大小公司对比
大公司和小公司真的不一样,我以前一直在小公司做开发,一个同时开发几个app也是比较常见的。
在大公司里面,充斥着各种规章制度,流程规范价值观的衡量,kpi考核等。
同时个人做的事也比较窄,因为大公司要求的深度而不是广度,人多,各人负责自己的那一方面。我在里面主要做一些业务需求的迭代开发,整体而言不算很难,属于比较养老的。
在这家公司我待了大概2年3个月的时间。以前我一直念念想找一家大公司,可是等我真正进去了以后才发现,其实不是我想的那样,你要是被分进了核心项目组的话那还好说,如果在边缘项目组的话,结果那就不好说了。
KPI考核这个东西,好坏还真不好衡量。就像阿里的325一样,有的时候因为这个KPI,愣是把人搞成了抑郁症。
跳槽原由
跑题了,跑题了。
还是说回自己跳槽的原因,马云曾说辞职原因无非有:
第一,钱没给到位;
第二,心受委屈了!
我的原因更倾向于前者,在这家公司待了2年半,活不多,但由于岗位原因,自己的技术方面和工资方面一直都没有太大的涨幅,同时也因为其他一些原因,我在今天5月初疫情高峰过去后选择了裸辞。
然后准备了2个月,在7月份的时候开始投简历找工作。虽然疫情已经过去一段时间了,但还是能感受到疫情对IT行业的影响的,从投简历就能看出来,招人的需求不多,投了简历,公司回应也不是很积极。
从投简历,到约公司面试,到最后入职的话花了2个月左右的时间,下面我就记录以下具体的经历。
面试公司
面试的公司从几个人的小公司到几万人的大公司,从不出名的小公司到BAT和宇宙条(今日头条)都有。
我面试的公司主要有:
TourABC,7猫,哈啰出行,360金融,触宝,商米科技,比心陪练,传音控股,毒APP,爱奇艺,B站,阅文集团,饿了么,阿里巴巴,今日头条等比较出门的一些大公司
同时我还面试了一些比较小的的公司,不出名,前后大概有20家左右吧,通过率大概在50%左右,不过最后因为薪资的问题没有谈拢,所以就拒绝掉了。
怎么说呢,我出来上班,首先考虑的是薪资,比较都要先活着再谈其他的。不过有的公司薪资虽然达到了,但是因为做的东西跟我预期的不一样,所以也拒绝了。
还有一些大公司,像宇宙条,阿里,腾讯的,就是我自身问题了,能力达不到他们的要求,被拒了,这也很正常,毕竟能进去的也是少部分人,大多数的还是比较普通的。
面试方向
一开始我是找的关于应用层的开发,但是发现需求很少。
现在Android面试找工作的方向一般有应用需求开发,系统framework研发,音视频开发,基础架构开发,跨平台开发等几个方面。
从这次找工作来看,除了应用需求开发以外,其他的几个方面的需求还是比较高的,但同时要求也很高,并不是说你会使用MVP+Rxjava+Retrofit+Dagger2+Glide+Jetpack+Flutter+RN等技术点就可以了。
现在一般公司都要去你懂原理,了解技术实现细节了,现在市场上对于初中级的Android开发要求比较少了,更多的是对于高级研发的需求量比较大。
所以对于Android研发的人而言,需要加强自身的硬技术,有过硬的技术就不怕找不到好工作。
因为这次疫情的影响,找工作都是电话面试和视频面试。基本上一面是电话面试,二面三面的是视频面试,一般是在牛客网等平台开一个面试房间,有的公司需要在线coding的,要求比较高。
我从投简历到约公司面试,大概面了十几家公司,我每次面试完一家公司都会做个总结,把涉及到的内容都记录下来,同时不会的也会去恶补一下,都整理成相关文档,现在详细记录以下我的面试内容,供有需求的同学参考参考。
面试内容
面试的范围主要涉及Java基础,Android相关的,数据结构与算法,计算机网络等几个方面。
下面依次列出所问的问题:
Java部分
- 什么是线程,什么是进程?
- JDK & JVM & JRE分别是什么以及它们的区别?
- 解释一下为什么Java可以跨平台?
- 什么是面向过程 & 什么是面向对象 & 区别?
- 给我说说Java面向对象的特征以及讲讲你代码中凸显这些特征的经验。
- 什么是重载 & 什么是重写 & 区别。
- 谈谈你对this和super的认识。
- 接口和抽象类的区别。
- 静态属性和静态方法能被继承吗?静态方法又是否能被重写呢?
- 给我说说权限修饰符特性。
- 给我谈谈Java中的内部类。
- 闭包和内部类的区别?
- Java多态的实现机制是什么?
- 谈谈你对对象生命周期的认识?
- static关键字的作用?
- final关键字的作用。
Android 部分
- Activity是什么?
- 典型情况下的Activity生命周期?
- 异常情况下的Activity的生命周期 & 数据如何保存和恢复?
- 从Activity A跳转到Activity B之后,然后再点击back建之后,它们的生命周期调用流程是什么?
- 如何统计Activity的工作时间?
- 给我说说Activity的启动模式 & 使用场景。
- 如何在任意位置关掉应用所有Activity & 如何在任意位置关掉指定的Activity?
- Activity的启动流程(从源码角度解析)?
- 启动一个其它应用的Activity的生命周期分析。
- Activity任务栈是什么?在项目中有用到它吗?说给我听听
- 什么情况下Activity不走onDestory?
- 什么情况下Activity会单独执行onPause?
- a->b->c界面,其中b是SingleInstance的,那么c界面点back返回a界面,为什么?
- 如果一个Activity弹出一个Dialog,那么这个Acitvity会回调哪些生命周期函数呢?
- Activity之间如何通信 & Activity和Fragment之间通信 & Activity和Service之间通信?
- 说说Activity横竖屏切换的生命周期。
- 前台切换到后台,然后在回到前台时Activity的生命周期。
- 下拉状态栏时Activity的生命周期?
- Activity与Fragment的生命周期比较?
- 了解哪些Activity常用的标记位Flags?
- 谈谈隐式启动和显示启动Activity的方式?
- Activity用Intent传递数据和Bundle传递数据的区别?为什么不用HashMap呢?
- 在隐式启动中Intent可以设置多个action,多个category吗 & 顺便讲讲它们的匹配规则?
- Activity可以设置为对话框的形式吗?
- 如何给Activity设置进入和退出的动画?
- Activity使用Intent传递数据是否有限制 & 如果传递一个复杂的对象,例如一个复杂的控件对象应该怎么做?
- 在Activity中可以多次调用setContentView方法吗?说说不同时机第二次调用setContentView会发生什么?
- 说说分别在Activity里每一个生命周期函数里调用finish方法后,接下来Activity的生命周期如何回调?
- 有什么方法可以启动一个没有在AndroidManifest.xml中注册过的Activity?
- 在Activity进行配置时,catrgory和action的区别是什么?
- activity中分别在onCreate,onStart,onResume中调用finish后的生命周期如何回调?
- 锁定屏与解锁屏幕,Activity 生命周期?
- 如何设置Activity进入和退出的动画?
- 谈谈你对Activity中onNewIntent()方法的认识?
- 如果一个Activity启动比较慢,需要优化,你觉得可以从哪些方面入手?
- Activity之间传递数据的方式Intent是否有大小限制,如果传递的数据量偏大,有哪些方案?
- 了解scheme跳转协议吗?谈一谈
- 谈谈你对Activity的Context的认识?
- 如何在Application中获取当前Activity实例?
- Activity进程优先级?
- Activity出现ANR的条件有哪些 & 解决方案?
网络部分
- 你的项目架构是怎样的
- 三次握手,四次挥手的相关问题
- 网络请求框架的原理
- post和get的区别
- 如何实现一张5M的图片上传
其他关于每家公司问的面试内容具体我整理成了一个文档,需要的可以随手点赞+任意评论后,私信我获取领取方式。
面试总结
这是我自己总结出来的面试问题答案,每次面试都会查漏补缺。
文档获取方式:【Gitee】获取领取方式!
offer情况
总共面试了将近20家公司,大概可以的有40%~50%左右,不过有的公司因为薪资达不到自己的期望,所以拒绝了。
有的公司要求比较高,我没有达到他们的期望也被拒绝了,最终选择了一家中等规模的公司,主要做基础架构部分的内容,他们家的app,用户量达到5000万左右,日活也有几百万,进去主要做性能优化这方面的,比较符合我的预期,所以就选择了这家,目前已经上班2个月了,一切都还满意。
最后,在这里我也分享一份干货,由大佬收录整理的Android学习PDF+架构视频+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题,高级进阶架构帮助大家学习提升进阶,也节省大家在网上搜索的时间来学习,也可以分享给身边好友一起学习。