这些教训是我最近四个月,从筹备面试到找到适合工作的汗水和泪水,心愿对你们能有帮忙!
- define 跳槽
-
跳槽前要思考的问题
- 钱不到位怎么办
- 心冤屈怎么办
- 到职前的思考
- 确定要走时须要做的筹备
- 行情怎么样
-
安卓跳槽须要温习的常识
- 基础知识
- 进阶常识
- 不同公司偏重内容不同
一、define 跳槽
首先请思考一个问题:在你眼中 “跳槽”包含哪些内容 ?
/******** 富丽丽丽的分割线 begin ************/
/******** 先思考 3 秒再往下看 ************/
/******** 富丽丽丽的分割线 end ************/
最近是“金三银四跳槽季”,很多敌人都想要跳槽,然而对“跳槽”的了解可能仅限于“写简历、面试”。
在这次跳槽前,我也这么认为的。
那时候工作不顺利,正好在一个群里看到有公司招聘,就发了简历过来,面完试本人感觉良好,后果却打了脸,让人家拒了,理由是我要的工资太高了。
认真检查后,发现我筹备的太仓促,或者说基本没怎么筹备,只是写了份简历,而后有面试机会就去了。面试过程中有些我的项目细节答不上来,很多知识点也答得不好,让人家感觉程度个别。
痛定思痛,在起初的几个月,我开始查阅各种跳槽、面试相干的材料,同时整顿了重点温习知识点,按计划一步步学习。
在两周前,感觉本人学习的差不多了,公司的状况也根本看清楚了,就决定来到。
于是写简历、投简历、面试,面了五家,拿到了五个 offer,最终抉择了对我目前来说最合适的一个。
在这个过程中,我对“跳槽”的意识逐步加深。
咋一看“跳槽”就是写简历、换工作,但要想得到称心的 offer,其实须要思考、筹备的内容很多,大略有这么几点:
- 跳槽前要思考分明
- 把握跳槽须要的知识点
- 写一份高质量的简历
- 理解简历投递的机会和形式
- 拿到面试邀请要做好功课
- 面试中要调整心态,致力体现
- 面试后及时思考总结
- 有多个 offer 如何抉择
- 优雅的到职
- 筹备入职
这些应该是一次跳槽从开始到完结比拟残缺的流程了。接下来咱们将具体理解每一部分。
二、跳槽前要思考的问题
我的如意工作是一个盖世英雄,有一天他会拿着高薪股权来迎娶我,我猜到了结尾,却猜不到这终局 …
每一份工作都是以期望开始,咱们心怀神往,心愿在公司里大展拳脚、做些成就。
然而是什么让咱们走到明天这境地,行将与它离别?
个别到职有两个起因:
- 钱不到位
- 心冤屈了
1. 钱不到位怎么办
业界一种广泛的观点是“跳槽涨工资最快”,这也确实是现状。
为什么公司迟迟不给加薪,非得逼得咱们跳槽呢?
答案很简略:因为公司没有意识到你价值的增长。
咱们在入职时可能只是一个菜鸟,然而在工作一段时间后,因为集体的致力以及业务的锤炼,程度曾经有了很大的不同,本人心里感觉本人不再是菜鸟了,心愿能拿更高的工资。
但你可能始终在做一个我的项目,没有承当更多的责任,公司无奈理解到你当初能力到什么水平了。
这个时候,如果领导比拟好的话,你能够先被动要求承当工作,踊跃实现(就是加班加点),而后在一段时间后找领导谈加薪。这样就有理有据,让人服气,领导个别都会批准。这样就不必跳槽了,省去筹备面试题的繁琐。Over。
如果领导不批准,那就没辙了。
2. 心里冤屈怎么办
员工到职的另外一种起因就是:待着不爽,心里冤屈了。
一些被动的起因比方领导更替、岗位调整、加班太多等,都会让人心里不难受。
拿我来说,公司业务转型,做的工作不是安卓利用开发,做久了心里不虚浮,就想到职了。
如果有条件的话,能够跟领导沟通是否复原原样,如果有望,那就只好跳槽了。
但在真正提出到职之前,还须要思考几个问题。
3. 到职前的思考
If you don’t like something, change it. If you can’t change it, change your attitude. Don’t complain.
有的敌人可能会说:别废话,连忙讲面试知识点,我干的不爽就跳槽了,还想什么想?
非也,每次跳槽的老本其实很大,除去面试来回的工夫不说,新旧环境的适应、业务的相熟、代码的把握,都须要老本,如果两次跳槽距离太短,其实工夫都花在了适应新环境上,真正学习、积淀的内容不会太多,尤其在刚开始工作,更禁忌这样子。
因而,在确定到职前,你须要先问本人 3 个问题:
- 当初的我的项目没有我能够学习的内容了吗?
- 来到这里我会失去什么?
- 到新环境能够失去什么?
拿我本人来说,我的项目里的代码我没有把握太扎实,框架层很多设计思路还搞不清楚,进来面试一问就问倒了。这时如果真的换了工作,恐怕又要接触新我的项目、新代码,基本没工夫好好消化之前的代码。
除了代码,人际关系也须要积淀,在这个公司待了那么久,看到了一些共事的优秀品质,学习、借鉴他们也须要肯定的工夫,如果忙着换工作,可能就失去了和共事深刻交换的机会。
因而在第一次面试失败后,我把我的项目代码好好钻研了一个多月,也跟共事求教很多学习、布局上的常识,为前面的路做好铺垫。
4. 确定要走时须要做的筹备
在确定要走后,尽量不要裸辞,当初的行情你懂得,没有筹备就裸辞,等于断了本人后路。
有的网友问我:辞职在家好好温习一个多月怎么样。我劝他还是算了,都不是盲目的人,天天在家反而更学不进去。最好的状态就是一边工作,一边收集要学习的知识点学习材料,上班路上、早晨、周末去学习,那样精神压力不会太大。
在开始温习知识点前,你须要确认以下 2 点:
- 定位
- 亮点
定位
“定位”是指你要确定本人所处的阶段和想要的指标。次要包含:
- 目前是什么程度
- 有什么积攒
- 工作我的项目里有什么难点
- 想找什么级别的工作
比方我,给本人的定位就是:当初是中级程度,常见利用开发需要根本都能解决,开源框架应用没问题,局部读了源码,工作我的项目里次要是混合开发比较复杂,想找有利于本人成长的、大公司中高级安卓开发工作。
亮点
有的敌人可能对“亮点”的定义不是很明确。
“亮点”其实就是可能把你和泛滥应聘者辨别进去的优秀品质。
程序员面试次要考查这几点:
- 技能程度
- 学习能力
- 团队单干
- 工作心态等
如果你在其中任何一个方面都有本人的劣势,就连忙找进去,写到简历上,面试表达出来。
拿技能程度来说,依据做过我的项目的类型,确定本人以后善于的点,比方你做的是电商利用,那可能就善于混合开发、自定义 View;做的是电台利用,那可能就善于后盾过程保活;做的是大用户量利用,那可能就善于监控、性能优化等等。
找到本人已有的或者该有的亮点,而后去致力把握、精通。
5. 行情怎么样
有的网友说早就想跳槽了,然而据说行情不好,不敢跳。
其实吧,价格取决于价值,影响价格稳定的是供需关系。
20117 年守业公司确实死了很多,P2P、O2O 死了一大堆,但活下来的又融了很多钱,也成立了很多新公司,也须要招很多人。
这个时候,招聘的规范就比前几年要高一些了,去招聘软件上看也能够发现,大多要求 3 年以上教训。这是因为当初安卓高级太多了,各种应届生、培训班涌入市场,前几年会用 ListView 就能够找工作的日子一去不复还。不过真正的高级,或者有后劲的中级,还是很受企业欢送的。
因而,咱们在想要跳槽时,不要被所谓的“差行情”拦住,而是要扫视本人的程度,确定本人的指标,到底是要找高级岗、中级岗,还是高级岗。
面试前,面试官拿到你的简历,依据简历上的信息会建设第一印象。因而你想要出现给对方一个怎么的定位,有什么亮点,都须要当时思考分明。
确定了方向后就要开始致力筹备,下一节咱们介绍安卓跳槽须要筹备温习的常识。
三、安卓跳槽须要温习的常识
在介绍面试考查内容前,先来看看我认为的“中级安卓”须要把握的知识点,这些是联合一些面经、本人理论面试以及求教前辈总结而来的,次要包含两局部:
- 基础知识
- 进阶常识
面试中级及以下岗位时,在电话面试、一面、或者你简历没有突出亮点时,个别都会先问根底,目标是确定你基本功扎不扎实。
如果基础知识有太多不会的就危险了,必须好好筹备,这是躲不过的。
电话面试、一面考查基本功过关后,就会进入下一阶段 — 问些进阶的,看看你最高程度在哪里。
这个阶段有不会的很失常,因为对方正在确定你的程度,但态度肯定要积极主动,即便之前没有钻研过,也要联合一些教训说出揣测的后果,切忌间接说“我不会”。
上面的所有技术知识点具体内容都整顿在了开源我的项目【GitHub】, 有须要的能够自取。
一、基础知识
基础知识次要包含以下几点:
- Java 根底
- 并发 / 异步
- 安卓根底
- 设计模式
- 常见的数据结构算法
- 网络根底
1.Java 根底
尽管当初 Kotlin 挺火的,但我面了几家大公司都没问 Kotlin,问了很多 Java。所以肯定要保障以后常识把握纯熟了,再学习新常识,不然真成了狗熊掰苞米。
Java 根底次要包含以下知识点:
- 外部类、动态外部类区别、应用场景
- 抽象类、接口 实战应用场景
-
汇合
- 汇合专栏
-
注解
- 什么是注解以及运行时注解的应用
- 应用编译时注解简略实现相似 ButterKnife 的成果
-
反射
- 深刻了解 Java 反射:Class(反射的入口)
- 深刻了解 Java 反射:Field(成员变量)
- 深刻了解 Java 反射:Method(成员办法)
-
泛型
- 深刻了解 Java 泛型
- 异样
- IO NIO
倡议看《Java 编程思维》,不仅解答了 What 还有探讨 Why。
2. 并发 / 异步
次要包含两局部:
- 安卓并发类
- Java 并发常识
安卓的主线程模型,要求咱们必须将耗时操作放到线程异步执行,否则会影响 app 的晦涩甚至卡顿。
因而必须把握安卓提供的 Handler
, HandlerThread
, IntentService
, AsyncTask
,这是安卓为咱们封装好的异步类,从应用到原理,都要了解,面试常客。
接着就须要理解 Java 的线程、内存模型和 Java 并发包下提供的类了,这也是大公司考查根底的常客。
除了面试,如果你去看过开源框架,会发现外面有很多 ConcurrentHashMap
, Lock
, Condition
,一开始看的你一脸懵逼,在把握了 Java 并发常识后,再去看框架就会省力许多。
Java 并发次要知识点:
- 同步锁 synchronized 与 Lock 区别
- 什么是可重入锁
- 线程通信办法
- wait 和 sleep 区别
- wait-notify 模型
- 生产者消费者模型
- 线程池
倡议浏览书籍:《Android 开发艺术摸索》、《Java 并发编程艺术》、《Java 并发编程实战》
我把所有遇到的 Java 面试题做了一个整顿,均放在了开源我的项目【GitHub】, 有须要的能够自取。
3. 安卓根底
安卓根底爱问的来来回回就那些点:
-
四大组件,生命周期启动形式等常见问题
- Android 进阶 1:Activity 的生命周期
- Android 进阶 2:Activity 的 Task 与启动模式
- Android 进阶 3:Intent 与 IntentFilter 匹配规定
- Android 进阶 4:Service 的一些细节
-
自定义 View 相干
- 绘制流程
- 事件传递
- 滑动抵触
这部分是常见的,应该大多数人都把握差不多了, 分享给大家我整顿的 Android 根底局部面试题,有须要的去我的【GitHub】自取。
4. 设计模式
我这次找工作,口试里呈现了两次写单例模式,记得几年前校招的时候就因为单例失去过一次好机会,单例模式的重要性,你本人掂量一下。
设计模式考查的也不算太简单,晓得罕用的几种设计模式应用场景,会手写单例的要害几种(动态外部类 double-check 晓得区别)就能够了。
倡议去看看《大话设计模式》、《Android 源码设计模式》。
5. 数据结构算法
我这次面试算法问的比拟少,只手写过插入排序,倡议把冒泡、插入、归并工夫复杂度和实现相熟相熟,最好手写下,不然现场手写的时候容易出错。
作为一个有谋求的程序员,这些数据结构、算法是须要把握的:
- 数组链表区别
- 链表插入删除
- 栈及应用场景
- 队列及应用场景(有可能拓展到阻塞队列)
这些是根底,学好能力把握其余的。
红黑树、KMP、最短门路、动静布局、背包问题这些都属于进阶了,问的比拟少,理解下即可。
能够买本《剑指 offer》看看,锤炼下算法题的常见解题思路。《算法》就太科班化了,个别人也看不进去,有趣味的能够看看。
6. 网络根底
网络其实问的也不算多,因为毕竟不必咱们本人去实现一个 HTTP Client,常见的网络问题大略以下内容:
- 七层模型
- HTTP 内容
- 常见响应码
- 缓存相干
- TCP 三次握手、四次挥手
-
Socket 的应用
- 过程通信之 Socket(顺便回顾 TCP UDP)
进阶常识
在确定你的根底够用后,二三面就会考查你的进阶能力。就利用开发来说,进阶常识次要有以下内容:
- 框架原理:缓存、网络、图片
- 性能优化
- 架构模式
- JVM
- 插件化
1. 框架原理
作为有谋求的安卓开发,怎么可能只满足应用框架而不知其原理呢?
在面试时也常常会被问到:你相熟什么框架的源码?
这个时候如果没有筹备就难堪了,失去了给本人加分的机会。
当初支流框架是 RxJava Retrofit OkHttp Picasso/Glide EventBus3,你能够抉择其中两个左右相熟一下源码和大略流程, 重要的是了解为什么要有这个框架,解决的问题,如何解决的 。
倡议浏览书籍:《Android 进阶之光》
2. 性能优化
性能优化又是另外一个高频问题,个别次要问内存方面、UI 方面的优化。
常见问题:
-
内存优化
- 内存透露如何防止、检测
- 内存抖动怎么办
- 有应用过什么工具吗?
- 如何防止 OOM
-
UI 优化
- 布局卡顿怎么办
- 如何判断布局是否须要优化
- 有哪些工具
这些问题你都能够从官网的 性能优化榜样 看到,如果无奈翻过去,能够看 胡凯的博客,总结的也很棒。
另外也能够浏览《高性能 Android 利用开发》。
3. 架构模式
高级的安卓开发不仅须要实现一个模块,还须要负责整个我的项目的设计与开发。
常见的架构模式是按我的项目分层分,MVC MVP MVVM 这些,能够选其中两个进行学习、实际,比照理解劣势和劣势就能够了,网上文章很多的。
另外就是设计思维,OOP 面向对象开发的思维个别都晓得,继承封装多态,什么时候用接口什么时候用抽象类,其实和设计模式相辅相成的。
还有 AOP,面向切面编程,大型项目个别都会用到,在不入侵代码的同时增加性能,倡议理解。
还有路由,当初都风行组件化,组件化的一个问题就是组件间如何依赖,如何通信,这些都须要有良好的架构设计思维。我本人也在摸索中。
这部分的常识属于集体教训,不同的人不同的领会,没有适宜所有人的相干书籍,须要本人多写、多总结进去。
4.JVM
在去一家公司面试时,隔壁屋也在面试一个后盾,在期待面试官时我偷偷听了下他们的对话。其中有一段对话记忆粗浅:
- 请介绍下 CMS 垃圾收集器。
- 额,对不起,我只毕业一年,这方面理解的比拟少。
JVM 的常识到底须要工作几年再理解呢?
不同的人有不同的认识,我的认识是: 尽可能早 。
JVM 次要内容大略有这些(来自《深刻了解 Java 虚拟机》):
- JMM(Java 内存模型)
- GC(垃圾回收策略)
- 虚拟机性能监控、调优
- 类文件构造
- 类加载机制
- 程序编译优化
这些内容可能听起来比拟边远,很多人感觉我就开发业务,须要理解这么多吗?看起来都没什么用。
了解这些内容,对咱们日常的业务开发有极大地促进作用:
- 理解 JMM 后,你对内存调配、OOM 的了解就不会只停留在表层
- 理解 GC 后,对性能优化的了解也会更上一层
- 相熟类加载机制后,对你学习插件化也会有很大帮忙
- 理解虚拟机对程序的优化,就会明确一些并发原语的作用及意义
而这些也是面试时常常问的问题,晓得的越多,对你的加分就越多。
倡议浏览:《深刻了解 Java 虚拟机》
5. 插件化
插件化这么火,各大公司都在研发本人的插件化,这不仅仅是对业务的撑持,同时也显示出他们安卓研发的技术深厚。
有的敌人可能会说了:我当初的我的项目用户这么少,用这个有什么用。
不说学了有没有用,在学习的过程中,能够对你现有常识体系有极大的晋升,要开发插件化,须要把握的内容大略有这些:
- 类加载机制
- 四大组件启动流程
- 资源加载
- 动静代理
看到了吧,它是对一些疑难知识点的利用,通过有目标的学习,能够让咱们对基础知识把握的更加醇厚。
面试时如果你说本人有被动学习这方面的常识,还能说出一部分知识点,不仅显示出你的技术能力,还体现了你的被动学习性和学习能力,大大的加分!
倡议浏览:田维术的博客
进阶常识是我本人教训所得,如果有脱漏,欢送补充。
不同公司偏重内容不同
有敌人可能会问了: 根底的内容太多了吧,我可不可以间接筹备高级的。
首先你间接学高级很吃力,容易误会不说,硬记下来没多久也就遗记了;其次面试时的发问程序我下面也说了,都是从根底开始的,根底不扎实,活不过两集。
这里再唠叨一句,如果一家公司靠投机取巧就能够进去,那进去的投机取巧者岂止你一个人,那样的公司气氛是你想要的吗?如果想进入一个现实的大公司,还是踏踏实实地一步步走吧。
把握了知识点后,接下来就要针对各公司偏重内容重点温习了。
各大公司面试考查的知识点,网上相干的材料不少,我平时也在关注一些面经,做了一些搜集整理,看看外面有什么是本人欠缺的,而后找工夫补上, 有须要的敌人能够去我的【GitHub】自取。
最初
如果你想去一家不错的公司,然而目前的硬实力又不到,我感觉还是有必要去致力一下的,技术能力的高下能决定你走多远,平台的高下,能决定你的高度。
如果你通过致力胜利进入到了心仪的公司,肯定不要懈怠放松,职场成长和新技术学习一样,逆水行舟。