A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

风平浪静

初级黑马

  • 黑马币:15

  • 帖子:5

  • 精华:0

© 风平浪静 初级黑马   /  2018-11-10 22:50  /  754 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

我来黑马前,曾自学过一段时间的Java,那时我有一份稳定的工作,和足够的学习时间,但当时学习编程的初衷仅仅只是不想天天在家打游戏。后来由于学习的深入,我愈加感受到了编程的魅力,也坚定相信在不久的将来,面向对象中的一门语言一定会成为中国中学生继语文、数学、英语之外的第四门必学科目。在这种思想的影响下,我一个业余爱好者成功的将我一朋友拉进了坑。与我不同的是,我朋友需要通过学习编程找到一份更好的工作。通过多方打听、来校考察,我把他送到黑马。朋友现已在我写文章之前两个月找到了工作。

朋友在黑马学习的那段时间里,让我印象最深的一次是过年前,我心怀愧疚开车来黑马接朋友回家。开车时,我无意识回头看后座的朋友时惊讶的差点车都翻了。我与朋友十多年的交情,但是从高中到现在,我是第一看到他人还在我车后座上就开始翻看自己的学习笔记,当时我震惊的无以复加。不过好在,看到他的学习态度,我觉得让朋友来黑马,我心中那点愧疚减轻不少。

那时,我认为朋友的学习压力来自黑马这个培训机构的管理制度。这种类似军队的组织模式,对于我这种正规的解放军退伍军人来说,再严我也不屑一顾。但是,我朋友后来认真的纠正我,他的学习压力不是来自学校的管理,而是黑马的学习氛围。这一点,在黑马的十余天经历我感同身受。在刚来学校的时候就说过晚上有晚自习,会上到晚上10点。而事实是,没有多少人会在晚自习结束就回去睡觉的,要知道这批不肯下课的人里可不是只有我这种拿着高中文凭的人,211、985的学生大有人在。当开学第一天,得知班上带读单词的人是个英语六级;当自我介绍时,得知旁边的胖子拿过国家认证的编程比赛的名次;当学员分组时,得知年纪小我几岁的组长计算机本科毕业。这种压力,在家自学编程的自我感觉良好无异于坐井观天。

了解了黑马的学习压力和氛围,你们一定也想知道黑马教员的教学水平,能教出月薪1万8的学生,老师的能力毋庸置疑。但老师的耐心,是我感触最深的地方。一个班上有一个技术辅导老师和授课老师,我们技术老师王韬天天陪我们晚自习上到10点。对于上课问题回答不出的、课堂测试不理想的学生,韬哥那句喜闻乐见的:“晚上6:30我们不见不散。”是在以牺牲他本人的休息时间的情况下给我们补课。

由于本人自学过,所以前几天的课程我根本没耐心去看黑马给我的视频。为了提高效率,基础班的知识点,我几乎只看上课老师用的备课文档,然后就直接完成当天作业。进度到了逻辑运算符那一节的时候讲到&&(并且)和||(或者)有短路效果,快到了只扫一眼就过。因为那时的我觉得我理解了,没问题。后来,上课的时候教我们的岳嫣峰老师一点没开玩笑,为了让我们理解短路效果,围着这个知识点,他真的给我们演示了四遍,敲了四回测试代码。当时我都急的都快窒息了,这么小的知识点真的需要讲的这么详细?可惜,当时我仍未将这种短路的思维放在心上,后来在写代码的时候,真的就能感觉到细节的上的差距。不废话,上代码。

如题:定义一个方法equals(int[] arr1,int[] arr2),
功能:比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的,位置也必须一样)

由于个人感觉基础班的内容已不在话下,想问题的角度都是直的,敲出来的代码现在看起来奇丑无比。所以这样的代码我都能贴上来,最起码能说明我的感想还是比较实在的。
public class Test7 {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3,4,5,6,7,8,9,0};
        int[] arr2 = {1,2,3,4,5,6,7,8,9,1};
        System.out.println(equals(arr1,arr2));
    }

    public static String equals(int[] a,int[]b){
        int l = 0;
        int j = 0;
        String s = "";
        if(a.length == b.length){
            l = 1;//true
        }else {
            l = 2;//false
        }
        //两个数组长度相等
        if(l == 1){
            for (int i = 0; i < a.length; i++) {
                if(a[i] == b[i]){
                    j = 1;
                }else{
                    j = 2;
                }
            }
        }
        if(j == 1){
            s = "数组arr1与数组arr2完全相同";
        }else{
            s = "数组arr1与数组arr2不相同";
        }
        return s;
    }
}


但是到了岳嫣峰老师讲到这道题时,说到“取反”这个思维方法。在我看来,“取反”就是“短路”效果的延伸,大家可以看下峰哥的代码:

public static boolean equals(int[] a,int[]b) {
    if (a.length != b.length) {
        return false;
    }
    for (int i = 0; i < a.length; i++) {
        if (a[i] != b[i]) {
            return false;
        }
    }
    return true;
}

在座的各位,不管你有没有编程基础,你也应该能看出两段代码的差距何在。当然,有一定基础的人或觉得我小题大作。那么接下来,我以一个带着项目开发经验回来学习的人谈谈我的经历。

一天上班,我试车时载着汽修店的师傅过我市二桥。上桥时,我以我的社会经验判断,桥内道(超车道)要比外道快。结果不是,外道上几乎没车,内道很堵。我就问修车的师傅:“桥不宽,外道上还有电动车、摩托车和小车司机抢道,不应该是内道走的快些么?”修车师傅冷冷地回了我一句:“就是像你这样的‘聪明人’太多了,都是这么想,所以内道走不动。”

我原先自学后是通过熟人关系进了一家公司,最初的想法也是凭自己的社会经验,觉得就算我自己基础不好,在一家公司只要把人际关系搞好,技术上的能力磨也能磨出来。说实话,这种思想在传统企业虽然仍然算小聪明,但还是有效的。很可惜,软件开发公司毕竟不是传统企业,团队不会去等你。关系搞得再好,没有用。

关于自学编程的效果,我在原公司工作时基本有如下几点感受:

一看就会,动手就废。

基础不牢,地动山摇。

没有考试,就没有成绩。

上面几句话,看得懂的,可以笑笑,看不懂的,可以试试。

记得布拉德·皮特主演过的一部电影《僵尸世界大战》中有这么个剧情,在全世界所有国家都爆发僵尸病毒的情况下,只有以色列这个国家建立了完备的防御体系。作为电影主角,布拉德·皮特向以色列摩萨德情报人员提出了疑问:“你们不仅正确判断了危机的真实性(电影中其他国家领导人从未相信此事真实),还成功预知到了危机爆发的时间,你们是怎么做到的?”摩萨德情报人员的回答,我至今难忘。

“30年代时,犹太人不相信他们会被送进集中营。1972年间,我也不相信奥林匹克期间,我们会被屠杀。在1973年8月前,我们发现了阿拉伯部队的动向,我们也不相信他们能有威胁,然而一个月后,阿拉伯差点把我们赶下大海。所以我们决定做一个改变。‘第十人’,如果我们9个人都看到了同样的信息,并且做出完全相同的结论。那么第十人的职责就是不同意,不管看似多么不可能,这第十人必须找出证据,去证明他人是错的,而我就是那个第十人。”

人天生就会熟练地将自己的认知进行简化处理,对自己身边熟悉的事态发展都会有种想当然的判断。就比如,在看鬼片的时候“贞子”长成什么样其实并不可怕,可怕的是这东西居然能从你家里那台你无比熟悉的电视机里钻出来。一如现在,我以一个过来人的身份,带着过去的学习成果和已有经验去做黑马给我的基础班试卷,代码题根本不存在问题,理论方面的选择题却只有60%的正确率,我的自信在成绩出来的那一刻不异于我家电视机里真的有个东西爬了出来。

在回想我独自一人,没有任何基础的情况下学习一门陌生学科时,这种简化认知的思维逻辑很重要,也很危险。我认为能否证明自己真的掌握了一个知识点,是将其复述并表达。这种学习方式必定会将认知过程进行简化,在认知正确的情况下它能帮助我高效学习,但是一旦出现认知错误或者遗漏,在以后的学习工作中就要付出极大的代价去更正错误。在我原先的开发经历中,最可怕的可能是由于认知有限,既感觉不到问题所在,也不知道如何去改,还只能坚持错误的观念。如果一定要我举个例子,请看我贴出来的代码……

我是黑马JavaEE20期的学员,我在这长篇大论电影和历史并不是我在黑马实在闲的无聊,而是想谈谈在黑马这学习的这几天的真实感受。这个感受就是:

1.在好的学习环境和氛围里学习真的就比一个人在家自学有效的多。
2.软件编程可以没有学习的门槛,但一定要足够的时间练习和熟悉。在这方面黑马每天的作业和定时的考试,我一个LOL的白金和坦克世界800效率几乎已经忘了世界上还有游戏和网吧。
3.有老师带路的情况下,可以让你对一个陌生学科建立起良好的认知。我朋友毕业后,遇到的技术问题,黑马的老师们有求必应。

在文章最后,我用原公司里解决bug时,无意间看到的一句话与各位共勉。无冥冥之志者,无昭昭之明。无惛惛之事者,无赫赫之功。——荀子·劝学

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马