一、关于作者

二. 准备的部分通用知识点

三. 计算机系统资料学习及简历编写过程。

四. 学习过程之杂谈。

五. 感谢路上陪伴过的人。

六. 文末彩蛋福利

  关于作者 大数据学习群的小伙伴,甘肃警察职业学院的学生,专业是警犬专业。过了阿里一面,拿了一些大小厂offer  今天让他跟大家分享一下自学历程。 准备的部分通用知识点 关于自己的编程学习历程迄今为止该有2年多了吧,但期间也因为是自学踏过了许多许多的坑,只有最近半年才算真正进入学习,之前都在走弯路。 在编程语言经过的坑:(首推C++,Java)假如你在学习某一门语言的时候,在此期间请不要过多涉及其它语言的学习,同时学习多门语言精力容易分散,最后导致什么都学不好。而且学习语言切记不要停留表面语法逻辑层次。 譬如选择学习Java,你要懂得JVM(java虚拟机):这里面包含各种内存淘汰算法,堆栈方法区,基本的调参等学习,JMM(java内存模型):volatile,synchronized等特殊关键字使用时的内存模型变化,并发编程:浅层次的有:多线程编程等基础概念的学习(线程的状态,创建方式,优先级,安全性,线程池和一些关键字的使用) 高层次里面又有各种锁,原子类,AQS,CAS,容器,并发工具,happens-before原则等。设计模式时间不紧张的情况下也可以学学,它会教你如何写出高质量的代码。主要书籍:深入理解Java虚拟机(第3版已出)。 算法学习走过的坑:算法与数据结构的学习是一个比较大的坎,基本笔试必考,常用的数据结构比如数组、链表、栈、队列、二叉树、图等这些要熟悉,包括这些数据结构的特性,对应的增删改查的操作都要了如指掌。常见的算法比如遍历、排序、查找等算法以及对应的时间复杂度和空间也是重要内容,学习它必须要有足够的耐心。 编程题考察的算法和写代码结合在一起的能力,通常就是实际编码能力。牛客网剑指offer,推荐大家可以边看书边刷题这样效果比较好,每道题的解法不止一种,可以多试试。其次就是leetcode,建议没事的时候多刷刷,可以每天只做一种,比如今天数组,明天链表,树等。公司真题也可以提前做做,不然笔试的时候你有可能会不习惯那种出题模式。到面试前,我刷了两遍剑指offer,leetcode刷了300+,都是脱离IDE直接在上面写的代码。 有时候笔试的时候是无法全部AC的,想不出好的解决办法的时候,可以先尝试写个满足时间复杂度的暴力算法拿到小数据分,再看看有没有什么好的思路。 题海战术对于即将要面试的同学绝对是提升算法能力的最快途径。使用过资料:牛客网的直通BAT算法精讲(视频资料,力荐),北京大学地空学院数据结构与算法(python教材)[公众号回复:算法,获取资料] 《趣学算法》:这本书蛮不错的,因为里面代码大多数都是伪代码和C++写的,对于只会java的同学可能不太友好,不过重点是思想不错。 框架和项目的学习的坑:我先后学习过Hadoop、Hive,Spark、Storm、flume、ES、SpringBoot、Redis、Hue、SpringCloud。别看学的挺多的,其实是见树不见林,广是挺广的,但没有深度。面试前期全都是给自己挖了些坑。对校招来说,考察的一般是我们对某个知识点的深度与广度,切忌贪多嚼不烂,可以先着手一个或一类框架类比着学习,学习效果会好点。 项目:这块我一直卡在这好长时间,最初学的大多数都是网上的一些项目,也跟着视频敲完了所有的Demo,期间有不会的,有很多东西不会也请教过学习群里的前辈,这里感谢锋哥的不吝指导,有时候有个引路人真的能省好多麻烦。  缺点就是网上的项目深度大多数都不够,而且你是跟着敲的,思维的延展性也不好,面试的时候有很多梗卡你,不过一般公司面试时候一看你简历项目几乎把来源就猜了个八九不离十,不会过于为难你的。后期也尝试着和朋友一起完成过一些项目,工程能力相比之前突飞猛进,为我面试的时候增加了不少的底气。建议有精力的同学可以自己尝试做一些小项目,也可以去看看群主锋哥的那几个项目。使用书籍:《Spark快速大数据分析》(我虽然看过这本书,但不推荐看它,且不说书中的版本太老已经跟不上时代,推荐学习任何框架先看官网资料)。 项目这块学习建议分面试和实操两个阶段,我前期针对面试学习了项目的一些理论,后期面试完了有时间再补充实战内容,这样效果比较好。
  计算机系统资料及简历编写关于操作系统,网络等资料不作推荐,我因为参加了计算机专业自考,所以这方面知识我看的比较杂。数据库资料有两本《MySQL必知必会》《高性能MySQL》值得每个程序员一读,推荐指数:五颗星。关于高分线带凸优化的数学相关知识能补还是补一补,真的蛮重要的。简历就是求职者的脸面,没有一张好看的脸,怎么能行呢,哈哈~ 我的第一份实习求职简历就是在峰哥的指导下完成的,并且也为我之后简历的编写奠定了一定的基础。虽然秋招已经过去,但不还有春招嘛,没有一个好的简历怎么可以嘛 emm(如果后面有需要我简历作为参考的,可以找我哈)  学习过程之杂谈有时候作为一个非科班生而且学历又不高的真的很慌,即便整个大学我都是努力表现的对得起每一刻从我身边流逝的光阴,有时候甚至不遗余力地学习到晚上两点多,我除了时间好像已经没有其它了~但我仍然对自己的未来感到迷茫… 在学习效率上,我在误区中存在了很长一段时间。每天花上十几个小时的学习时间结果还不如人家五六个小时的呢,所以效率很重要。 希望你能每天总结自己所学,两天一小结,五天一大结。 及时回顾自己所学,曾经我认为只要我把知识点学了,我就会了(可能这中间也有惰性因素),回过头之后发现自己学过的好多东西都已经模糊不清了。忠告:任何学习都是一个不断迭代的过程之后,才能成为属于你自己的~不过在学习方面建议我们每个同学学习的时候订目标订的越高越好,有时候即便最终达不到目标 结果也不是很差,你把目标订在房檐上,有时候就落到窗台上了也说不定呢 哈哈~任何学习都需要持之以恒的努力,坚持的确是一种难得可贵的品质,虽不知未来如何,但我仍然希望你拥有它,如果你只有三分钟热度,我劝再三思虑慎入行。 有人说程序员更多的看中实操能力,学历并不是特别重要,我希望你不要相信这句话,有时候学历和背景能够给你的远比你想象的要多得多,所以希望和我一样学历不是很优秀的你,也一样要努力提升学历哈~看过一个牛客网上有一个笑话 博大家一乐:(公司有个搞测试的跟我讲:我C,C++,GO,Java,C#都会,大学编程没有对手。我装作一个成熟人嘴上讲:你很厉害,有很多东西需要向你学习。心里想的是:傻13,你这么牛逼去搞测试?)虽是个乐子但却告诉我们一个重要的东西:你只要能把一个事情做精通了,你就已经很厉害了,术业有专攻,切忌:贪多嚼不烂。顺便再提醒下大家:简历上尽量不要罗列一堆技术框架,你要答的出来还罢了,你要答不上来,那就是减分项。 多锻炼,我一个21岁的小伙老感觉腰寒…阿里面试官忠告:写代码并不是最难的,难的是代码出了问题时,如何去解决?这个时候就能看到每个人的基础功扎不扎实了,所以 “基础”很重要,“基础”很重要,“基础”很重要…我给了自己一个5年的时间,朝着流计算处理的专家方向而努力,希望你也有这样一个目标。学习坚持不下去的时候告诉自己再多坚持一会儿…  感谢路上帮助过我的人 1. 锋哥(大数据学习之路群群主)2. 宋*礼(大数据学习之路群成员)3. 胡佬(现任某大厂大数据研发工程师)4.田心儿(西安电子科技大学硕士,即将进入华为的算法大佬)还有一些其他帮助我的人,就不一一列举拉,你们的在我转型路上的帮助我会铭记。文末彩蛋福利 有时候非科班专业的想要找一份大数据相关的工作,但对这个领域又缺乏相关的经验,在此推荐一些大佬推荐的资料:《大数据之路 阿里巴巴大数据实践》:分为4篇:数据技术篇、数据模型篇、数据管理篇、数据应用篇。推荐指数:四颗星。 《Design Data-Intensive Applications》:https://book.douban.com/subject/26197294/  这本书涵盖了大数据计算/存储所关心的大多数核心议题,在其中也涉及了许多大数据相关算法。推荐指数:五颗星 Spark作者的Matei的毕业论文:https://www2.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-12.pdf Spark是这个领域很重要的项目,理解它设计以及所解决的问题,然后视野发散出去看到其他的方案就更好了。(这个我没有看完,只看了个开头和大概,有耐心的同学可以看看)推荐指数:四颗星 再推荐一门课程:MIT课程《Distributed Systems》 https://pdos.csail.mit.edu/6.824/ Projects和labs设计的很好,建议仔细的撸一遍。推荐指数:五颗星。--end--