悲哀!新“三无”Android开发进大厂成了无法企及的追求?这个机会到底怎么获得!

2021-07-28 18:07:15 浏览数 (2)

大厂offer是每个技术人的追求

我觉得每一个程序员的梦想大概就是能够找一份大厂的 Offer,我觉得这很正常,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。但不是每个人都能够进入大厂的,这往往取决于我们的能力、学历、面试表现等因素。

现在面试大公司你说你没有大型项目开发经验估计都拿不出手,jetpack、NDK、插件化、热修复理论等等已然大厂面试所必须的知识。但是,你真进入大厂了,可能几年都用不上这些知识,还是老老实实去写CRUD。

与其抱怨,不如提高自己

相比于前几年来说,现在的面试难度提升了不少。你说说现在程序员这么多,你投递的公司可能与你一起投递的就有300人,可人家只招5人,那怎么办?简历PASS掉一大批,然后面试再PASS掉一大批。从这样来看,现在流行说的:“面试造火箭,工作拧螺丝”还是很有道理的,提高面试难度只是为了从很多人中招到自己需要的那些人。

很多人都抱怨现在工作越来越难找了,的确,互联网行业现在确实没有之前好找工作了。我觉得有很大一部分原因是现在的培训班培训出来了太多半路出家的程序员,培训班打着保障你高薪就职的称号引诱了很多人进入这个圈子。我并不是对半路出家的人有偏见,只是一个事实就是培训班出来的一些人是真的无法胜任很多工作。

一是大部分培训班的培训水分特别大,说白点,很多培训班就是为了圈钱;二是半路出家的人的基础肯定是没有大学习踏实学习计算机知识的人好的,这就造成很多培训班出生的人很难往前走;三是互联网行业确实对年轻的人有一部分偏爱,毕竟刚毕业的大学生还是比较廉价的,但是互联网行业并不是吃青春饭。

所以,不管是培训班出生、应届生还是工作几年的小伙伴都要对自己有一个清晰的认识,搞清楚你自己所欠缺的能力,搞清楚你自己的优势(企业为什么要招你)。知道自己不足的地方之后,就要去努力!

互联网行业其实还是挺公平的,虽然面试的时候会将你的学历作为参考,但是如果你的能力真的厉害,你的简历真的丰富的话,面试官还是会很欣赏这样的应聘者的。

互联网竞争激烈,但是我们这些移动开发者来说可能竞争会相对于更加强烈一点,毕竟现在大环境形势也没有之前好了,下面来讲讲身为Android开发的那些“悲哀”。

移动开发程序员的那些“悲哀”

移动开发程序员完全是一个刀口舔血的职业!

我今年33岁,身边熟悉的不少朋友,从事互联网行业,年龄在 40 岁附近。常常,我通过观察他们,想象自己的未来的样子。

这些朋友,更准确的说,是我的老师,师兄,前辈,在40岁的年纪,人生境况各不相同。

有位师兄,打拼多年,现在的职级是阿里 P9。这一两年和他联系较多,主要是作为晚辈后生请教问题。阿里集团有十万员工,在 P9 职级的员工只有寥寥千人,所能够获得的工资和股票,远远超过了普通人的期望。我问过他,怎么看待这几年愈演愈烈的中年危机话题。他没有多说,只淡淡的提了一句,「其实不是像大家讲的那样紧张,如果三四十岁,职级还是 P6,能不中年危机吗」,这里需要说明一下,阿里的硕士入职定级一般是 P5。

我们来品品这句话,是有一定信息量的。诚然,以这位师兄取得的成绩和社会地位,中年危机对他来说,可能是没有亲密接触过的。但从以往的交流中,我知道师兄热爱思考,也热爱与人打交道,甚至对我这样一位寂寂无名的晚辈后生都经常保持联系。所以他对社会百相是有着高于一般人的认知的。他之所以这样说,其实是想告诉我,在他的观念里,与其说职场中年危机是一种现象,倒不如说是一种结果。

何出此言,从毕业后的二十多岁,到可能出现中年危机的三四十岁,这十几年里,有些东西的改变是我们无法阻止的,例如身体机能的下降,精力明显没有青年时旺盛了。但有些东西,是我们可以争取的。

