Java笔试面试要点 基本上可以应付Java基础面试了

2014-07-24 06:30:01 阅读( 95 )

1923人 收藏本页

标签:Java面试题

Java基础(笔试部分)3一、 基本概念3(一) JVM3(二) i++4(三) 类型转换4(四) 程序结构5(五) 运算符5(六) 异常6(七) 反射8二、 传递与引用8(一) 传值与传引用8(二) 静态变量与私有变量8(三) 输入/输出流8(四) 序列化11三、 循环、条件、概率11(一) 典型递归问题11(二) 循环与条件问题12(三) 概率问题12四、 Java内存管理12(一) 垃圾回收12(二) 内存管理13(三) Clone17Java克隆(Clone)是Java语言的特性之一,但在实际中应用比较少见。但有时候用克隆会更方便更有效率。17五、 面向对象19(一) 面向对象的基本概念19(二) 类与对象19(三) 嵌套类19(四) 集合类19(五) 构造函数与析构函数19(六) 复制构造函数和赋值函数19(七) 多态的概念19六、 继承与接口19(一) 基础知识19(二) Super19(三) This19(四) 不能继承的情况19(五) 抽象类与接口19Java基础(笔试部分)一、基本概念(一)JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。我们主要关注ClassLoader的知识。1)ClassLoader的基本概念与C或C++编写的程序不同,Java程序并不是一个可执行文件,而是由许多独立的类文件组成的,每一个文件对应一个Java类。此外,这些类文件并非全部都装入内存,而是根据程序需要逐步载入。2)ClassLoader的加载流程3)一些重要的方法① loadClass② defineClass③ findSystemClass④ resolveClass⑤ findLoadedClass⑥ findClass⑦ getSystemClassLoader⑧ forName(二)i++i++和++i使用的不同点在于一个是在程序执行完毕后自增,一个是程序开始执行前自增。对于比较长的表达式:程序从左向右执行,以int j = 0;x= ++j + j++ + j++ + j++;为例。程序执行顺序为:① ++j;(此时先会执行自增然后执行+操作,此时x = 1,j = 1)② j++;(此时程序先会执行+操作然后才会自增,此时为 x= 1 + 1;j = 2)③ j++;(此时程序先会执行+操作然后才会自增,此时为 x= 1 + 1 + 2;j = 3)④ j++;(同理x = 1 + 1 + 2 +3 ; j = 4) 那么假如此时我将x 换为 j 即(j = ++j + j++ + j++ + j++;)那么此时的j该等于什么呢?是7?还是4?答案是7,这是为什么呢?原来在Java中采用了中间缓存变量的机制,这是什么意思呢?就是说在Java中在进行计算的时候Java会创建一个缓存变量来作为中间变量使用以储存中间值,即以上计算在Java中实际上是这样的:① 中间变量temp保存右侧表达式每步的结果。即temp =(++j) +( j++) +( j++) + (j++);② 变量 j 的值有j自己保存即右侧表达式计算之后j = 4;③ 赋值运算是指把右侧表达式的值赋给左侧变量即 j = temp;此时运算结束,j = 7;(三)类型转换1.数据类型的转换种类基本数据类型之间的转换、字符串型与其他数据类型之间的转换、其他实用数据类型的转换。2.简单数据类型的转换① 自动类型转换低级变量可以自动转为高级变量(byte1、char2、short2)— int4 — long8 — float4 — double8② 强制类型转换高级变量转成低级变量必须强制转换,可能会丢失精度。③ 包装类过渡类型转换使用对应的封装类来实现转换Byte-Character-Short-Integer-Long-Float-Double3.字符串型与其他数据类型的转换几乎所有从Object类派生的子类都有toString()方法。使得数据能够转换为String类型。包括8种基本数据类型的封装类。4.将字符型直接作为数值转换为其他数据类型① 将字符转换成相应的ASCII码使得'1'——49② 用Character的getNumericValue(char ch);使得'1'——1(四)程序结构(API级程序员部分例如断言assert的使用等)(五)运算符1.运算符种类:① 单目运算符(只对一个参数进行运算)② 双目运算符(对两个参数进行运算)③ 三目运算符(对三个参数进行运算)2.运算符优先级(1级最高到14级最低) 从上到下为:① . ()[](.点运算符、[]数组下表运算符、一元)② ++ -- ~ +(正) -(负)!(++ --算术运算符、一元)③ * / %(算术运算符)④ + -(算术运算符)⑤ >> >>(位运算符)⑥ > = >=(扩展赋值运算符)即一、二、三元顺序走,算数位移论关系,与先或后逻辑定,扩展赋值垫最后。3.一些注意事项(定义var 为变量、Expression为表达式、op为运算符)① 运算表达式中会进行自动类型转换。因为在运算表达式的时候,计算器会把数据和运算符都读入到栈中,会把所有数据类型自动转换成最高级变量。② Java编程规范中提到:对于三目运算符Expression1?Expression2:Expression3,如果后两个表达式有一个是常量表达式,另外一个是T类型(例如char类型),而常量表达式也可以被T 类型所表示时,则输出的结果为T类型。例如:char x = 'x'; int i = 10;false?i : x //结果为120false?10 : x //结果为x③ 短路运算符&& ||Expression1 && Expression2 Expression1为假则Expression2不执行Expression1 || Expression2 Expression1 为真则Expression2 不执行④ > >

来自IT公司面试手册

下一篇:写一个java中调用存储过程的方法

上一篇:Java 异常处理的原则是什么

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题