本文共 2000 字,大约阅读时间需要 6 分钟。
先说一下个人基本情况,计算机科学与技术专业。主要学的Android开发,所以投的岗位都是Android开发工程师。投了知乎,内推了阿里蘑菇街腾讯百度网易。腾讯百度都没有收到面试,知乎Skype面试,蘑菇街阿里电话面试,网易现场面。知乎二面被拒,蘑菇街阿里一面被拒,网易三面,然后备胎了,前几天被通知过了,收到了offer。自己整理了一下被问到的问题,现在分享给大家,另外自己整理的一下资料也会发给大家,希望能帮助到各位求职的小伙伴。
与其它行业一样,凡是有高级和普通,虽然都是敲代码但也有大牛和普通之分,大牛程序员,一个人比一个团队做项目都做得快,**最为出名的当属十几年前求伯君在做wps时,一个人完成了微软二十人团队没有完成的项目需求,也让wps在与微软的竞争中站稳了脚跟。程序员的能力差距真的比贫富的差距还要大。**除了能力主要还是和智商有关系。
从工作的方面来说,普通程序员和高级程序员一般有下面几个区别
**普通程序员:**一、知识体系零散、没有系统性的思维,在写代码、改bug的时候没有工程素养,往往是拆了东墙补西墙。
二、对某种语言的依赖性太强,知识无法很好的迁移,一旦换了语言、或者领域不同就会不知所措
三、经验不足却自认为自己经验丰富,只对自己做过的比较顺手,但是碰到未知的问题,就束手无策
高级程序员一、知识体系完整,有系统性的思维,及时没有到架构师的级别,在写代码和改bug的时候也能从整体上去思考和把握。
二、学习能力强有了自己的心智模型,知识可以自由迁移,并可以高效地切入不同的领域和语言
三、拥有真正的经验,不只是做够那些项目,而是面向未知的解决问题的能力。
能力不缺的前提下,主要的区别就是抓不到问题的本质,普通程序员多半是直线型思维,见招拆招,干的多,想得少,接到一个项目就开始噼里啪啦敲代码,**不想就在电脑上敲上include **,一天敲个几千行。而高级程序员更擅长抓住问题的本质,将看似复杂的需求化繁为简为一系列简单逻辑的堆叠,写代码步步为营,逻辑简单清晰,所有条件分支都被仔细覆盖,磨刀不误砍柴工。
简单的来说,同样是一个项目需求,普通程序员可能要天天加班忙上一个月,而高级程序员可以每天按时下班,几天就搞定。这也是为什么会出现“月薪五千的程序员天天加班到夜里,月薪五万的程序员5点下班”的尴尬情况。公司追求的是利润而不是努力,谁创造的多当然拿到的就多。
那么如何才能从普通程序员进阶到高级程序员呢?
**一、提高代码优化的能力:“**代码可运行”对一个优秀的程序员来说绝不是结束,而是开始。优秀的程序员一定熟知各种算法和数据结构,会灵活运用,致力于写出更简单、效率更高的程序。
二、先考虑、多思考:编程思路,是系统的计划和设想,是程序员写程序时的条理和线索。编程思路,是系统的计划和设想,是程序员写程序时的条理和线索。
初级工程师拿到需求会直接开始做,然后做着做着发现有问题了,要么技术实现不了,要么逻辑有问题。
而高级工程师拿到需求会考虑很多,技术的可行性?对现有业务有没有帮助?对现有技术架构的影响?扩展性如何?等等…之后才会再进行设计编码阶段。
而现在随着跨平台开发,混合式开发,前端开发之类的热门,Android开发者需要学习和掌握的技术也在不断的增加。
通过和一些行业里的朋友交流讨论,以及参考现在大厂面试的要求。我们花了差不多一个月时间整理出了这份Android高级工程师需要掌握的所有知识体系。你可以看下掌握了多少。
混合式开发,微信小程序。都是得学会并且熟练的
这些是Android相关技术的内核,还有Java进阶
高级进阶必备的一些技术。像移动开发架构项目实战等
Android前沿技术;包括了组件化,热升级和热修复,以及各种架构跟框架的详细技术体系
以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了,只是一些新的技术不清楚而已。应该没什么太大的问题。
而这恰恰是问题所在!为什么别人高级工程师能年限突破30万,而你只有十几万呢?
就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?
我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。
以上系统大纲里包含的所有技术资料,我这里都有的。可以免费分享给有需要的朋友!
忙转发点赞一下能让更多有需要的人看到吧。谢谢!
以上系统大纲里包含的所有技术资料,我这里都有的。可以免费分享给有需要的朋友!
转载地址:http://ulrlf.baihongyu.com/