像师兄说的,如果一个程序员,人近中年,还在相对而言较低的职级位置上,这十几年的时间,基本是处于一种原地踏步的状态,过着温水煮青蛙的日子,技术深度和广度都停滞不前,当公司的效益下滑时,很容易成为优化的目标。

特别是我们移动开发人员,以前小厂需要分别招一个IOS和Android开发人员,Flutter技术的升级使用,实现了跨平台开发,公司岗位需求变成了只招一个Flutter技术开发人员就可以满足部分需求了。裁员缩减成本就成了悬在移动开发人员头上的一把利剑,随时会降临到自己身上!

关于移动开发程序员的通病

1、一些马上毕业的同学和已经毕业一年从事Android开发相关的工作的初级开发者,往往会有这样的疑惑,不知道要学习什么东西。自己摸索着学习呢,又不知道学习的路线对不对,发愁啊。

实话说这个蛮正常的,咱们Android开发要学的东西也不少,大多数开发者都会有这种时期,当自己项目完成、处于维护阶段的时候,工作不忙,想自己学习,但是又不知道(我也想学习,可现实她不允许啊)

从何学起?怎么学?东一榔头西一棒子,最终收获甚少。然后开始自我怀疑,厌倦学习,从此堕落。

2、还有一些高级工程师除了代码,完全不知道这个世界是怎么运转的。

  • 你知道怎么与陌生人打交道吗?
  • 你知道怎么推销产品吗?
  • 你知道你一个东西做出来,怎么把它推广出去吗?
  • 你知道除了技术以外,互联网的众多行业是怎么挣钱的吗?

如果这些都不懂,恭喜你,你是纯纯的程序员,将来被优化以后,你将完全不懂如何生存。

那我们应该怎么办呢?

只说问题,不讲方案,不是我的风格,透过问题看到本质,进而给出解决方案才是。

既然知道了问题的本质,那答案就很简单了,程序员的小伙伴们,不要两耳不闻窗外事,一心只读圣闲书了。

具体怎么做呢?

1、尽量让自己拥有较长时间竞争力的技能和思想。

比如说,很多年轻人热衷于学习新的工具,新的编程语言,学习在新的平台做系统,当然,这是有一定红利期的,但作为个人的竞争力,稍过几年,很可能就一文不值。

我应该是中国最早写cold fusion代码的人,谁还知道这是啥玩意,是中国最早翻译asp教程的人,也是中国最早一波写php代码的人,从当时看,很牛逼对不对,过不了几年,这玩意也算竞争力?

什么是竞争力,多理解系统底层的逻辑和思想,诸如内存分配的机制,多理解数据结构的原理和设计理念,这些也不能说永远都有竞争力,但如果理解到位,并且应用得当,至少可以保证二三十年自己的思想不会在业内落伍。

具有发现问题的敏锐度,掌握分析问题的方法和思路,也能让自己职场竞争力相对牢固一些。

那些中年技术大咖,你让他们继续跟年轻人一起比敲代码,真敲不过,当然个别有还能敲得很利索的,大部分可能已经无法熟练的使用具体的编程工具和具体的特定算法,跟优秀的年轻人比拼了,但他们知道如何有效的在复杂的系统中发现问题,定位问题,并针对性的给出解决问题的方向,这就是竞争力,这个竞争力,依然可以持续很多年。

2、站的越高,位置越稳。

如果你曾经站在Top 1/1000的优势位置,虽然来了很多优秀的年轻人,你可能力不从心,掉到了Top 1/100。虽然没有曾经的光辉,但仍然具有足够的竞争力。仍然配得上非常优秀的标签。

如果你沾沾自喜自己现在属于Top 20%的优秀人群,但年轻人一波波冲进来,你眼看着自己掉到了 Top30%, Top40%, Top50%,对不起,优秀俩字从此与你无缘。

3、即便力不从心,也要奋力向前。

你说一代更比一代强,有的时候真的力不从心,但看你目标是什么,想独孤求败,一览众山小,可能越来越难。但毕竟!毕竟大部分人是懒惰,缺乏耐心的。想让自己超过大多数人,毕竟没那么难。

TK教主有句话很经典,具体原文找不到了,大概意思我整理一下,如果你否定天分的存在,只强调勤奋努力,那就是蠢。但如果你因此认为勤奋努力没有用,那就是又懒又蠢。

