首页 java面试 java面试题(二)

java面试题(二)

java 面向对象 java语言的特点:“完全的面向对象;可移植性”;安全性;多线程。不包括“执行效率高”。 javas…

java 面向对象

java语言的特点:“完全的面向对象;可移植性”;安全性;多线程。不包括“执行效率高”。

javascript:不是纯净的面向对像语言。window,document.只有Extjs库,引入了面向对象的定义语法,才能编写类。

 解释型语言:边解释边执行,无需将程序编程成exe或class。例如:js,

编译型语言:需要编译成exe等格式的二进制文件。

java语言特殊:既是编译型又是解释型语言。

 

垃圾收集机制的作用和类名。System.gc().

机制:堆上的引用类型变量,如果一段时间没有被引用,则自动回收。栈上的引用类型变量是否会被回收?回收周期长。

java的9种原始数据类型:
 数值型:
 int 4
 long 8
 float 4
 double 8
 short 2
 byte 1
 char 2
 boolean 1
 void 无

 

强制转换:int i = (int) 1.001f, 由将高精度赋给低精度。

自动转换:低精度赋给高精度。

 

f和l和d的作用,是否可省略:

d可省略。l在没有溢出时可以省略。f不能省略。

引用类型和原始类型在作为函数入参时的区别。

a 引用类型的属性修改有效。原始类型以及原始类型对应的装箱类型及String对象修改都无效。

b 方法里面仅能地址中的值,无法改变地址本身。

c java方法入参都是“值类型”,分成”值拷贝“和引用类型对象地址”两种。

简要描述java的反射机制。在程序运行时根据“类名”创建该类的对象,可以陈列出该类的所有方法,属性及参数。

 

String和StringBuffer和StringBuilder的区别。

String不可变(地址里面的内容不能变)。
StringBuffer用append方法添加字符串。可变。线程安全。
StringBuilder线程不安全。

 

equals和==的区别:

a ==可以用在原始类型和引用类型,equals只能用在引用类型。

b equals是Object的方法,可以被子类重写。==无法被重写

c 对于字符串及装箱类型来说,equals比较值,==比较地址。

 

 

原始类型和装箱类型(属于引用类型)的区别。

 

数值型和字符串类型的相互转换(3种方法)。

 

 

面向对象三大特征及含义。

final,static,abstract的用法,是否能一起合用?

三种内部类:静态内部类,非静态内部类,匿名内部类的区别。|*|||||||||||||*|

四种访问限制的含义:public(所有都可以访问)>protected(同包都可,异包子类也可)–>默认(同包可)–>private(自己可).

 

类和对象的概念.

对象:具有明确的属性及行为的实体。

类:具有相同的属性及行为的实体集合。

接口:功能的集合。

对象的声明和定义的区别。

A a; //声明 declare

a = new B(); //定义或叫实例化

super关键字的两种用法:

(1) 子类的构造函数中,调用父类的构造函数。必须放在第1行。  super();//调用父类的无参构造,可以省略。

(2)子类的方法中,调用父类的方法。super.do();

 

this关键字的用法:this代表自己这个对象。有些编码规范中,调用自己的方法必须写this.do();

构造函数是否可重写:不能。是否可重载:可以。

重载和重写的区别:

a 重载发生在1个类里面 重写发生在子类中

b 重载要求方法名相同,参数列表不同。返回值没有限制。

重写要求方法名,参数列表及返回值都相同。

抽象类和接口的区别:

a is a vs has a

b 抽象类可以非静态的变量。接口只能有public final static 的变量。

c 抽象类可以包含其他实现的方法。抽象方法可以是public或protected。

接口的所有方法都是public的。

 

实现接口和继承类的区别。–implements(has a功能),extends(is a 是父类的继承)。

 

接口继承和类继承的区别–extends。

inteface IA extends IA1,IA2(一个接口可以继承很多接口)

class A extends P(类只能继承1个父亲)

 

java里面的常用类: String,Math,Random,Date和字符串的转换(SimpleDateFormat)。

java的两种随机数生成方法的区别

Math.rand()–返回0-1的double

Random rd = new Random(); rd.nextInt(n)–返回0到n-1。

java集合框架三个接口的关系:

Map–>Collection–>Iterator

 

写出集合框架的遍历方法 (List和set和map):a for,b 迭代器,c 简写的for。

