要想工资涨得快,还是得跳槽?一个三本Android程序猿外包到阿里的逆袭之路

要想工资涨得快,还是得跳槽?一个三本Android程序猿外包到阿里的逆袭之路_第1张图片

外包公司的艰苦岁月

小强毕业于东北一个三本学校,出生于一个西南地区贫困的小村庄。由于负担不起高昂的学费差点不能上学,最后只得到处找身边亲戚借钱。毕业后辗转了几家公司后,认识他时已经在菊厂的一家外包公司工作。

工作前两年,小强一直在一个小公司从事外包工作,每天CV打法没有一点学习上进的氛围。

想混日子还是很容易的。但是小强不甘心这么走下去,而是给自己设定了明确的人生目标。

前年他的主管给他打的绩效是A,但是他年终奖其实到手只有几千。而且那段时间经常深夜了自己还在搭建环境。

想想自己辛苦一年的年终奖连甲方员工的十分之一都不到,内心给自己定下了目标一定要离开外包公司。而且他为了这个目标,还学会了在项目中运用各种沟通技巧,很懂得如何同各个子系统的技术大牛进行交流,很快弄清楚了各个子系统的原理。

他能够在沟通中引导别人去交流,而不是尴尬地直接问问题,也会恰当地恭维对方。

成功逆袭阿里

两年后的某一天,和我说,说他要走了,由于蚂蚁金服在大力拓展业务,急需招聘有Android性能优化经验的人才。他去试了下居然通过了。

我当时听了这个消息非常诧异,因为阿里的社招一直比较严格,他的教育背景以及经验并没有什么优势。

要想工资涨得快,还是得跳槽?一个三本Android程序猿外包到阿里的逆袭之路_第2张图片

由于私交还行,一次一起聚餐的机会,他给我讲了他的面试经历,他把在菊厂所了解的性能优化方式跟面试官交流了下,从自己所掌握的技术广度方面成功打动了面试官。

面试官觉得他的教育背景和工作经历虽然不怎么样,但是由于当时确实太缺性能优化的人才,才勉强给他面试机会。随着面试流程的不断进行,面试官发现A非常追求技术能力提升,而且他以前确实也一直在本职工作之外坚持着。

经过5轮面试他成功拿到了offer,终面的时候他非常拿手,这得益于他平时喜欢和人沟通,喜欢以一种轻松幽默地方式跟别人交流。

进阿里不易,活下来更难。强烈的求生欲让他不愿意放弃来之不易的阿里机会,不愿再像以前一样,付出10倍的努力,却只能拿到1份回报。 于是他在阿里开启了疯狂地学习之路,经常为了项目交付搞到凌晨2点。项目中遇到不会的技术点马上向身边的同事求助,再不断地自我快速消化。

要想工资涨得快,还是得跳槽?一个三本Android程序猿外包到阿里的逆袭之路_第3张图片

阿里的面试很难,但是要好好准备

阿里社招一般有四到五轮,我这次的流程是第一轮技术面、第二轮写代码、第三轮boss面、第四轮boss面、第五轮HR面。

一面技术面

  • 介绍自己
  • 介绍简历上的项目
  • 推送sdk底层实现
  • socket相关实现
  • 高性能列表实现,重点围绕 recyclerview 展开,如何复用,如何缓存
  • 性能难点如何攻克
  • 性能优化方面项目中做了哪些工作
  • 热修复原理,类冷启动修复原理,类热修复原理,classLoader双亲机制
  • 换肤原理
  • 设计一个图片框架,我考虑的是如何加载,如何编解码,如何缓存,api的易用性,大部分参考 glide 思路
  • 在很多数中找出前n个最小
  • mvc mvp mvvm区别与项目使用情况
  • 网络层相关设计,volley底层实现,缓存相关
  • 自定义view相关
  • 下载模块涉及,成功率相关
  • 弹幕与播放器相关
  • 跨进程通讯手段与注意点,webview相关
  • EventBus相关
  • 性能优化经验及手段
  • 自己的方向是什么? 想做业务,还是想做专点的技术,如何理解项目架构。
  • 反提问:“自己技术性回答得怎样,有哪些改进。”
  • 为什么想要换工作
  • 兴趣爱好,工作室情况,如何协调工作室与辩论队
  • 平时学习习惯和安排