比如我这些年一直下围棋,学习新的定势,不断提升棋力,实话说,以我的水平,你说打职业比赛,开玩笑,差距太大了。每年会有大量学棋青少年超过我的水平,这是挡不住的,认了,但只要我坚持进步,就会超过很多停步不前的围棋爱好者,我四十多岁,还在涨棋,没有年轻人学的快是真的,但总有大量停步不前的围棋爱好者会被我超越对不对。

只要你肯进步,总会超越大量不进步的人。对于普通人来说,这就足够了。

4、广结善缘,稳固地位。

趁着自己优秀的时候,多帮助和扶植优秀的年轻人,我一直是这么强调的,等他们足够优秀了,你的地位和影响力会越加稳固。

有些人觉得,教会徒弟,饿死师傅。干嘛不给自己留点竞争力。

现在这个社会,优秀的人才太多,优秀的年轻人太多,你不教,别人也会教,你的徒弟不抢你的饭碗,别人的徒弟也会抢你的饭碗。你结善缘,还能等他们成长起来感恩回馈,你藏着掖着,最后你真的以为能守住什么竞争力?抢你饭碗的年轻人会在任何角落里冒出来。

5、提升视野,向上发展。

一个人在职场如果经历了很多事情,经历了很多岁月,多半总会有点优势,这个优势叫做见识,你知道一个企业是怎么成,怎么败的,你知道一个产品是怎么做起来,怎么壮大的。这就是你的竞争优势,年轻人学的算法再好,很多想法再优秀,没有见识过大场面,总会缺那么一点格局和视野。

但可怕的是,很多人虽然经历了很多事,却没有见识,匮乏视野。

比如简单化,标签化的看待问题,老板当时成功是因为运气比较好。

比如从不关心产业和市场变化的情况,一直随波逐流。

比如在自己的工作职能之外,毫不关心合作伙伴,上下游,同行的生存和发展话题。

当然也比如更常见的,只关心行业八卦话题,对各种巨头老板的绯闻八卦如数家珍,对各种真真假假的小道消息乐此不彼。并以为这是见识,视野。

所以,当更有活力,更便宜的年轻人冲上来,他们的教育背景比你更好,他们的算法逻辑比你更清晰,你还剩下什么,信谣传谣的能力和素质?

还想安安静静当个螺丝钉?对不起,你生锈了。

总结一下,优秀的门槛越来越高,这是历史趋势,谁也挡不住。

但任何时代,大部分人总是会固步自封,随波逐流,随着岁数增长,你可能真的无法挡住优秀的年轻人超越你,但你只要肯进步,总会不断超越那些停步不前的大多数。

另外就是广结善缘,提升格局,不要让自己停留在跟年轻人竞争基本战斗能力的场景里,那样你就很难维持竞争力了。

那些双非/三本/专科学校的Android开发,有机会进入大厂吗?

我自己也是非985非211学校的,结合自己的经历以及一些朋友的经历,我觉得让我回答这个问题再好不过。

首先,我觉得学校歧视很正常,真的太正常了,如果要抱怨的话,你只能抱怨自己没有进入名校。但是,千万不要动不动说自己学校差,动不动拿自己学校当做自己进不了大厂的借口,学历只是筛选简历的很多标准中的一个而已,如果你够优秀,简历够丰富,你也一样可以和名校同学一起同台竞争。

企业HR肯定是更喜欢高学历的人,毕竟985,211优秀人才比例肯定比普通学校高很多,HR团队肯定会优先在这些学校里选。这就好比相亲,你是愿意在很多优秀的人中选一个优秀的,还是愿意在很多普通的人中选一个优秀的呢?

双非本科甚至是二本、三本甚至是专科的同学也有很多进入大厂的,不过比率相比于名校的低很多而已。从大厂招聘的结果上看,高学历人才的数量占据大头,那些成功进入BAT、美团,京东,网易等大厂的双非本科甚至是二本、三本甚至是专科的同学往往是因为具备丰富的项目经历或者在某个含金量比较高的竞赛比如ACM中取得了不错的成绩。一部分学历不突出但能力出众的面试者能够进入大厂并不是说明学历不重要,而是学历的软肋能够通过其他的优势来弥补。

所以,如果你的学校不够好而你自己又想去大厂的话,建议你可以从这几点来做:

①尽量在面试前最好有一个可以拿的出手的项目; ②有实习条件的话,尽早出去实习,实习经历也会是你的简历的一个亮点(有能力在大厂实习最佳!); ③参加一些含金量比较高的比赛,拿不拿得到名次没关系,重在锻炼。

