今天是端午节,首先祝所有的朋友端午快乐!就算在繁忙中也要记得吃粽子哈。一直想写篇文章总结一下这半年来的面试经历,但是总是在私人的笔记中记录而已,该篇文章并不是介绍面试过程中会出现的题型,仅从一位在校大学生面试后的角度看待面试。
从今年的3月份开始,各大互联网巨头开始校招,到现在一些公司的散招,在校的大学生(主要大三),有很多机会去尝试面试,勇敢的迈出那一步,关于面试,有很多套路,但是如果基本功扎实,我想如何的面试都难不倒。
当我上大学的时候,一些同学说学校的课程一点用都没有,当时我感觉也是那么回事,老师在课堂说的那么枯燥,有的老师甚至一节课下来都是念PPT,台下几乎都是在耍手机,气氛不太对。当自己接触到Linux,数据库的时候,逐渐感觉到自己的知识储备真的是匮乏!基础学科非常的重要,而这些都是大学计算机相关专业中必学的,如果没有学这些基础学科,对于方向性的学习,阻力非常的大。
比如数据结构中学习的链表,栈,队列,二叉树等,在学习ORACLE中就会涉及到,比如B树索引(如下)就是一棵平衡树,当我们dump分析时,没有这些基础知识,我想理解这些会有些困难:
----- begin tree dump
branch: 0x10038ab 16791723 (0: nrow: 15, level: 2)
branch: 0x100540b 16798731 (-1: nrow: 503, level: 1)
leaf: 0x10038ac 16791724 (-1: nrow: 512 rrow: 512)
leaf: 0x10038ad 16791725 (0: nrow: 512 rrow: 512)
leaf: 0x10038ae 16791726 (1: nrow: 512 rrow: 512)
leaf: 0x10038af 16791727 (2: nrow: 512 rrow: 512)
leaf: 0x10038b0 16791728 (3: nrow: 512 rrow: 512)
leaf: 0x10038b1 16791729 (4: nrow: 512 rrow: 512)
leaf: 0x10038b2 16791730 (5: nrow: 512 rrow: 512)
leaf: 0x10038b3 16791731 (6: nrow: 512 rrow: 512)
leaf: 0x10038b4 16791732 (7: nrow: 512 rrow: 512)
leaf: 0x10038b5 16791733 (8: nrow: 512 rrow: 512)
leaf: 0x10038b6 16791734 (9: nrow: 512 rrow: 512)
leaf: 0x10038b7 16791735 (10: nrow: 512 rrow: 512)
leaf: 0x10038b9 16791737 (11: nrow: 512 rrow: 512)
leaf: 0x10038ba 16791738 (12: nrow: 512 rrow: 512)
leaf: 0x10038bb 16791739 (13: nrow: 512 rrow: 512)
leaf: 0x10038bc 16791740 (14: nrow: 512 rrow: 512)
leaf: 0x10038bd 16791741 (15: nrow: 512 rrow: 512)
leaf: 0x10038be 16791742 (16: nrow: 512 rrow: 512)
leaf: 0x10038bf 16791743 (17: nrow: 512 rrow: 512)
leaf: 0x10038c0 16791744 (18: nrow: 512 rrow: 512)
...
...
在学习操作系统的时候,内存分页管理中的页面LRU置换算法,在ORACLE内存管理中都有,以及Android中图片缓存算法lrucache,disklrucache,连贯起来,会发现都是想通的。感兴趣的可以再了解其他的算法,会让自己有更多的知识储备,比如牛顿迭代算法(sqrt函数)。
玩过树莓派或者路由器的朋友,应该知道,如果只是简单的刷固件或者装os,是比较简单的,但是如果有了这些硬件,再加上自己写的软件,那么这样是不是很酷的事情呢?笔者并没有去尝试。
计算机网络是一门非常复杂的学科,我们学习的细至OSI七层,对于底层的东西,几乎一无所知,往往大多数人并不需要知道这些东西,基础的知识点必须知道的,有助有自己的学习以及面试。学习这些知识,可以利用手边的工具,可以相对直观的把抽象的概念展现出来。
对于语言的学习,都是相像的,昨晚和一位搞C++的朋友交流了一下,让我收获不少。不论学习Java还是C++,初学者非常有必要弄明白内存分配,弄明白这个,学习起来就不会感觉太吃力,当然学习Java,要了解JVM。比如理解HashCode,如果有学过数据结构中的开散列表,那么理解它会变的非常简单。
扯了这么多,只想说,大学的基础学科非常的重要!基础知识是重中之重!本人也是由于基础知识不扎实,和互联网巨头失之交臂,吸取血的教训。而那些说大学学科无用的朋友,只能说是认识短浅。网上看过这样一句话,IT行业开始是没有方向的,只有学完基础学科后,才可以选择方向,否则都是不合格的方向性初学者。