Java实习生面试题分享

1.Java有那些基本数据类型,String是否是基本数据类型,他们有何区别。java

Java语言提供了八种基本类型:sql

      六种数字类型(四个整数型,两个浮点型)数据库

              字节型byte 8位 短整型short 16位 整型int 32数组

              长整型long 64位 单精度float 32位 双精度double 64安全

      一种字符类型数据结构

              字符型char 8app

      还有一种布尔型ide

              布尔型:boolean 8位 可存储"True""false"函数

String自己就是一个对象而不是基本数据类型,String的变量名是对String类的引用。性能

2.字符串的操做:

  写一个方法,实现字符串的反转,如:输入abc,输出cba

public static String reverse(String s){

        int length=s.length();

        StringBuffer result=new StringBuffer(length);

        for(int i=length-1;i>=0;i--)

            result.append(s.charAt(i));

        return result.toString();

    }

  写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc

    String s = "bbbwlirbbb";

s.replaceAll("wlirbbb","hhtccc");

3.数据类型之间的转换

  如何将数值型字符转换为数字(IntegerDouble

使用Integer.parseInt()Double.parseDouble()方法。 

如何将数字转换为字符

  class my

{

int a=12;

Label label=new Label();

label.setText(String.valueOf(a));

}

  如何取小数点前两位,并四舍五入。

System.out.println("四舍五入取整:(3.856)="

     + new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));

4.日期和时间

  如何取得年月日,小时分秒

Date dat=new Date();

dat.getYear(); dat.getMonth(); dat.getDay(); dat.getHours(); dat.getMinutes(); dat.getSeconds();

  如何取得从1970年到如今的毫秒数

long now=dat.getTime();

  如何获取某个日期是当月的最后一天

DateFormate df=DateFormate.getInstance();df.Format(dat);

  如何格式化日期

DateFormate df=DateFormate.getInstance();

df.Format(dat);

5.数组和集合

    数组与集合的区别:一:数组声明了它容纳的元素的类型,而集合不声明。这是因为集合以object形式来存储它们的元素。二:一个数组实例具备固定的大小,不能伸缩。集合则可根据须要动态改变大小。三:数组是一种可读/可写数据结构没有办法建立一个只读数组。然而可使用集合提供的ReadOnly方   只读方式来使用集合。该方法将返回一个集合的只读版本。

6.文件和目录(I/O)操做

  如何列出某个目录下的全部文件

  如何列出某个目录下的全部子目录

  判断一个文件或目录是否存在

  如何读写文件

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

public class FileOpreate {

 

    public static void main(String [] args)

    {

        FileOpreate fo=new FileOpreate();

        try

        {

            

        //文件的写入

        /*String[] testStr=new String[50];

        for(int i=0;i<testStr.length;i++)

        {

         testStr[i]="个人测试数据00"+i;

        }

        fo.writeFile("D:\\","test.txt",testStr);

        */

        

        //文件的写入

        /*String str="测试";

        fo.writeFile("D:\\","test001.txt",str);*/

            

        //建立或者删除文件

        /*if(fo.createAndDeleteFile("D:\\","test001.txt"))

        {

            fo.createAndDeleteFile("D:\\","test002.txt");

        }*/

            

        //建立或者删除文件夹

        /*fo.createAndDeleteFolder("D:\\","2009-07-06");*/

        

        //输出一个文件内的文件名称

        /*fo.readFolderByFile("D:\\");*/

            

            

        //判断一个文件是不是空的

        /*fo.fileIsNull("D:\\","test002.txt");*/

        

        //读取所有的文件内容

        /*fo.readAllFile("D:\\","test.txt");*/

            

        //一行一行读取文件内容

        fo.readLineFile("D:\\","test.txt");

        }

        catch(Exception e)

        {

            e.printStackTrace();

        }

        

    }

7.Java多态的实现(继承、重载、覆盖)

多态可分为:

1)编译多态:主要是体如今重载,系统在编译时就能肯定调用重载函数的哪一个版本。

2)运行多态:主要体如今OO设计的继承性上,子类的对象也是父类的对象,即上溯造型,因此子类对象能够做为父类对象使用,父类的对象变量能够指向子类对象。所以经过一个父类发出的方法调用可能执行的是方法在父类中的实现,也多是某个子类中的实现,它是由运行时刻具体的对象类型决定的。

8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。

String str = new String("字符串".getBytes("GB2312"),"ISO-8859-1");

9.使用StringBuffer类与String类进行字符串链接时有何区别?