非计算机专业的学生能学好Android吗?我能进大厂吗?

当然可以!现在非科班的程序员很多,很大一部分原因是互联网行业的工资比较高。我们学校外面的培训班里面90%都是非科班,我觉得他们很多人学的都还不错。另外,我的一个朋友本科是机械专业,大一开始自学安卓,技术贼溜,在我看来他比大部分本科是计算机的同学学的还要好。参考Question1的回答,即使你是非科班程序员,如果你想进入大厂的话,你也可以通过自己的其他优势来弥补。

我觉得我们不应该因为自己的专业给自己划界限或者贴标签,说实话,很多科班的同学可能并不如你,你以为科班的同学就会认真听讲吗?还不是几乎全靠自己课下自学!不过如果你是非科班的话,你想要学好,那么注定就要舍弃自己本专业的一些学习时间,这是无可厚非的。

建议非科班的同学,首先要打好计算机基础知识基础:

①计算机网络 ②操作系统 ③数据机构与算法

我个人觉得这3个对你最重要。这些东西就像是内功,对你以后的长远发展非常有用。当然,如果你想要进大厂的话,这些知识也是一定会被问到的。另外,“一定学好数据机构与算法!一定学好数据机构与算法!一定学好数据机构与算法!”,重要的东西说3遍。

移动端开发需要怎么增强自己的式?

首先明确一个观点,那就是移动开发是必须有的,只要平台在原生开发就必须有。但是浑水摸鱼的日子没有以前那么好过了,因为小程序和各种跨平台开发让企业有了更多的选择。

如果你还想做界面开发,那么增强你的能力广度是必须的,比如:

  • 小程序的上手并不难,同时还有诸如 uni-app 、taro、chameleon 可以帮助上手。
  • 通过学习 React-Native 来认识前端开发,学习 React、CSS、JavaScript 等相关能力,只要你会 RN 其实等同于你已经学会了小程序。
  • 了解学习诸如 Flutter 、 PWA 、WebAssembly 等新的技术迭代。

当然,最后不要落下数据结构与算法、计算机原理等基础知识,这些才是程序员后期的竞争力,如果想要把握更多的当然你也可以学习后端开发相关的知识。

如何学习提高个人硬实力?

我在这里所说的个人硬实力更多的指的是个人的专业能力,比如构建高质量网站的能力或者是对专业知识的掌握程度。

多去实践,将学到的东西运用到实际项目中去。很多人都找我抱怨过没有实际项目让自己去做。下面我会介绍到几种让你可以有项目经验的方式,项目经验对于技术能力的提升和面试都是很重要的。

想要提高个人硬实力,那么学习一门新技术的方法一定是至关重要了。

Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

如果你觉得自己学习效率低,缺乏正确的指导,可以参考下我下面分享的学习路线:

  • 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
  • Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
  • 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
  • 微信小程序:小程序介绍 UI开发 API操作 微信对接
  • Hybrid 开发与Flutter:Html5项目实战 Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

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

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

1.2020大厂面试高频知识点

  • 图片
  • 网络和安全机制
  • 数据库
  • 插件化、模块化、组件化、热修复、增量更新、Gradle
  • 架构设计和设计模式
  • 性能优化
  • Android Framework
  • Android优秀三方库源码

2.Jetpack架构组件从入门到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3.Framework精编内核解析

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin强化实战(附Demo)

  • 第一章 Kotlin入门教程
  • 第二章 Kotlin 实战避坑指南
  • 第三章 项目实战《Kotlin Jetpack 实战》
    • 从一个膜拜大神的 Demo 开始
    • Kotlin 写 Gradle 脚本是一种什么体验?
    • Kotlin 编程的三重境界
    • Kotlin 高阶函数
    • Kotlin 泛型
    • Kotlin 扩展
    • Kotlin 委托
    • 协程“不为人知”的调试技巧
    • 图解协程:suspend

5.Android设计思想解读开源框架

  • 热修复
  • 插件化
  • 组件化框架设计
  • 图片加载框架
  • 网络请求框架
  • RXJava 响应式编程框架设计
  • IOC 架构设计
  • Android架构组件Jetpack

6.NDK模块开发

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

7.Android源码解析

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

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

0 人点赞