2021移动开发者真的太难了!人生转折!
#### 一丶大厂offer?
我相信每个程序员的梦想都是得到大厂的offer,我觉得这很正常,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。但不是每个人都能够进入大厂的,这往往取决于我们的能力、学历、面试表现等因素。
现在面试大公司你说你没有架构开发经验估计都拿不出手,热修复,框架,glide,OKHTTP,flutter,NDK,音视频~源码原理等等已然大厂面试所必须的知识。但是,你真进入大厂了,可能几年都用不上这些知识,还是老老实实去写代码。
#### 二丶抱怨不如努力提升自我
相比于前几年来说,现在的面试难度提升了不少。你说说现在程序员这么多,你投递的公司可能与你一起投递的就有300人,可人家只招5人,那怎么办?简历PASS掉一大批,然后面试再PASS掉一大批。从这样来看,现在流行说的:**“面试造火箭,工作拧螺丝”**还是很有道理的,提高面试难度只是为了从很多人中招到自己需要的那些人。
很多人都抱怨现在工作越来越难找了,的确,互联网行业现在确实没有之前好找工作了。我觉得有
> 1丶很大一部分对自己的技术的认识还停留在过去的那一两年,
> 2丶是半路出家的人的基础肯定是没有大学习踏实学习计算机知识的人好的,这就造成很多培训班出生的人很难往前走;
> 3丶是互联网行业确实对年轻的人有一部分偏爱,毕竟刚毕业的大学生还是比较廉价的,但是互联网行业并不是吃青春饭。
> 4.市场逐渐趋于完善,每个岗位对技术的要求越来越严谨,造成一种饱和不缺人的现象。
> 5.高级开发越来却越缺人,中低级市场饱和
所以,不管是应届生还是工作几年的小伙伴都要对自己有一个清晰的认识,搞清楚你自己所欠缺的能力,搞清楚你自己的优势(企业为什么要招你)。知道自己不足的地方之后,就要去努力!
互联网行业其实还是挺公平的,虽然面试的时候会将你的学历作为参考,但是如果你的能力真的厉害,你的简历真的丰富的话,面试官还是会很欣赏这样的应聘者的。
#### 三丶如何清晰的认知自己的不足,提升个人实力
我在这里所说的个人硬实力更多的指的是个人的专业能力,比如构建高质量网站的能力或者是对专业知识的掌握程度。
我觉得不论是对于新手还是老手,想要提高个人硬实力最重要的就是不断深入学习并且将理论实践,最好可以将理论在具体项目中实践一下。
给还在学校的同学们一个建议:如果条件允许的话尽量去参加一些比赛,可能你的技术并不太好,你的内心还很犹豫自己是不是具备参加比赛的能力,但是我还是推荐你去尝试一下。
为什么呢?一个比赛的准备时间,说长点就是 5 ~ 6 个月,说短点也就是 2 ~ 3 个月。在参加这个比赛之前,比赛用到的很多技术你可能没有实际应用过,甚至连听都没有听过。但是这几个月的时间应该足够让你去学习了,如果你的态度好并且自学能力不差的话一般是没有问题的。
到了最后,你可能并没有收获到一个优秀的名次,但是我觉得参加比赛的经历对你的帮助才是最大的。如果后面你还会参加其他比赛的话,我觉得你一定会做的越来越好。
除了比赛,实际项目对自己的个人能力提升与锻炼也是非常大的。
多去实践,将学到的东西运用到实际项目中去。很多人都找我抱怨过没有实际项目让自己去做。下面我会介绍到几种让你可以有项目经验的方式,项目经验对于技术能力的提升和面试都是很重要的。
想要提高个人硬实力,那么学习一门新技术的方法一定是至关重要了。
![](http://www.icode9.com/i/li/?n=2&i=images/20210707/1625671415722294.jpg)
![](http://www.icode9.com/i/li/?n=2&i=images/20210707/1625671415967564.jpg)
**一定要有自己的技术优势,可能你懂得不是最多的,但是别人不会的你却会,那么你就是厉害的!**
#### 四丶写简历的时候项目经验这栏,怎么才有项目经验
如果实在没有实际项目让你去做,我觉得你可以通过下面几种方式:
>1.在网上找一个符合自己能力与找工作需求的实战项目视频或者博客跟着老师一起做。做的过程中,你要有自己的思考,不要浅尝辄止,对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去往深出学。
>2.Github或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。
>3.自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。
### 尾声
评论里面有些同学有疑问关于如何学习material design控件,我的建议是**去GitHub搜**,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,**无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。**
**至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。**
**一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。**
**初学者,一句话,多练。**
> **由于文章篇幅问题复制链接查看详细文章以及获取学习笔记链接:[前往我的GitHub](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**