JAVA平台提供了两个类:StringStringBuffer,它们能够储存和操做字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可使用StringBuffer。典型地,你可使用StringBuffers来动态构造字符数据。

10.谈谈final, finally, finalize的区别。

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示老是执行。

finalizeObject类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,能够覆盖此方法提供垃圾收集时的其余资源回收,例如关闭文件等。

11.String s = new String("xyz");建立了几个String Object?

    两个,一个是string s,另外一个是”xyz”。

12.Java有没有goto?

gotojava中的保留字,如今没有在java中使用。

13.数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。Stringlength()这个方法。

14.OverloadOverride的区别。

override(重写)

1)方法名、参数、返回值相同。

2)子类方法不能缩小父类方法的访问权限。

3)子类方法不能抛出比父类方法更多的异常(但子类方法能够不抛出异常)

4)存在于父类和子类之间。

5)方法被定义为final不能被重写。

overload(重载)

1)参数类型、个数、顺序至少有一个不相同。  

2)不能重载只有返回值不一样的方法名。

3)存在于父类和子类、同类中。

15.abstract classinterface有什么区别?

Interface只能有成员常量,只能是方法的声明;

abstract class能够有成员变量,能够声明普通方法和抽象方法。

声明方法的存在而不去实现它的类被叫作抽象类(abstract class),它用于要建立一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的状况。不能建立abstract 类的实例。然而能够建立一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的全部抽象方法提供实现,不然它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类能够在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,全部方法都是抽象的。多继承性可经过实现这样的接口而得到。接口中的全部方法都是抽象的,没有一个有程序体。接口只能够定义static final成员变量。接口的实现与子类类似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)全部这种接口的方法。而后,它能够在实现了该接口的类的任何对象上调用接口的方法。因为有抽象类,它容许使用接口名做为引用变量的类型。一般的动态联编将生效。引用能够转换到接口类型或从接口类型转换,instanceof 运算符能够用来决定某对象的类是否实现了接口。

16.是否能够继承String?

String类是final类故不能够继承。

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

1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解所有问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2)继承:继承是一种联结类的层次模型,而且容许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类能够从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类能够从它的基类那里继承方法和实例变量,而且类能够修改或增长新的方法使之更适合特殊的须要。

3)封装:封装是把过程和数据包围起来,对数据的访问只能经过已定义的界面。面向对象计算始于这个基本概念,即现实世界能够被描绘成一系列彻底自治、封装的对象,这些对象经过一个受保护的接口访问其余对象。

4) 多态性:多态性是指容许不一样类的对象对同一消息做出响应。多态性包括参数化多态性和包含多态性。多态性语言具备灵活、抽象、行为共享、代码共享的优点,很好的解决了应用程序函数同名问题。

18.int    Integer  有什么区别?

Java 提供两种不一样的类型:引用类型和原始类型(或内置类型)。

Intjava的原始数据类型,

Integerjavaint提供的封装类。

Java为每一个原始类型提供了封装类。

原始类型封装类booleanBoolean  charCharacter  byteByte  shortShort  intInteger  longLong  floatFloat  doubleDouble

引用类型和原始类型的行为彻底不一样,而且它们具备不一样的语义。引用类型和原始类型具备不一样的特征和用法,它们包括:大小和速度问题,这种类型以哪一种类型的数据结构存储,当引用类型和原始类型用做某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

19.做用域public,private,protected,以及不写时的区别?

  

访问

Public

Protected

缺省的

Private

同类

同包

×

子类

×

×

通用性

×

×

×

 

20.java写一个冒泡排序。

    /**

* int数组进行升序排序

*

* @param intVal:要排序的数组

* @param asc:值为true,表示升序排序;传入值为false,表示降序排序

* @return 返回排序后的int数组

*/

public static int[] intArraySort(int [] intVal,boolean asc){

   int [] vals=intVal;

   int temp;

   if(vals.length>0){

    if(asc==true){

     for(int i=0;i<=vals.length-2;i++){

      for(int j=0;j<vals.length-i-1;j++){

       if(vals[j]>vals[j+1]){

        //升序排列

        temp=vals[j];

        vals[j]=vals[j+1];

        vals[j+1]=temp;

       }

      }

     }

    }else{

     for(int i=0;i<=vals.length-2;i++){

      for(int j=0;j<vals.length-i-1;j++){

       if(vals[j]<vals[j+1]){

        //降序排列

        temp=vals[j];

        vals[j]=vals[j+1];

        vals[j+1]=temp;

       }

      }

     }

    }

   }

   return vals;

}