List能用:a,b,c

Set能用:b,c

Map能用:b,c

ArrayList和静态数组的区别:

a ArrayList长度可变。静态数组不行

b ArrayList和LinkedList和vector的区别。

ArrayList:所有元素的内存连续;

ListedList:所有元素的内存不连续,前一个指向下一个。

Vector:比ArrayList加入线程同步支持。

class ConnectionPool
{
  private Vector<Connection> list;
}

List和Set的区别:

a List是有序的,可以用get(i)获得第i个元素。Set是无序的,无法用get(i) b List允许重复 ,Set不允许

HashMap和TreeMap的区别:TreeMap自动按key从小到大排。HashMap:不允许key重复.如果重复,put的返回值为原来key的value。 TreeMap可以通过重写比较器,允许key重复,只要比较器返回0.

 

HashMap和HashTable的区别:HashMap允许key为null,HashTable不允许。

 

重写 比较器,实现TreeSet和TreeMap的顺序重拍。看代码。 使用内部静态类,实现  Comparator接口。

 

实现文本文件读写的两种方式。

按字节读写:FileOutputStream–保存,fs.close();句柄。

按字符读写:FileWriter–保存, .记得bw.flush();bw.close();

 

实现二进制文件读写的两种方式。

a 让对象实现序列化接口.调用writeObject方法写入。

b 对象的每个属性都写入。DataOutputStream.

 

异常和错误的区别:错误一般来说难于捕获或难于恢复。比如:函数一直调用自己,堆栈溢出。

 

异常可以捕获,捕获后程序可以继续运行。

举几个运行时异常的子类(RunTimeException):ArrayIndexOutofBoundException–数组越界;

NullPointerException;Arithrim….数学异常。

注意:I/O异常不是运行期异常的子类。

 

 

finally的作用(强制执行),在finally中是否可以修改方法的返回值:finally中无法修改原来的返回值变量,但可以在finnaly用return来替代原来的返回值。。

 

throws和 throw的区别:throws声明该方法会抛出异常。

throw 是手动抛出异常。

 

什么叫做“指定泛型参数”.List<Student>,有哪两个好处?a 避免强制转换,提高运行速度 b 将运行期异常提早到编译期。

 

线程的两种实现方法:extends Thread /implements Runnable.

start()和 run()的区别:start()是开启一个新线程并运行run方法。run是在原来的线程运行run方法。

  MyThread t1 = new MyThread();
   MyThread t2 = new MyThread();
   t1.run();
   t2.run();//在上面语句执行完才跑。
   t1.start();//开启1个线程,执行t1.run方法
   t2.start();//开启1个线程,执行t2.run方法
  举例说明sleep和wait(notify)的区别 。
   sleep:让本线程进入睡眠,但没有释放同步锁。
   wait:将本线程挂起,释放同步锁。可以被其他线程的notify方法唤醒。
   class A
  {
    public synchronized void Do1()
   {
      Thread.Sleep(5000)
   }
    public synchronized void Do2()
   {
     wait(5000);
   }

  }
class MyThread implements Runnable
{
  private A a ;
  public void run()
 {
   a.Do1(); //执行10秒
   a.Do2();//执行5秒。
 }
}
main()
{
  A a = new A();
  MyThread t1 = new MyThread(a);
  MyThread t2 = new MyThread(a);
  t1.start();
  t2.start();
  10秒后,执行结束。
}


  String str1 = new String("aaa") 创建了几个对象。

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

jdbc和mybatis的区别

jdbc和mybatis的区别

jdbc和mybatis的区别 mybatis也是基于JDBC的。Java与数据库操作仅能通过JDBC完成。 mybat...
美团、58、百度、阿里面经(转)

美团、58、百度、阿里面经(转)

百度 一面: 自我介绍、 hashmap和hashtable区别、 对线程安全的理解、 讲讲web三大架构、 为什么要用...
软件测试工程师-面试题

软件测试工程师-面试题

  1、什么是软件测试?2’ 2、软件测试与软件质量保证的区别。10’ 3、报告软件缺陷时,测试人员要对软件缺...
spring面试集合

spring面试集合

问题清单: 什么是Spring框架?Spring框架有哪些主要模块? 使用Spring框架有什么好处? 什么是控制反转(...
Java中的注解是如何工作的?

Java中的注解是如何工作的?

自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如...
返回顶部