JAVA面试题——初级

1、关于常用包

java.long 基础包:String Math Integer...

java.util 工具包:Collection Map Date

java.sql 数据库相关:Conection

java.io 输入输出:OutputStream File

2、JDK、JRE、JVMA的区别

JDK:是java开发的工具箱,包含jre,还包含将java文件编译为class文件的javac工具类(编译器),除此之外还包括java原生的API;包含J2SE(标准版)、J2EE(企业版)、J2ME(用于移动设备)

JRE:是java运行环境,所有的java程序都要在JRE下才能运行;包括JVM

JVM:虚拟机,java运行依赖虚拟机,因为虚拟机所以才能跨平台

3、&与&&区别

&&具有短路的功能,即第一个表达式为false,则不再计算第二个表达式;&不管第一个正确与否都会计算第二个

4、char型变量能不能储存一个汉字

char型变量是用来存储Unicode编码的字符的,unicode编码的字符集中包含汉字所以,char行变量中可以存储汉字。但是char不能存储unicode中包含的汉字。补充:char 型的变量占两个字节

5、switch默认接受的数据类型

byte 、shot、int、char  String

6、java基本数据类型

byte  shot int long float double char boolean

7、String类型是基本数据类型?

java.lang.String 是final类型类、因此不能被继承,不能被修改。

8、int与Integer有什么区别(自动装拆)

int是原始类型。Integer为引用类型。

9、String与StringBuffer的区别

String 的值不可改变。StringBuffer的值可以进行修改

10、java面向对象的三大特征

封装、继承、多态

11、静态变量、成员变量、局部变量

  静态变量 成员变量 局部变量
所属 属于类 属于对象 属于方法
位置 类中方法外 类中方法外 方法内
内存 静态区 堆空间 栈空间
周期 随类加载 随对象加载 随方法加载
初始值/调用 默认初始值,通过类名调用 默认初始值,通过对象调用 无初始值、通过方法使用
12、静态代码块、构造代码块、构造方法的执行顺序

① static { System.out.println(“静态代码块”)    }

②        { System.out.println(“构造代码块”);   }

③        public Student() { System.out.println(“构造方法”);   }

执行顺序①  ②  ③

执行多次出现结果 ①执行一次  ②  ③重复执行

13、Collection 、Collections、List、Set的区别

List与Set都继承于Collection,Collection是集合的顶级接口。而Collections是集合工具类。list为有序集合接口,ArrayList、LinkedList、Vector为其实现类;Set是无序不重复集合接口,HashSet、LinkedHashSet、TreeSet为其实现类

14、ArrayList、LinkedList、Vector的区别

ArrayList Vector:底层为数组、查询快、增删慢  。ArrayList 效率高、线程不安全;Vector效率低、线程安全

LinkedList:底层为链表结构、查询慢、增删快

15、HashMap、HashTable

HashMap的效率高、线程不安全、允许键或值为空

HashTable线程安全、效率低、不允许键或值为空

16、数组与集合的区别

数组可以存储基本数据类型,也可以存储对象,长度固定

集合只能存储对象,长度可变

17、常见数据结构

栈、队列、数组、链表、树

18、Map接口与Collection接口的区别

Map是双列的、Collection是单列的

Map的键值唯一、Collection的子接口set是唯一的

Map的数据结构只针对键有效。Collection针对元素有效

19、Integer与int值的问题

integer直接赋值,如果数在-128到127之间,==结果则为true、否则为false

两个new Integer 不会相等

int 和 integer(无论是new出的、还是直接赋值的),只要值相同、则为true

20、运行时异常与编译时异常的区别

运行时异常:RuntimeException类及其子类 编译过程中没有错误,运行时会报错

编译时异常:编译过程中出错。必须解决才能运行

21、异常的处理方式

try catch 在方法内直接解决

throws 将异常抛给上一级解决,可以抛出多个异常,可能会抛出

ps:throw 抛出一个异常对象,一定会抛出

22、final、finally、finalize的区别

final 修饰变量为常量,修饰方法不能被重写,修饰类不能被继承

finally try-catch-finally语句代码,一定执行

finalize 垃圾回收器方法

23、osi七层模型

第一层:物理层 ,

第二层:数据链路层 ,

第三层:网络层 ,

第四层:传输层,

第五层:会话层,

第六层:表示层,

第七次:应用层。

24、封装概念

隐藏对象的属性与实现细节,仅提供公共的访问的方式

25、继承概念

将类中重复的属性和方法抽取到一个类中,其他类无序定义这些属性,只需要继承这个类即可

26、多态概念

允许不同类的对象对同一消息作出响应。

27、Overload与Override的区别

重写与重载都是java多态的体现。重写是父类与子类之间的多态性的一种表现形式,重载是一个类中多态性的表现形式。重写时,参数、返回值、方法名都必须相同;而重载时参数不同、返回值可以不同,方法名相同。

28、error与exception有什么区别

error表示恢复不是不可能,但很难的问题,比如内存溢出

exception则表示程序设计问题,通过修改程序就能解决

29、抽象类与interface的区别

抽象类中可以有抽象方法,也可以没有,而interface中必须都为抽象方法。

抽象类只能被单继承,而interface可以多实现。

抽象类中extend实现抽象类,implement实现接口。

抽象类有构造方法,接口没有。

抽类中可以有main方法,接口中没有。

30、数组length属性 String length方法

31、描述一下JVM加载class文件的原理机制?
 JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 。
同步的实现方面有两种,分别是synchronized,wait与notify。










你可能感兴趣的:(面试)