zoukankan      html  css  js  c++  java
  • java面试题

    一:学习Java基础的目的?

      一、掌握基本的Java语言底层编码方法,同时掌握Java这门语言的编程思想,为了后期学习JavaEE打下基础,要不然在学习JavaEE的时候,连封装,继承,多态都不懂.
      二、在学习完JavaSE和JavaEE后招工作的时候能够答上面试题和笔试题(Java基础在面试的过程中也占不小的一部分)。

    二:String是最基本的数据类型吗?

       String 是引用数据类型。基本数据类型包括byte、int、char、long、float、double、boolean和short。java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类,JDK1.5版本之后出现了StringBuilder,StringBuilder是线程不同步的,Stringbuffer是线程同步的,开发建议使用StringBuilder,,提高了效率。

    三:String 和StringBuffer的区别

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

    四:Java语言的基础开发工具是:( JDK ),集成开发工具是: ( Eclipse )

    五:已知字符a的编码是97,大写字符A的编码是65,而且大写字符和小写字符的编码都是连续的,则小写字符e和大写字符E的编码依次是:(101,69)

     

    六:修改以下代码中的错误:

      char c = 100000;数值超出char的取值范围 

    七:Java有没有goto?

      java中的保留字,现在还没有在java中使用。其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。

    八:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

      可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

    九:在Java中,字符串是作为 对象 出现的。

    十:是否可以继承String类?

        String是被final修饰的最终类,不能被继承

     

     十一:程序结果:

    public class Test extends Fu {
    	public static void main(String[] args) {
    		int i = 0;
    		Fu f = new Test();
    		Test t = new Test();
    		for(f.show('A');f.show('B') && (i<2);f.show('C')){
    			i++;
    			t.show('D');
    		}
    		
    	}
    	boolean show(char a){
    		System.out.println(a);
    		return false;
    	}
    }
    class Fu{
    	boolean show(char a){
    		System.out.println(a);
    		return true;
    	}
    }
    //结果为A B
    

      

     1 public class Test extends Fu {
     2     public static void main(String[] args) {
     3         A a = new B();
     4         System.out.println(a.func());//编译失败,因为a所属的A接口没有定义func方法
     5     }
     6 }
     7 interface A{}
     8 class B implements A{
     9     public String func(){
    10         return "func";
    11     }
    12 }
     1 public class Test extends Fu {
     2     public static void main(String[] args) {
     3         A a = get();//相当于   A a = new B();
     4         System.out.println(a.test());//编译失败,因为a所属的A接口没有定义test方法
     5     }
     6     static A get(){
     7         return new B();
     8     }
     9 }
    10 interface A{}
    11 class B implements A{
    12     public String test(){
    13         return "yes";
    14     }
    15 }
     1 public class Test extends Super {
     2     public static void main(String[] args) {
     3         int i = 4;
     4         Super d = new Test("A");
     5         System.out.println(d.i);
     6     }
     7     public Test(String a){
     8         //super();//走的是父类的空参数构造函数
     9         System.out.println("C");
    10         i+=5;
    11     }
    12 }
    13 class Super{
    14     int i = 0;
    15     public Super(String a){
    16         System.out.println("A");
    17         i = 1;
    18     }
    19     public Super(){
    20         System.out.println("B");
    21         i+=2;
    22     }
    23 }
    24 //结果是B C 7
     1 public class Test {
     2     public static void main(String[] args) {
     3         //补足代码,调用两个函数,用匿名内部类
     4         Inter in = new Inter(){
     5             public void func() {
     6             }
     7             public void show(int a, int b) {
     8             }
     9         };
    10         in.func();
    11         in.show(3, 5);
    12     }
    13 }
    14 interface Inter{
    15     void show(int a,int b);
    16     void func();
    17 }
     1 public class Test {
     2     public static void main(String[] args) {
     3         TD.Inner ti = new TD().new Inner();
     4         ti.show();
     5     }
     6 }
     7 class TD{
     8     int y = 6;
     9     class Inner{
    10         static int y = 3;//编译失败,非静态内部类中不能有静态成员
    11         void show(){
    12             System.out.println(y);
    13         }
    14     }
    15 }
     1 class fu{
     2     int num = 4;
     3     void show(){
     4         System.out.println("showfu");
     5     }
     6 }
     7 class zi extends fu{
     8     int num = 5;
     9     void show(){
    10         System.out.println("showzi");
    11     }
    12 }
    13 class T{
    14     public static void main(String[] args){
    15         fu f = new zi();
    16         zi z = new zi();
    17         System.out.println(f.num);//4
    18         System.out.println(z.num);//5
    19         f.show();//showzi
    20         z.show();//showzi
    21     } 
    22 }

    十二:写出错误答案错误原因,用单行注释的方式

     1 class Demo{
     2     int show(int a,int b){
     3         return 0;
     4     }
     5 }
     6 下面那些函数可以在Demo的子类中存在
     7 A.public int show(int a ,int b){return 0;}//可以,覆盖
     8 B.private int show(int a ,int b ){return 0;}//不可以,权限不够
     9 C.private int show(int a,long b){return 0;}//可以,子类特有的方法
    10 D.public short show (int a,int b){return 0;}//不可以,调用的不确定性,当调用show方法是不知道返回short 还是int
    11 E.static int show(int a ,int b){return 0;}//不可以,静态只能覆盖静态 

    十三:写出this关键字的含义,final有哪些特点

    十四:

    十五:多线程面试题

     1 class Test implements Runnable{
     2     public void run(Thread t){
     3     }
     4 }
     5 //如果错误 错误发生在哪一行?错误在第一行,应该被abstract修饰,因为run方法没有被覆盖
     6 
     7 
     8 class ThreadTest{
     9     public static void main(String[] args) {
    10 
    11         new Thread(new Runnable(){
    12             public void run(){
    13                 System.out.println("runnable run");
    14             }
    15         })
    16         {
    17             public void run(){
    18                 System.out.println("subThread run");
    19             }
    20         }.start();//结果是subThread run
    21 
    22 
    23         /*
    24         new Thread()
    25         {
    26             public void run()
    27             {
    28                 for(int x=0; x<50; x++)
    29                 {
    30                     System.out.println(Thread.currentThread().getName()+"....x="+x);
    31                 }
    32 
    33             }
    34         }.start();
    35         
    36         for(int x=0; x<50; x++)
    37         {
    38             System.out.println(Thread.currentThread().getName()+"....y="+x);
    39         }
    40         Runnable r = new Runnable()
    41         {
    42             public void run()
    43             {
    44                 for(int x=0; x<50; x++)
    45                 {
    46                     System.out.println(Thread.currentThread().getName()+"....z="+x);
    47                 }
    48             }
    49         };
    50         new Thread(r).start();
    51 
    52         */
    53         
    54     }
    55 }
  • 相关阅读:
    java中传值与传引用
    microsofr visual studio编写c语言
    openfile学习笔记
    在 Windows 和 Linux(Gnome) 环境下 从命令界面打开网页的方式
    使用vsphere client 克隆虚拟机
    route命令
    linux rpm问题:怎样查看rpm安装包的安装路径
    【leetcode】415. 字符串相加
    【leetcode】面试题 17.01. 不用加号的加法
    【leetcode】989. 数组形式的整数加法
  • 原文地址:https://www.cnblogs.com/LO-ME/p/3561613.html
Copyright © 2011-2022 走看看