java面试宝典读书笔记(一)-java基础

                                                             第一到第四章  

      每个人都有自己的观点和人生态度,每个人的性格才学也不一样,关于找工作,如果开始你就是顺利的你就用想着改变自己多去准备一些关于找工作的套路。但是不顺利的话就会想着怎么样怎样改变怀疑自己的能力。关于笔试和面试,其实对于笔试成绩不是特别得重要,在我们找工作的时候我的笔试成绩都是差不多的因为出牛逼的大牛外我们大部分都是有助攻的,除了大牛外这些笔试成绩最多可以用来当做你得到这些工资的依据(比别人少)。短短的面试不可能发现你这个人到底怎样因为你面试多了你习惯了面试的套路,所以面试官总是想试图发现你的人生观和对待事情的应对,也不排除第一印象好和不好,那结果就明了了。但是我想说两点。一是自信:切忌在工作室关于这一点还没怎么准备好之类的话(亲身经验,面试官建议我不要再说没准备好,在学中,学得不好之类的话),因为有些不如你的说的话把自己包装得很牛,所以还是在保持谦卑的情况下不要自傲就行。二是当你觉得自己可以尝试不同方向的工作时尽可能找准一个方向,当然可以去尝试,因为“吾生也有涯而知也无涯,以有涯随无涯殆己”。一个人精力是有限的留给你的时间也是有限的所以几头都抓的牛人还是很少的,所以能尽早确定一个方向的工作全力准备的胜算还是大于多方向尝试,但是提前海投还是必要的,普遍撒网重点捉鱼。

         无论工作定了与否专业知识还是要强的,你不是为了找到工作还要以后工作,所以还是要自身素质过硬才扛得起以后的生活。

                          第五章 java基本概念

1、java类加载器:类的加载过程 :JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤。1) 装载:查找并加载类的二进制数据;
2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始化:为类的静态变量赋予正确的初始值。类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个这个类的Java.lang.Class对象,用来封装类在方法区类的对象。类的加载是具有层次机构父类委托机制包括:

1)Bootstrap ClassLoader(启动类加载器)负责加载$JAVA_HOME中jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类。
2)Extension ClassLoader(标准类加载器)负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包。
3)App ClassLoader(系统类加载器)负责记载classpath中指定的jar包及目录中class
4)Custom ClassLoader属于应用程序根据自身需要自定义的ClassLoader,如tomcat、jboss都会根据j2ee规范自行实现ClassLoader加载过程中会先检查类是否被已加载,检查顺序是自底向上,从Custom ClassLoader到BootStrap ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类。

2、java的java使用的编码字符是Unicode,涉及到面向字节和面向字符的编码,涉及到字符编码的转换,java的字符占两个字节可以表示一个汉字

3、自增操作:关于先赋值和先运算的规则考察。++在前和在后的不同,一个先自加一个先赋值。

4、类型转换:书中例子提到不同类型的转换,转换涉及到自动转换和强制类型转换,数据类型四类八种,不参与自动转换的byte、short、char三种。(例子中讲到length属性和length()方法的不同)。java的六种包装类Boolean、Character、Integer、Long、Float和Double。String和Date本身是类。利用包装类的各种方法进行转换。

5、运算符的等级

1级 2级 3级 4级 5级 6级 7级 8级 9级 10级 11级 12级 13级 14级 15级 16级
.() ++ -- new * / % + - 》《 > >< >= >= == != & ^ ! && || ?: = += -= &= <<= 
&& 与&,||与|区别。前者短路或者不短路。关于三元运算中,当两个表达式有一个常量表达式另一个是T,而常量表达式可以被T表示输出是T类型。移位操作参数先进性模32运算,并且是对二进制操作,二进制操作8是一个循环n>>32等于n>>0,n>>33相当于n>>1。

6、异常:运行时异常是一个超类当java虚拟机正常时一定会跑出Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。异常的体系结构

java面试宝典读书笔记(一)-java基础_第1张图片

异常是程序遇到非正常的情况或者意外行为,一般引发异常有代码或调用代码有误,操作系统资源不可用,除数为零、下标越界等。关于异常处理的关键字try、catch、throw、throws、finally。关于try、catch、finally三个语句块均不能单独使用,三者可以组成 try...catch...finally、try...catch、 1)try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个。 2)、try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。3)多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块, 并且匹配catch语句的顺序是由上到下。

 throw、throws关键字 throw关键字是用于方法体内部,用来抛出一个Throwable类型的异常。如果抛出了检查异常, 
则还应该在方法头部声明方法可能抛出的异常类型。该方法的调用者也必须检查处理抛出的异常。 如果所有方法都层层上抛获取的异常,最终JVM会进行处理,处理也很简单,就是打印异常消息和堆栈信息。如果抛出的是Error或RuntimeException,则该方法的调用者可选择处理该异常。

异常处理的一般原则 :1、能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。 因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。 
2、对于检查异常,如果不能行之有效的处理,还不如转换为RuntimeException抛出。这样也让上层的代码有选择的余地――可处理也可不处理。3、对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格, 将优雅的异常信息反馈给用户。

7、final、finally、finalize的区别

A: final可以控制成员、方法、或者是一个类是否可被覆写或者继承等功能。1)final修饰成员即被初始化便不可改变,不可改变说的是其基本类型值不可,对于对象来说而其引用不可变。2)final修饰方法不可复写(用以内嵌)。3)final修饰类,此类不可以被继承。不能与abstract共存。

B:finally:是对java异常的补充,finally代码总会执行不管异常是否发生。使用finally可以维护对象内部状态,并可以清理内存资源。try{}里有一个return语句,那紧跟后的finally{}里的code会在return前执行。

C:finalize:这个是用来控制java中不易控制并且非常重要的资源例如一些I/O操作,数据的链接。

8、反射:反射是指程序可以访问、检测和修改它本身的状态或行为的一种能力。http://www.cnblogs.com/lzq198754/p/5780331.html

你可能感兴趣的:(java面试宝典读书笔记)