1,算法
第一,为什么先学算法再学语言
很显然,任何人都有语言基础;此时面临的抉择就是,是去做点不死不活的项目,还是去多学点技术皮毛,或者深入学习下语言,或者好好学习下算法。个人对算法的理解:其本身就包含了大量编程的练习,当然你也可以写伪代码,但是如果你想快速学好算法,最好还是写实在的能跑的程序,这样你在深入学习语言的同时就会发现事半功倍。因为前期学习算法的过程中编写的程序也让你写程序已经变得比较熟练,此时如果在深入学习语言无异于如虎添翼。而且深入学习语言的过程其中就包含了必须大量的编程;而算法的过程就完全弥补了这个不大不小的缺憾。
建议:
1,碰到的任何问题都要纪录下来,对于如我这样的新手来说,任何地方犯错都很正常,任何地方不懂也很正常,没有什么不可以错的,尽量多错,然后在错的过程中,将“犯错”、“改错”、“不犯错”这样三个东西以两种东西积累下来,第一就是博客,这是最好的积累;第二就是程序,这是最好的实践练习巩固加深;第三就是复习,这才是积累的最好方法;
2,思考为什么犯错,语言深入、数据结构的深入、思维的深入开放、算法的敏捷都是在思考和积淀中点滴汇集起来的。别忘了纪录,也别忘了思考下别人会不会犯这个错误。
3,多收集资料,圈定好范围;可以说:算法的学习研究是无穷无尽的,怎样能把算法搞好,这是一个根据个人情况定好时间和工作量的事情,不要搞的自己无穷无尽,而且都无法知道自己学过之后到达的水平到底什么程度;
4,复习复习再复习,圈定的范围学习好,达到“量”、“速”及“深”的目标。
第二,怎样学好算法
数据结构和算法设计缺一不可,所以从数据结构学起。如果一个字一个字的琢磨,这样会让人崩溃,因为时间宝贵,没有那么多时间。最好的方法就是略读一遍,然后选好侧重点,然后再进行深入学习,如此可以事半功倍。
建议:
1,有一个有效的范围和目标就是,将程序员面试100题以及算法导论中的所有知识点用到的编程全部搞透。
2,千万要记得思考,优秀的复习策略是什么样的,也就是说怎么才像是一个高效或者成功的过程,如果有一个成功的过程肯定会收获一个成功的结果。
3,如果你认为自己很聪明,那么你算法好不好?那么你学习算法快不快?那么你学习算法达到的水平有多高? ....如果你算法学不好怎么能说自己聪明呢?
4,如果你认为自己学习能力很强,那么你面试题整理的好不好?面试前的功课做没做好?面试前这点时间你突击的程度怎么样?....如果面试时你表现不好怎么好意思说自己学习能力强?
5,如果你认为自己能为公司创造更大的价值,那么你编程的效率高不高?那么你学习编程的效率高不高?那么你学编程做项目的效率高不高?....如果你面试时编程不行,项目经验不行,怎么好意思说自己能比别人创造更多的价值?
第三,学好算法的好处
任何一个程序运行的效率都代表了算法的功底和水平,任何一个程序编写的效率也代表了算法和编程的功底和熟练程度。如果你算法很好,水平很高,设计很敏捷,编写的速度也很快,那么毫无疑问,你很聪明也很高效,学习能力也强, 编程水平也高,学任何技术都快好深,,,你就是个优秀的程序员,因为你算法学得好,你很聪明。
2,C++
第一,为什么是C++
首先,面向对象是目前商业级别软件的大多选择,除了部分对速度性能要求变态的程序选择诸如c语言的面向过程,一般来说都是如此;
其次,Java和C#是必须掌握的,在掌握了这两门语言的时候,你会发现两者很像非常像非常非常像,然后你发现他们无数强大的库组件,这时候,你默默的看着C++,还是你可供搞的空间比较大,自己可以放开了大踏步的向前走。
再次,指针和内存控制,如果你不能理解这二者的强大,你应该在这个阶段停留更多时间。
最后,C++语言高级编程才能让你真正知道什么叫内存,什么叫程序。
第二,怎样学好C++
1,多尝试写错误的程序
2,多调试写错误的程序
3,多思考写错误的程序
4,多整理写错误的程序
5,多深入理解写错误的程序
6,多交流些错误的程序。
第三,通过C++你能学到什么
1,核心的面向对象:继承、多态、封装特性,
深入说 :
a对象特征:构造函数、析构函数、拷贝构造函数、子类调用父类构造函数
b访问控制:3p之间关系、父子之间访问控制关系;
c 类和对象: 静态非静态之间关系、类内成员以及对象成员之间关系
d继承关系:3P继承面临的各种问题、获得的优势、综合方案、实际问题、各种陷阱
e内存布局:C++对象模型专门讨论。
2,
未完待续
3,网络编程
4,图形编程