21.short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1; s1+1运算结果是int型,须要强制转换类型)   short s1 = 1; s1 += 1;(能够正确编译)

22.floatfloat f=3.4是否正确?

不正确。精度不许确,应该用强制类型转换,以下所示:float f=(float)3.4 float f = 3.4f

java里面,没小数点的默认是int,有小数点的默认是 double;
23.ArrayListVector的区别,HashMapHashtable的区别。

ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,它们都容许直接按序号索引元素,可是插入元素要涉及数组元素移动等内存操做,因此索引数据快而插入数据慢,Vector因为使用了synchronized方法(线程安全),一般性能上较ArrayList差。

HashMapHashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap容许空(null)键值(key,因为非线程安全,效率上可能高于Hashtable

HashMap容许将null做为一个entrykey或者value,而Hashtable不容许。

HashMapHashtablecontains方法去掉了,改为containsvaluecontainsKey。由于contains方法容易让人引发误解。 Hashtable继承自Dictionary类,而HashMapJava1.2引进的Map interface的一个实现。

最大的不一样是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不须要本身为它的方法实现同步,而HashMap 就必须为之提供外同步。

24.ErrorException有什么区别?

error 表示恢复不是不可能但很困难的状况下的一种严重问题。好比说内存溢出。不可能期望程序能处理这样的状况。

exception 表示一种设计或实现问题。也就是说,它表示若是程序运行正常,从不会发生的状况。

25.statement preparestatement区别

1)建立时的区别:

   Statement stm=con.createStatement();

   PreparedStatement pstm=con.prepareStatement(sql);

执行的时候:

    stm.execute(sql);

    pstm.execute();

2pstm一旦绑定了SQL,pstm就不能执行其余的Sql,即只能执行一条SQL命令。

stm能够执行多条SQL命令。

3)对于执行同构的sql(只有值不一样,其余结构都相同),pstm的执行效率比较的高,对于异构的SQL语句,Statement的执行效率要高。

4)当须要外部变量的时候,pstm的执行效率更高.

26.写一个数据库链接类,包括查询及结果存储。

import java.sql.*;     //须要加入的包

//类的定义

class DBConnect {

    private String con1 = "sun.jdbc.odbc.JdbcOdbcDriver"; //链接SQL所须要的字符串

    private String url = "jdbc:odbc:test";

    private String user = "sa", password = ""; //这里请根据您的数据库用户和密码自行修改

    Connection con;           //用于链接数据库用的

    PreparedStatement ps;     //其实用Statement也行,PreparedStatement集成了Statement.

    ResultSet rs;             //一个集合,能够用于执行SQL命令

    //构造函数

    DBConnect() {

        try {

            Class.forName(con1); //Class.forName()用于将一些类加载到JVM

            this.Connect();   //函数调用

            try {

                this.execute();

            } catch (SQLException ex) {

                System.out.println(ex.toString());

            }

        } catch (ClassNotFoundException ce) {

            System.out.println(ce);

        }

    }

    public void Connect() {

        try {

            con = DriverManager.getConnection(url, user, password); //作这部以前先把ODBC配置好

            if (con != null) {

                System.out.println("Connection Sucessfully!");

            }

        } catch (SQLException ex) {

            System.out.println(ex.toString());

        }

    }

    public void execute() throws SQLException {

        ps = con.prepareStatement("select *from friends"); //SQL语句搞给ps

        rs = ps.executeQuery();                            //这里执行,以后让rs知道信息

        while (rs.next())                                 //这里必须加next(),偏移量移动.

        {

            System.out.print(rs.getString(2) + "\t");

            System.out.print(rs.getString(3) + "\t");

            System.out.print(rs.getString(4) + "\t");

            System.out.print(rs.getDate(5) + "\t");

            System.out.print(rs.getInt(6) + "\t");

            System.out.println("");

        }

    }

    public void close()                        //用于释放资源,Java里没有析构函数,可是经过重写protected void finalize(),

    {                                        //以后在调用System.runFinalization()System.gc()能够提醒JVM执行finalize()以释放,

        try{                                 //在之前的J2SE版本里能够经过以上方法调用finalize(),但目前的J2SE5.0只能提醒JVM,JVM不必定执行

        rs.close();                          //最好的方案仍是本身写析构close();

        ps.close();

        con.close();

        }catch(SQLException ce)

        {

            System.out.println(ce.toString());

        }

        System.out.println("Connection released!!!");

    }

    public static void main(String[] args) {

        DBConnect dbc=new DBConnect();       

        dbc.close();

    }

}

相关文章
相关标签/搜索