前言
去年年底,我提交了从360提交了辞呈。原因很简单,公司业绩不行了!
我们公司2019年的及格线是38亿元,但是上半年仅仅完成了16.09亿元。
屋漏偏逢连夜雨,王思聪玩砸了的熊猫直播,我们360也算是个大股东,持股近20%。熊猫直播破产,360保守估计要损失5个亿。
今年年初面试了以下几个公司(不是面试顺序):
阿里(钉钉):拿到 offer
头条(抖音、火山):拿到 offer
美团(美团平台):拿到 offer
腾讯(腾讯音乐):二面挂
小红书:拿到 offer
bilibili:拿到 offer
vivo:拿到 offer
京东:三面挂
万兴科技:拿到 offer
选择跳槽的核心就是将自己的利益最大化,当然这里说的利益,不仅仅是薪资福利,还有自己的职业规划。
职业规划
作为技术人员,我大概总结了下面三个方向,其实哪个方向都是大有可为,关键还是要看自己。
技术经理
架构师
专项领域的专家
对于我这样一个不再年轻的程序员来说,提前准备,这样我们将来才能有更多机会。
机会不会无缘无故地降临到一个人头上,一定是因为我们在某件事或某个时期的行为表现,让上司、同事等觉得我们有管理能力,机会才会选择我们。
如果我们要避免30岁不迷茫,35岁退休。
那么我们要尽早规划,最晚也要28岁开始规划。下图是我学习过程中参考践行的某知名国际管理公司IT人才职业发展路径。
所以,如果想走向管理,就要跨越岗位井,打破职责范围,早早观察、研究,看看我们到底能做什么和管理相关的事情,学习、实践,让自己能做好这些事情。
基础知识
开始我是找的关于应用层的开发,但是发现需求很少,现在Android面试找工作的方向一般有应用需求开发,系统framework研发,音视频开发,基础架构开发,跨平台开发等几个方面,从这次找工作来看,除了应用需求开发以外,其他的几个方面的需求还是比较高的,但同时要求也很高,并不是说你会使用MVP+Rxjava+Retrofit+Dagger2+Glide+Jetpack+Flutter+RN等技术点就可以了,现在一般公司都要去你懂原理,了解技术实现细节了,现在市场上对于初中级的Android开发要求比较少了,更多的是对于高级研发的需求量比较大,所以对于Android研发的人而言,需要加强自身的硬技术,有过硬的技术就不怕找不到好工作。
由于面的Android岗位,需要准备一些Java和Android方面的知识,有很多的文章都会去介绍怎么去复习基础的知识或者进阶知识,或者是阅读一些经典的面试数据,例如任玉刚的《Android开发艺术探索》,都是非常不错的。大家可以根据网上的文章和一些数据梳理一个自己的知识体系,将一个一个知识点形成点再到面,这样能更加深刻的理解,而且有自己的侧重点,我就列举一下我的准备的方向:
这个是我的知识体系的总纲,下面放出全部的思维导图。
面试内容
面试的范围主要涉及Java基础,Android相关的,数据结构与算法,计算机网络等几个方面。下面依次列出所问的问题:
Java部分
首先关于Java基础知识点,主要包含以下内容,接口和抽象类区别,string.stringbuilder.stringbuffer三者区别,Java集合框架底层实现原理,线程和进程的理解,线程池得作用,线程的各种状态,gc垃圾回收方面得知识点,具体如下:
Java线程和多线程
说说JVM,它的程序计数器是干嘛用的?GCRoots的对象可以有哪些。
集合list和linkedList 区别
hashmap底层数据结构
Java同步方式有哪些
volatile关键字和synchronized关键字原理
jvm的相关东西
Integer的内容
Java线程池相关的内容
Android部分
Android知识点考察,主要包含以下内容:activity的启动模式,service的理解,进程间通信,插件化,组件化,热更新之类的原理,网络请求库okhttp原理,设计模式,类加载机制,Handler的理解,Android启动优化,性能优化相关的东西。具体如下:
Android跨进程方式及原理
Android性能优化,如何优化到极致,线程级别
Android Handler的原理
Android ANR的产生原因,如何定位ANR。
如何计算Android启动时间,如何优化启动。
说说Android架构模式,MVC是什么解决了什么东西,MVP是什么?它跟MVC有什么区别?MVVM了解吗,是什么东西。
Android BInder机制是什么。
AIDL了解吗,说说它的原理
Android启动Activity流程,涉及到哪些类?
Android Binder为什么进行一次数据拷贝而不是2次或者0次。
事件分发机制是什么?
网络请求库的实现原理是什么,详细说一下OkHttp的细节
图片加载库Glide的优点
LRUCache缓存的原理
组件化模块化,插件化得理解
如何进行性能优化以及如何设计一款性能优化的工具,从哪些方面入手
react native,flutter和kotlin相关的内容
Android 架构演变,MVP和MVVM
Android各大市场上架APP的规范
Google play市场
说说组件化和插件化,热更新技术原理
网络部分
你的项目架构是怎样的
三次握手,四次挥手的相关问题
网络请求框架的原理
post和get的区别
如何实现一张5M的图片上传
总结
其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
上面分享的腾讯、头条、阿里、美团、字节跳动等公司2020年的面试真题解析大全,笔者还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
【Android学习PDF+学习视频+面试文档+知识点笔记】
【Android高级架构视频学习资源】
Android部分精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
【Android进阶学习视频】、【全套Android面试秘籍】下载地址:https://shimo.im/docs/w6cyqyXqKRPDGcrr