之前有一位从事一年php后真个读者问我:觉得自己到了一个瓶颈期了!
不知道该如何进行下一步了!
求指示一下方向!
这个问题具有普遍性,相信很多程序员都有你这样的疑问!
1.首先要确立你的技能方向和目标,然后朝着这个方向和目标走下去,最主要的是做好职业方案
比如,你是做Android的,你可能想往后我的技能方向是Android,那就努力专研Android的技能,确定好自己的职业方案,确定自己往后是走技能路线还是往后管理
总之,首先要把自己的方向确定好,现在想清楚自己要干嘛,不要浑浑噩噩过了几年什么发展都没有,人生最宝贵的韶光。
2.确定技能方向后努力专研技能
技能贵在精专而不在杂,不要想着成为全栈,这学点那学点,比如有点同学前几年android火就去学android,现在python火起来了就去学python,末了创造哪都学的不好学的不精!
永久只是一个低级程序员
首先,在某一个技能方面深入进去,学懂学透学精,深入理解其事理,当你把某个技能方面学精学透之后,你会创造让你再去学其他的技能栈,你会创造轻而易举,你看遍该技能的官方文档就会了,写出来的代码会比我上面说的学杂而不精的程序员好的多,由于万变不离其宗!
事理都一样
而实在当你真的把某个技能学精后,你会创造那时候你可能已经成了架构师团队卖力人,可能早就不用写详细的代码了,也可能不用学其他技能了!
这样的例子不胜列举,笔者事情中也见过很多以是说,不要一开始就追求全栈,真正的全栈是这样练成的~
3、根本很主要,打好根本,学习好数据构造和算法,以及设计模式
详细如何成为技能高手,打破技能瓶颈呢?首先根本要打踏实,要学好数据构造和算法以及设计模式!
由于这可以说是全体打算机技能大厦的基石,没有了这就谈不上打算机技能了,任何其他技能方向都会用到!
你也会创造像google、facebook等这样的科技巨子口试特殊重视这些的稽核,如果你口试他们的android工程师可能都不会问你android详细的技能点和实现细节~
实在,笔者对应聘者的稽核,更侧重更看中的是对这方面的查看,由于这样才会对应聘者稽核更全面!
看你的描述,可能你技能现在碰着瓶颈的症结就在这,可能由于你是培训出生,技能只只知道了怎么用,而不知道为啥是这样,只其然,而不知其以是然!
导致你这样的缘故原由便是你这些根本不踏实,你现在急迫的是须要夯实这些根本。
要记住,技能可能会过期,但这些不会过期。
4.提高技能最高效有效的办法是看视频~
比起看书,看视频是学习技能最高效的学习办法,看书可能你会以为呆板无味,看不进去,看不懂!
但视频会通过别人的讲解印象更深更有立体感,某个知识点可能比起看书来说有人讲解溘然让你豁然开朗,效率更高,学习本钱更低!
当然,也不是说完备不读书,当你学习技能有一定深度后,再专研透该技能方向的一本经典书,牢记,一本经典就行,不要多!
书多了没用,比如我知道的很多同学学android买了很多讲解android的技能书,结果每本都是翻翻,没有一本深入进去看完!
读技能书,选定一本经典,先读薄再读厚再读薄~这才是精确额读书办法
5、事情中多和别人互换沟通!
事情中多沟通多互换,特殊是同组中技能牛的,不管是技能的还是生活的!
多和别人互换后你会创造你会收成不少,别人的履历可能对你很有帮助,让你少走弯路!
顿时让你节制诀窍~
6、事情中多积极主动,不要抱怨
在承担自己实质事情外,主动承担其他的事情,由于装进自己脑筋的思想和学到自己身上的技能是别人夺不走的
不要抱怨,抱怨无济于事,只能带来负能量,最主要的是改变
7、坚持写博客和技能文章,多总结,多参与开源项目
8、选择一家好的有发展出息的公司陪其发展
当创造现在公司不能知足自己的发展和发展时,果断跳槽,由于人生毕竟最宝贵的是韶光,特殊是程序员界~
当公司发展不错,自己能学到东西得到磨炼时,就沉下心来一贯陪着公司发展
牢记,不要轻易跳槽,不要由于人为和在公司干的不爽而跳槽!
毕竟人生最宝贵的还是韶光!
永久都是为了自己的发展和提高自己的能力而跳槽
9、末了,贵在坚持
上面说再多都没用,最主要的坚持,贵在行动
制订好学习操持,始终如一的坚持!
接下来一份Android全面的学习路线图,非常赞,推举给大家。
1、Java 根本Java Object类方法HashMap事理,Hash冲突,并发凑集,线程安全凑集及实现事理HashMap 和 HashTable 差异HashCode 浸染,如何重载hashCode方法ArrayList与LinkList差异与联系GC机制Java反射机制,Java代理模式Java泛型Synchronized事理Volatile实现事理方法锁、工具锁、类锁的意义和差异线程同步的方法:Synchronized、lock、reentrantLock剖析Java锁的种类: 公正锁、乐不雅观锁、互斥锁、分段锁、倾向锁、自旋锁等ThreadLocal的事理和用法ThreadPool的用法和示例wait()和sleep()的差异2、Java 高阶Java虚拟机,Java运行,Java GC机制(可达性剖析法,引用计数法)Java工具的完全生命周期JVM内存模型进程间通信,线程间通信JVM类加载机制Java引用类型设计模式:除常用设计模式之外,特殊的,反射机制,代理模式HTTP协议和HTTPS协议Socket协议,Socket实现长连接TCP和UDP协议HTTP协议中GET和POST的详细实现序列化和反序列化线程池的实现事理数据库根本知识:多表查询、索引、数据库事务3、数据构造、算法
数据构造
栈和行列步队数组和链表,自定义一个动态数组Hash表,及Hash冲突的办理二叉树B+ B-树根本排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)快排的优化二分查找与变种二分查找哈夫曼树、红黑树字符串操作,字符串查找,KMP算法图的BFS、DFS、prim、Dijkstra算法(高阶技能)经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)算法
分治算法动态方案贪心算法分支限界法4、Android 根本Application生命周期Android Activity生命周期Android Service、IntentService,Service和组件间通信Activity的onNewIntentFragment的Android技能难点
AIDL、Binder、多进程、View的绘制流程、事宜分发、行列步队等。
这类知识对付定位自己为高等Android工程师的人来说是必须节制的,同时他也是能鉴别高等和初中级工程师的一块试金石,个中binder是Android系统进程间通信最主要的手段之一,现阶段app的发展离不开多进程的利用,常常会启动例如定位、推送等须要在后台开启动的进程来来担保主进程的内存运行;以是合理的利用多进程也是十分必要的;
view的绘制是我们自定义控件的理论根本,只有节制了view是如何绘制的才能个性化的自定义控件;
事宜分发一贯是Android开拓的难点之一,也是必须节制的;
关于handler机制也是android的一块难点,由于包括Asynctask、系统启动、Intentservice等底层都是通过handler来实现的,以是节制后handler机制不仅能提高你的实战开拓能力,更能让你系统的理解全体android系统运作的情形。
Android框架层源码节制
Android框架层有很多东西,以下几个是高等程序员必须要节制的:
1、Android包管理机制,核心PackageManagerService2、Window管理,核心WindowManagerService3、Android Activity启动和管理,核心ActivityManagerService4、根Activity事情流程5、Context关联类
各种事理,经典第三方库源码系列
自定义LayoutManager,RecyclerView中如何自定义LayoutManagerVLayout实现事理,即如何自定义LayoutManagerGlide加载事理,缓存方案,LRU算法Retrofit的实现与事理OKHttp3的利用,网络要求中的InterceptEventBus实现事理ButterKnife实现事理RxJava实现事理Dagger依赖注入热修复实现事理,办理方案组件化事理和解决方案Android进程通信以及多进程开拓
Android 多进程和Application关系
经典办理方案:
多进程通信办理方案:Andromedahttps://mp.weixin.qq.com/s/PZs1wss3PizqSE8U2RGXYwAndroid动画机制 & Android绘图事理
经典学习资料:
HenCoder: 给高等Android工程师的进阶手册https://hencoder.com/Android页面规复
Android的页面规复采取以下两个方法:
onSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle savedInstanceState)onSaveInstanceState: 当Activity随意马虎被系统销毁时,会触发该方法。
详细的说
1、用户点击Home键2、用户点击Home键,切换到其他运用程序3、有电话来了等附加操作
稠浊开拓及Android WebView运用
稠浊开拓涉及到的知识点紧张包括:
1、APP调用WebView加载url2、节制WebView的封装,理解所有的WebSettings配置,节制WebViewClient、WebChromeClient3、节制WebView和Native双向通信机制,会自己封装双向通信中间件
对WebView的封装可参考:
https://github.com/Justson/AgentWeb
对通信中间件事理理解:
https://github.com/xudjx/webprogress
Gradle,自动化构建,持续集成干系
6、Android 系统Android Studio编译过程
个中利用到的编译工具:
aapt、aidl、Java Compiler、dex、 zipalign
紧张步骤描述:
1、通过aapt打包res资源文件,天生R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样)
2、处理.aidl文件,天生对应的Java接口文件
3、通过Java Compiler编译R.java、Java接口文件、Java源文件,天生.class文件
4、通过dex命令,将.class文件和第三方库中的.class文件处理天生classes.dex
5、通过apkbuilder工具,将aapt天生的resources.arsc和res文件、assets文件和classes.dex一起打包天生apk
6、通过Jarsigner工具,对上面的apk进行debug或release署名
7、通过zipalign工具,将署名后的apk进行对齐处理。
App启动加载过程Android虚拟机 Android App运行的沙箱原则
7、Android 架构在Android源码中最主要的三个类:ActivityManagerService/PackageManagerService/View,推举大家周末的时候可以去阅读下这部分的源码,阅读源码能提高我们今后设计架构自己代码的能力,同时也能从底层理解全体android系统的运行事理,其他一些比如主线程的循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的事情办法、AsyncTask的事情事理等。这些知识也是作为一个Android高等开拓工程师必须节制的,不能整天沉溺于ui和四大组件的交互,要站在更高的角度去考虑Android的有些问题。
参考资料:
我对移动端架构的思考https://mp.weixin.qq.com/s/OEzcsPZHCVkjeUCh6hMuWgMVC模式MVP模式MVVM模式CLEAN模式组件化开拓跨平台开拓:Flutter、ReactNative(RN未来要黄,理解一下就好)8、Android 优化9、移动开拓外围做事器开拓干系
SpringBoot技能Restful API开拓网络协议理解:TCP/IP、HTTP/HTTPS、OSI七层协议授权认证协议:OAuth2.0 等基本的数据库技能数据缓存技能:Memcached、Redis,Web缓存事理行列步队技能监控、日志剖析技能前端开拓干系
前端开拓知识很多,框架层出不穷,实质的东西却只有以下这些。
核心必备:HTML、CSS、JavaScript入门提高:浏览器兼容性、自定义UI和动效中级技能:框架层出不穷,当前以vue.js、react.js 为核心协作开拓技能:包管理、模块化,工具采取 npm、webpack等高等技能:框架事理源码研究开拓调试各种工具
性能剖析工具:Memory Monitor性能追踪及方法实行剖析:TraceView视图剖析:Hierarchy ViewerApkTool- 用于反向工程Android Apk文件的工具Lint- Android lint工具是一个静态代码剖析工具Dex2Jar- 利用android .dex和java .class文件的工具末了不知不觉自己已经做了几年开拓了,由记得刚出来事情的时候觉得自己能牛逼,现在回忆起来觉得好无知。懂的越多的时候你才会创造懂的越少。
如果你的知识是一个圆,当你的圆越大时,圆表面的天下也就越大。
在我学习的过程中,最开始是在网上找了很多资料,毕竟这些资料是我们开始最快速的学习方法,这里我放上我这些年在网上网络到的资料,然后再以我的事情履历给大家总结一下,让你们少走些弯路,提取一些目前互联网公司最主流的Android开拓架构技能,希望能帮助到大家!
1、确定好方向,梳理发展路线图
不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔真个人。以是,想做一个牛逼的程序员,那么就要让自己站的更高,成为技能大牛并不是一朝一夕的事情,须要韶光的沉淀和技能的积累。
关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的发展路线了,包括技能要怎么系统地去学习,都列得非常详细。
知识梳理完之后,就须要进行查漏补缺,以是针对这些知识点,我手头上也准备了不少的电子书和条记,这些条记将各个知识点进行了完美的总结。
2、通过源码来系统性地学习
只假如程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是勾留于皮毛,这对我们知识体系的建立和完备以及实战技能的提升都是不利的。
真正最能磨炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种精良的开源库。
《486页超全面Android开拓干系源码精编解析》
3、阅读前辈的一些技能条记
《960全网最全Android开拓条记》
4、刷题备战,直通大厂
历时半年,我们整理了这份市情上最全面的安卓口试题解析大全包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司口试被问到的题目。熟习本文中列出的知识点会大大增加通过前两轮技能口试的几率。
如何利用它?
1.可以通过目录索引直接翻看须要的知识点,查漏补缺。2.五角星数表示口试问到的频率,代表主要推举指数
《379页Android开拓口试宝典》
以上文章中的资料,均可以免费分享给大家来学习,
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图;
须要的朋友,直接转发+点赞+私信回答【资料】一键领取!
!
!
末了:
学习技能是一条慢长而艰巨的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习气。以是:贵在坚持!