Core Java 面经

1  面向对象的特征有哪些方面?

 (1)抽象,抽象就是忽略与当前目标无关的部分,抽象包含两个方面,一是指过程抽象,另外一个是数据

 (2)继承,是Java中允许和鼓励类重用的思想的体现,它提供了一种方式,可以直接表述共性,一个新类可以从已存在的类继承,前者称为后者的子类(派生类),后者称为前者的父类(基类),这种方式也称为派生。派生类可以从基类那里继承方法和实例变量,,并可以修改和添加新的变量和方法来满足特有的需要。

(3)封装,封装是把过程和数据包在一起,对数据的访问只能通过已定义的界,面向对象的概念也是基于这个基本概念,即现实世界的一切都是对象,都可以抽象成类。

(4)多态 ,多态性是允许不同类的对象对同一消息做出响应,多态性包括编译时多态和运行时多态,前者主要是说由于参数原因导致的函数重载。多态,更多指的是运行时多态,程序只有在运行的过程中,才能唯一确定具体调用的方法,运行时多态为程序状态提供了更多的可能。多态的产生需要满足三个条件,一是存在继承(或者实现)关系,二是存在对父类方法的重写,三是向上转型,也就是父类引用指向子          类对象,运行时多态只能调用父类中已经存在的方法,不能调用只在子类中出现的方法。

2  int和Integer

      Java提供两种不同的类型,引用类型和原始类型(内置类型),int是Java的原始数据类型,Integer是Java为int提供的封装类,引用类型和原始类型的行为完全不同,并且它们具有不同的语义

3 &和&&

     &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与。

4 堆和栈

     ??

5  Math.round()方法

  (1)Math.round(11.5)==12 

  (2)Math,round(-11.5)==-11

    Math.round原理:参数上加0.5然后进行下取整。  Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。

6 关于length 

    数组有length属性,String有length方法,返回的都是长度;

7 描述一下JVM加载class文件的机制

    JVM中类的装载是由ClassLoader和它的子类实现,JavaClassLoader是一个重要的Java运行时系统组件 ,它负责在程序运行时查找和装入类文件的类。

8 char型变量中能不能存放一个中文汉字

    由于Java中以unicode编码,一个char占16个字节,所以中文是没有问题的,但是要说明,并不能穷尽所有的中文。

9 abstract,class和interface

    只声明方法而不去具体实现,以abstract为修饰符的类叫做抽象类,抽象类不能产生实例,但可以创建变量,指向子类。abstract类的子类为他们的父类中所有抽象方法提供实现。

    Java中只支持类的单继承方式,

    可以理解接口为抽象类的变体,我们可以通过实现接口来达到多继承,接口中所有方法都是抽象的,所有成员变量都是public static final的。

10 Static Nested Class 和Inner Class

    Static Nested Class 是被声明为静态的内部类,它可以不依赖于外部类的实例被实例化,而Inner Class,通常是外部实例化后才被实例化。

11Java中存在内存泄漏么

    java 中存在无用但可到达的对象,这些对象不能被gc回收,导致耗费内存资源。

12当一个方法是abstract修饰时,不能再用除public private protected 以外的修饰符。

13 静态变量和实例变量的区别

    静态变量也称为类变量,归全类共有,它不依赖于某个对象,可以通过类名直接访问,而实例变量必须依存于某个类,只能通过对象才能访问到。

14 Clone()方法

    写Clone()方法时,通常有一行代码,super.clone(),它负责产生正确大小的空间,并逐位复制。

15 GC

    GC是垃圾回收的意思,由于内存处理过程中,程序员容易出现问题,Java提供垃圾回收机制,可以自动检测对象是否超过作用域而达到自动回收内存的目的,Java没有提供显示的释放内存的操作方法,是由于程序员不必理会内存问题,GC自动垃圾回收,要求垃圾收集,可以通过System.gc()或者Runtime.getRuntime().gc();

    垃圾回收机制,一定程度上防止了内存的泄露。

    垃圾回收通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡或者长时间没有处理的对象进行清理,回收垃圾的机制有分代复制回收垃圾,标记回收垃圾,以及增量回收垃圾。

    对于GC,当程序员开始对象时,GC就开始监控这个对象的地址,大小以及使用情况,通常,GC是采用有向图的方式记录和管理堆heap中所有对象,通过这种方式,判断哪些可以到达,哪些不可以到达,

16 常见的包,类,接口

    BufereReader BuffereWriter  FileWriter FileReader(...I/O) ;

    Integer(...包装类)

    Thread(...线程)

    Runnable  (....线程),Comparable (...比较器)

 17 匿名的内部类同样可以实现其它接口,继承其他类,Swing编程常用这种方法。

 18 静态内部类可以有静态成员,也可以有非静态成员,而非静态内部类则不能有静态成员;静态内部类的非静态变量可以访问外部类的静态变量,而不可以访问非静态变量。

 19 在Java中一个类被声明为final类型,即表示了该类不能被继承,是顶级类。

  20 数值型字符数字转换

1 int a parseInt(String);   //方法一
2 int a=valueOf(String);    //方法二
int i =24;
String str1 = Integer.toString(i);//int型I 自动变为包装类Integer,调用toString方法获取相应的字符串

   

   还有一种取巧的方式,将数值型转化为String型

int i =24;
String str3 = i + “”;

21 实现字符串的翻转或者替换

    可用字符串构造StringBuffer对象,然后调用StringBuffer的reverse方法实现反转,调用replace方法实现字符串的替换。

22 编码转换

String s1="hello";
String s2=new String(s1.getBytes("GB2312"),"ISO-8859-1");

23 Java 中异常处理机制的简单原理和应用

    当Java程序违反了Java语言的语义规则时,Java虚拟机就会抛出异常。

   Java语言允许用户扩展这种语义检查,创建自己的异常,并自由选择在何时用throw关键字引发异常。所有异常都是java.lang.Throwable的子类。Java通过面向对象的思想来处理异常,把各种异常进行分类,并进行了分类,并提供了良好的接口,在Java中每个异常都是对象,try来执行一段语句,如果出现异常,系统会抛出(throws)一个异常,catch用来捕获,并进行处理,finally对程序做进一步的完善。

   常见的Runtime Exception,IndexOutOfBoundException(),NullPointerException()

24 Error和Exception

   Error表示系统级的错误和程序不必处理的异常,Exception表示需要需要捕获的异常,需要程序进行对应的处理。

25 Java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

26 finalize()方法:

   Java技术允许使用使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时,删除对象之前对这个对象调用调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或执行其他清理工作。

未完,待续......
原文地址:https://www.cnblogs.com/zhishiyv/p/9652377.html