Android开发Android开发经验谈Android技术知识

疫情过后打算跳槽阿里,本以为凉了没想到居然是它“救”了我(详细面

2020-06-10  本文已影响0人  jett老师

一些想说的话

程序员是有阶段的,1-3年,3-5年,5-10年。有一部分人能把这个数字提前,而有些人却一直停留在第一阶段1-3年。为什么区别这么大呢?感兴趣的朋友可以看下我对于面试的理解与感悟。我会以我亲身的一些经历来告诉大家,希望能给现在还在找工作中奔波的你带来一点点建议和丝丝温暖。

我的面试前规划

“跳槽”包括哪些内容

首先请思考一个问题:在你眼中“跳槽”包括哪些内容

大家都知道“金三银四,金九银十跳槽季”,但是由于疫情影响这个数字扩大到了2020一整年。对于现在还认为“跳槽”仅限于“写简历、面试”,那你就凉了。

今年 面试的时候我也这么认为。

那时候工作不顺利,正好在一个群里看到有公司招聘,就发了简历过去,面完试自己感觉良好,结果却打了脸,让人家拒了,理由是我要的工资太高了。

仔细反省后,发现我准备的太仓促,或者说根本没怎么准备,只是写了份简历,然后有面试机会就去了。面试过程中有些项目细节答不上来,很多知识点也答得不好,让人家感觉水平一般。

痛定思痛,在后来的几个月,我开始查阅各种跳槽、面试相关的资料,同时整理了重点复习知识点,按计划一步步学习。

在两周前,感觉自己学习的差不多了,公司的情况也基本看清楚了,就决定离开。

于是写简历、投简历、面试,面了五家,拿到了五个 offer,最终选择了对我目前来说最合适的一个。

在这个过程中,我对“跳槽”的认识逐渐加深。

乍一看“跳槽”就是写简历、换工作,但要想得到满意的 offer,其实需要思考、准备的内容很多,大概有这么几点:

  1. 跳槽前要思考清楚
  2. 掌握跳槽需要的知识点
  3. 写一份高质量的简历
  4. 了解简历投递的时机和方式
  5. 拿到面试邀请要做好功课
  6. 面试中要调整心态,努力表现
  7. 面试后及时思考总结
  8. 有多个 offer 如何选择
  9. 优雅的离职

这些应该是一次跳槽从开始到结束比较完整的流程了。接下来我们将详细了解每一部分。

跳槽前要思考的问题

我的如意工作是一个盖世英雄,有一天他会拿着高薪股权来迎娶我,我猜到了开头,却猜不到这结局...

每一份工作都是以希冀开始,我们心怀憧憬,希望在公司里大展拳脚、做些成就。

然而是什么让我们走到今天这地步,即将与它分手?

一般离职有两个原因:

  1. 钱不到位
  2. 心委屈了

钱不到位怎么办

业界一种普遍的观念是“跳槽涨工资最快”,这也的确是现状。

为什么公司迟迟不给加薪,非得逼得我们跳槽呢?

答案很简单:因为公司没有意识到你价值的增长。

我们在入职时可能只是一个菜鸟,但是在工作一段时间后,由于个人的努力以及业务的锻炼,水平已经有了很大的不同,自己心里觉得自己不再是菜鸟了,希望能拿更高的工资。

但你可能一直在做一个项目,没有承担更多的责任,公司无法了解到你现在能力到什么程度了。

这个时候,如果领导比较好的话,你可以先主动要求承担任务,积极完成(就是加班加点),然后在一段时间后找领导谈加薪。这样就有理有据,让人信服,领导一般都会同意。这样就不用跳槽了,省去准备面试题的繁琐。Over。

如果领导不同意,那就没辙了。

心委屈怎么办

员工离职的另外一种原因就是:待着不爽,心里委屈了。

一些被动的原因比如领导更替、岗位调整、加班太多等,都会让人心里不舒服。拿我来说,公司业务转型,做的工作不是安卓应用开发,做久了心里不踏实,就想离职了。如果有条件的话,可以跟领导沟通能否恢复原样,如果无望,那就只好跳槽了。

但在真正提出离职之前,还需要思考几个问题。

离职前的思考

If you don't like something, change it. If you can't change it, change your attitude. Don't complain.

有的朋友可能会说:别废话,赶紧讲面试知识点,我干的不爽就跳槽了,还想什么想?

非也,每次跳槽的成本其实很大,除去面试来回的时间不说,新旧环境的适应、业务的熟悉、代码的掌握,都需要成本,如果两次跳槽间隔太短,其实时间都花在了适应新环境上,真正学习、沉淀的内容不会太多,尤其在刚开始工作,更忌讳这样子。

因此,在确定离职前,你需要先问自己 3 个问题:

  1. 现在的项目没有我可以学习的内容了吗?
  2. 离开这里我会失去什么?
  3. 到新环境可以得到什么?

拿我自己来说,3 月份时项目里的代码我没有掌握太扎实,框架层很多设计思路还搞不清楚,出去面试一问就问倒了。这时如果真的换了工作,恐怕又要接触新项目、新代码,根本没时间好好消化之前的代码。

除了代码,人际关系也需要沉淀,在这个公司待了那么久,看到了一些同事的优秀品质,学习、借鉴他们也需要一定的时间,如果忙着换工作,可能就失去了和同事深入交流的机会。

因此在第一次面试失败后,我把项目代码好好研究了一个多月,也跟同事请教很多学习、规划上的知识,为后面的路做好铺垫。

确定要走时需要做的准备

在确定要走后,尽量不要裸辞,现在的行情你懂得,没有准备就裸辞,等于断了自己后路。

有的网友问我:辞职在家好好复习一个多月怎么样。我劝他还是算了,都不是自觉的人,天天在家反而更学不进去。最好的状态就是一边工作,一边搜集要学习的知识点学习资料,下班路上、晚上、周末去学习,那样精神压力不会太大。

在开始复习知识点前,你需要确认以下 2 点:

  1. 定位
  2. 亮点

定位

“定位” 是指你要确定自己所处的阶段和想要的目标。主要包括:

比如我,给自己的定位就是:现在是中级水平,常见应用开发需求基本都能解决,开源框架使用没问题,部分读了源码,工作项目里主要是混合开发比较复杂,想找有利于自己成长的、大公司中高级安卓开发工作。

亮点

有的朋友可能对 “亮点” 的定义不是很明白。“亮点” 其实就是能够把你和众多应聘者区分出来的优秀品质。

程序员面试主要考察这几点:

如果你在其中任何一个方面都有自己的优势,就赶紧找出来,写到简历上,面试表达出来。

拿技能水平来说,根据做过项目的类型,确定自己当前擅长的点,比如你做的是电商应用,那可能就擅长混合开发、自定义 View;做的是电台应用,那可能就擅长后台进程保活;做的是大用户量应用,那可能就擅长监控、性能优化等等。

找到自己已有的或者该有的亮点,然后去努力掌握、精通。

行情怎么样

有的网友说早就想跳槽了,但是听说行情不好,不敢跳。其实吧,价格取决于价值,影响价格波动的是供需关系。

2016 年创业公司的确死了很多,P2P、O2O 死了一大堆,但活下来的又融了很多钱,也成立了很多新公司,也需要招很多人。

这个时候,招聘的标准就比前几年要高一些了,去招聘软件上看也可以发现,大多要求 3 年以上经验。这是因为现在安卓初级太多了,各种应届生、培训班涌入市场,前几年会用 ListView 就可以找工作的日子一去不复还。不过真正的高级,或者有潜力的中级,还是很受企业欢迎的。

因此,我们在想要跳槽时,不要被所谓的“差行情”拦住,而是要审视自己的水平,确定自己的目标,究竟是要找初级岗、中级岗,还是高级岗。

面试前,面试官拿到你的简历,根据简历上的信息会建立第一印象。因此你想要呈现给对方一个怎样的定位,有什么亮点,都需要事先思考清楚。

确定了方向后就要开始努力准备,下一节我们介绍安卓跳槽需要准备复习的知识。

安卓跳槽需要复习的知识

在介绍面试考察内容前,先来看看我认为的“中级安卓”需要掌握的知识点,这些是结合一些面经、自己实际面试以及请教前辈总结而来的,主要包括两部分:

  1. Android核心知识
  2. 面试知识

面试中级及以下岗位时,在电话面试、一面、或者你简历没有突出亮点时,一般都会先问基础,目的是确定你基本功扎不扎实。

如果基础知识有太多不会的就危险了,必须好好准备,这是躲不过的。电话面试、一面考察基本功过关后,就会进入下一阶段 --- 问些进阶的,看看你最高水平在哪里。

这个阶段有不会的很正常,因为对方正在确定你的水平,但态度一定要积极主动,即使之前没有研究过,也要结合一些经验说出推测的结果,切忌直接说“我不会”。

一.Android核心知识

基础知识主要包括以下几点:

  1. Java知识点汇总
  2. Android知识点汇总
  3. Android扩展知识点
  4. Android开源库源码分析
  5. 设计模式汇总网络基础
  6. 常见大厂面试题汇总

1. Java知识点汇总

虽然现在 Kotlin 挺火的,但我面了几家大公司都没问 Kotlin,问了很多 Java 。所以一定要保证当前知识掌握熟练了,再学习新知识,不然真成了狗熊掰苞米。

Java 基础主要包括以下知识点:

上面的内容我做成了一个335页的《Android高级工程师学习核心笔记》PDF,其他必学的知识感兴趣的朋友们可以去网上一搜,或者去买本书看下就好了,建议看 《Java 并发编程的艺术》。

2. Android知识点汇总

主要包括以下部分:

安卓的主线程模型,要求我们必须将耗时操作放到线程异步执行,否则会影响 app 的流畅甚至卡顿。

因此必须掌握安卓提供的 Handler, HandlerThread, IntentService, AsyncTask ,这是安卓为我们封装好的异步类,从使用到原理,都要理解,面试常客。

接着就需要了解 Java 的线程、内存模型和 Java 并发包下提供的类了,这也是大公司考察基础的常客。

除了面试,如果你去看过开源框架,会发现里面有很多 ConcurrentHashMap, Lock, Condition,一开始看的你一脸懵逼,在掌握了 Java 并发知识后,再去看框架就会省力许多。

我的并发编程专栏 中写了一部分,剩下的搜一下好了。

建议阅读书籍:《Android 开发艺术探索》、《Java 并发编程艺术》、《Java 并发编程实战》

3. Android扩展知识点

安卓扩展知识点爱问的来来回回就那些点:

这部分是常见的,应该大多数人都掌握差不多了,书的话还是看 《艺术探索》。

4. Android开源库源码分析

书籍推荐

《App研发录》
《Android群英传》
《深入理解Android》
《Android开发艺术探索》
《Android系统源代码情景分析》

5. 设计模式汇总网络基础

我这次面试设计模式问的比较少,只问了一下面向对象六大原则

作为一个有追求的程序员,这些设计模式是需要掌握的:

这些是基础,学好才能掌握其他的。

书籍推荐

《Android设计模式与最佳实践》本书针对中高级读者,旨在带领读者了解设计模式如何影响Android开发的方方面面,及如何采用这些设计模式来改善开发实践。主要内容包括:Android开发环境下的工厂模式与抽象工厂模式,material design和用户界面设计,布局模式,结构型模式,激活模式,等等。

6.常见大厂面试题汇总

这些都是《BATJ大厂精选高频面试题》的一个集合和分类,我花了很多时间去搜集整理的,大家可以做个参考,刷题目也是需要系统刷题的,这样不仅可以提升你对知识整合的程度,还可以比较系统全面的刷到重要知识点,不会乱所以刷题目最好也要有一个大致方向和分类。

书籍推荐

《Android面试高薪之路》

《剑指Offer第二版》

进阶知识是我自己经验所得,如果有遗漏,欢迎补充。

不同公司侧重内容不同

有朋友可能会问了: 基础的内容太多了吧,我可不可以直接准备高级的。

首先你直接学高级很费劲,容易误解不说,硬记下来没多久也就忘记了;其次面试时的提问顺序我上面也说了,都是从基础开始的,基础不扎实,活不过两集。

这里再唠叨一句,如果一家公司靠投机取巧就可以进去,那进去的投机取巧者岂止你一个人,那样的公司氛围是你想要的吗?如果想进入一个理想的大公司,还是踏踏实实地一步步走吧。

掌握了知识点后,接下来就要针对各公司侧重内容重点复习了。

各大公司面试考察的知识点,网上相关的资料不少,我平时也在关注一些面经,看看里面有什么是自己欠缺的,然后找时间补上。

首先不同岗位的知识点不同,大家都知道,安卓开发有应用开发、音视频开发、底层开发、SDK 开发等等,如果去应聘音视频开发,那就要掌握 NDK 编解码之类的。由于我从事的是应用开发,所以这里的知识点主要针对应用开发的同学。

除了岗位方向,不同规模的公司、不同阶段的项目关注的知识点也不同,对安卓开发,我总结了这么 2 种分类:

因此我们在面试不同公司时,先根据 JD 了解重点招聘要求,然而最好再了解到招聘岗位对应的项目情况,针对性地多多复习。

面试知识

简历如何写

俗话说,酒香也怕巷子深。饶你十八般武艺,基础进阶全都掌握,过不了简历筛选这关,也是枉然。

这节我们来了解如何写简历,让它可以顺利通过 HR 筛选、让用人部门看着喜欢。

(本文未完……)

上一篇下一篇

猜你喜欢

热点阅读