没有合适的资源?快使用搜索试试~ 我知道了~
引言首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字。写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善。之前LZ写过一篇《回答阿
资源详情
资源评论
资源推荐
万能的林萧说:我来告诉你,一个草根程序员如何进入BAT
引言
首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字。
写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善。
之前LZ写过一篇《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》,那篇文章LZ
主要介绍了如何应对社招面试,以及如何进行Java学习。
文章的反响还不错,不少猿友都感叹,“如果早看到这篇文章,说不定我已经成大神了。”
但是LZ只能很遗憾地告诉你,LZ那篇文章并不能让你成为大神,只能让你成为一个比大部分人优秀一点的程序猿。
而且LZ自己现在都还没成为大神,如何能让你成为大神?
但是,LZ可以手把手的告诉你,LZ作为一个非科班毕业,出身于三流大学的草根,是如何凭借自己的努力,进入到
国内一流互联网公司的。
心态
看到这个标题,有的同学可能会说,“LZ,你不是要告诉我们如何进入BAT吗?怎么一上来就写心态?”
没错,LZ第一个要说的,就是心态!
原因很简单,文章下面即将提到的学习内容,如果你没有一个好的心态,是不可能进行下去的。所以,先过了心态
这一关,再来谈别的吧,否则你肯定会死在半路上的。
说起来,很多群里的新人都爱问LZ,“你是怎么学习的?为什么我学不进去呢?为什么我一看书就困呢?”
以上这种现象,基本上就是两个原因,第一个原因是心态浮躁,总觉得看书好像没啥用啊,看了好像还是觉得没学
到什么,过不了多久就忘了。第二个原因则是目标感不强,不知道自己要达到什么程度才算可以,所以也就干脆“一
瓶子不满,半瓶子晃荡”了。
针对第一个原因,说到底就是个心态问题。总想着看书能够立竿见影,从菜鸟一下子蜕变为大神,如果你老是抱着
这样的心态去看书,你特么不瞌睡才是邪门了。
而第二个原因,LZ觉得有时候人要适当的激发内心的欲望,无欲无求这种高逼格的事,等你七老八十了再说,现在
趁着年轻,心中有点欲望其实并不是什么坏处,只要你没被欲望懵逼了双眼就行。
说起欲望这事儿,LZ觉得有必要给大家看一下LZ当初的欲望,相信从这封邮件里,你就能感受出LZ当时的欲望。这
种欲望,会激励着你前进,但是你要切记,在前进的途中,调整好自己的心态,戒骄戒躁。
学习
说完心态,咱们来谈谈学习这事儿,还是老规矩,由于LZ是Java后端出身,所以接下来的内容,会与Java后端息息
相关,非Java后端的同学可以适当参考,但切勿照搬。
本篇文章和《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》不同,那篇文章更
多的是从学习的角度去谈的如何学习,而本篇既然咱们是要谈如何进入BAT,那么咱们就从面试的角度来谈学习这
件事,LZ会谈谈一流互联网公司对于Java后端程序员的要求,相应的,也会谈谈如何达到这样的要求。
为了简单起见,LZ将这些要求分为三个层次,分别为基本要求、可选要求以及加分要求,接下来,咱们就一个一个
的来谈一谈。
一、基本要求
基本要求就是指,你必须要学会的知识,而且这里面大部分内容,在面试里出现的概率都是极高的。因此,这部分
内容你没有选择,只能选择啃下它,你可以花一年,也可以花十年,或者带到棺材里学习也可以。
1)语言的基础部分:
基本要求的第一个,当然是语言的基础部分。基础部分其实就是语法以及一些关键字的作用,像一些if/else、for循
环这类基础的语法,以及一些new、class、public这类的基础关键字,大部分情况下面试问的是比较少的,因为这
部分内容,只要你写过几年Java,基本上都没有什么问题。
那么基础部分的重点,其实主要就是static、final、transient、volatile这一类的关键字,以及内部类、泛型
这一类的高阶语法。
说到static,首先要记住的最重要的一点就是,类属性中被static所引用的变量,会被作为GC的root根节点。作为根
节点就意味着,这一类变量是基本上不会被回收的。因此,static很容易引入内存泄漏的风险。
如果一个面试官让你解释static关键字,你告诉他static可以修饰属性、方法和内部类,以及修饰之后又有什么效果
的话,那么面试官基本上不会记住你这个回答,整个印象就是平庸。
但是如果你说完以后,补充一下说道,你曾经遇到过一个内存泄漏的问题,就是因为static修饰的一个Map类型的变
量导致的,最后排查了堆栈信息找到了问题的所在,并且解决了这个问题。那么,面试官这个时候内心中对你的印
象,就会不自然的提升几分。
而且,对于static,更深入的理解是,static会将所引用的属性、方法以及内部类,与类直接产生引用关系,而非与
类的实例。这就是为什么,你可以使用类名.属性、类名.方法以及类名.内部类名,来直接引用一个被static所修饰的
属性、方法或者内部类。
如果你没有用static修饰,那么你就必须使用实例才能引用这些方法、属性或者是内部类,最典型的就是内部类。相
信很多同学都好奇过,为什么一个没有被static修饰的内部类,必须要这么声明。
因为你没有使用static修饰InnerClass,所以你必须new出来一个OutterClass的实例,才能在此基础上new出内部类
的实例,因为内部类只能通过外部类的实例才能引用。如果你使用了static修饰,那么你就可以这样使用内部类。
这两种方式最大的区别就是,第一种方式,如果你想要获得InnerClass的实例,你必须有一个OutterClass的实例,
所有其实这种方式你创建了两个实例,所以有两个new关键字。而第二种方式就好理解一些,静态内部类不依赖于
外部类的实例存在,因此只需要直接创建内部类的实例就可以了,所以只有一个new关键字。
static说的有点多了,不过LZ其实不光说了static关键字,也一起连同内部类的语法也大致都说了下。那么接下来,
基础部分还有一个比较考验人的东西,就是volatile关键字。
这个关键字的重点就三个字,就是可见性。但是面试的时候,你说出可见性三个字,基本上满分100的话,最多只
能得到20分。剩下的那80分,就要靠你用硬功夫去获得了。
所谓的硬功夫,其实就是要整明白,在并发当中,可见性到底是什么意思。那么,为了弄明白可见性什么意思,就
需要你了解什么叫主存和工作内存。
只有把这些概念都搞明白了,你才会知道volatile的真正作用到底是什么。不过有一点要提醒你的是,volatile并不保
证同步,这一点一定要记住。不光是应付面试官,在真正使用volatile的时候,也要注意这一点,否则很容易出现问
题。
好了,基础部分就说这么多吧,LZ挑了一些有代表性的说了下,归根结底,这一部分就是要你非常清晰的了解Java
当中的关键字和语法,这里所谓的了解,是清晰的了解其实现原理,而非简单的会用而已。
2)Java运行时环境
Java运行时环境就是JRE的中文翻译,本质上其实就是指JVM。
首先对于JVM必须要知道的是,JVM与Hotspot的关系。JVM更多的是指JVM规范,而Hotspot是JVM的一种实现,
也是我们最常用的JVM实现。你可以把JVM规范当做接口,Hotspot当做实现类,这样去理解会比较简单一些。
此外,JVM最重要的三个部分必须要非常清楚,内存划分、class加载机制以及GC策略。搞清楚这三部分不
仅仅是为了面试,也是为了让你对于Java有更深刻的理解,这对于你的Java生涯非常有帮助。
OutterClass.InnerClassinnerClass=newOutterClass().newInnerClass();
OutterClass.StaticInnerClassstaticInnerClass=newOutterClass.StaticInnerClass();
1
1
剩余11页未读,继续阅读
马李灵珊
- 粉丝: 33
- 资源: 297
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0