阿里二面

  • 网络请求涉及,如何设计缓存
  • 性能优化手段,场景
  • dp的设计
  • 熟悉的底层源码,广播底层实现,这一点自己确实还了解不够,不过自己讲了哦从wsm->activity->view的事件传递过程
  • 聊之前阿里的实习
  • 为什么想要换工作
  • 职业规划
  • 短视频行业,Bolo相关及一些竞品,因为平时也会留意自己开发的软件及竞拍,行业情况,所以有一些自己的见解
  • 聊兴趣爱好
  • 聊王者荣耀产品相关

三面boss面

  • 介绍自己情况,学android,工作经验
  • 擅长哪一方面,这个问题非常致命,一定要选你足够理解的,我那时候讲的是性能优化,但是感觉讲的不好
  • android 虚拟机区别,编译区别,dex区别
  • 热修复流程,原理是什么,业界有哪些方案,对比如何
  • 打包流程是怎样的
  • 应用启动相关流程,从孵化进程到MainActivity#onResume绘制整个流程
  • 新版本android特性
  • 手势滑动事件分发
  • view绘制流程
  • gradle执行流程
  • apk安装底层细节
  • 岗位要求
  • 工作负责内容
  • 换工作原因
  • 优缺点
  • 家庭情况
  • 个人现状

四面交叉面

  • 介绍自己
  • 项目经验,团队情况
  • 对网络是否熟悉,一次http请求,https整体实现
  • 以后想做什么,如何规划自己技术
  • 开源贡献,博客记录相关的开放性问题
  • 反问:后面是否还有技术面试,得到的答案是基本不会有了,等 HR 面试就好

五面HR面

  • 为什么选择换工作
  • 现在事业部状况
  • 负责的项目工作
  • 最困难的事是什么,想到的是项目难点和当时在工作室做项目,那段时间确实比较艰难,算印象最深刻的
  • 职业规划
  • 坚持最久的事
  • 最有成就感
  • 薪水相关
  • 项目经验,团队情况
  • 未来技术规划,是否考虑杭州,未来家庭规划
  • 反问:大概多久会有答复

通过系统学习提高核心竞争力

在互联网行业,大家逐渐都会有这种共识,要想工资涨得快,还是得跳槽……

公司的老员工想要涨工资真的很难,而被新人倒挂薪资更是常事……

那么怎么才能跳得好,薪资满意呢?我的几点建议:

  • 多看看机会
  • 跳槽不是瞎跳的,尤其是不建议看在高薪的诱惑上跨行业跨方向的跳槽
  • 提升自身核心竞争力

那说到核心竞争力,怎么才能提高呢?

成年人想要改变生活、逆转状态时,会不约而同做一件事,那就是再次学习。

接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用

帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。

从架构基础开始,分了8个模块来逐步从基础进阶到架构师的环节:

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

架构师筑基语言基础

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

知识要点:
1、设计思想与代码质量优化
2、程序性能优化
启动速度与执行效率优化
布局检测与优化
内存优化
耗电优化
网络传输与数据储存优化
APK大小优化

3、开发效率优化
分布式版本控制系统Git
自动化构建系统Gradle

4、项目实战
启动速度
流畅度
抖音在APK包大小资源优化的实践
优酷响应式布局技术全解析
网络优化
手机淘宝双十一性能优化项目揭秘
高德APP全链路源码依赖分析
彻底干掉OOM的实战经验分享
微信Android终端内存优化实践

Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析**

NDK模块开发(音视频开发系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

Flutter学习进阶

2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门**
……

微信小程序开发

微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战

Android相关源码解读

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

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

Android BAT高级开发面试题及答案解析

面试前夕,刷题冲刺

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

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

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。

所以不要去抱怨社会的不公平,机会是留个有准备的人,路就在脚下,走对了,人生必将逆袭。祝各位程序猿在新的一年里工作一帆风顺!

你可能感兴趣的:(面试,Android,程序员,Android,Android开发,面试,跳槽,移动开发)