java面试核心基础(1)

1.以下代码的执行结果

String s1 = “helloworld”;

String s2 = “hello” + new Stirng(“world”);

System.out.println(s1 == s2);

分析:false,s1 == s2这比較的是两个对象的地址,而不是值。s2中存在new Stirng(“world”),该语句会新开辟一块内存来存放world字符串,因此,s1与s2的地址不同

2.以下说法正确的是(C)

A.class中的构造器不能省略

B.构造器必须和class同名,方法不能与class同名

C.构造器在一个对象被new时运行

D.一个class仅仅能有一个构造器

分析:class中的构造器不写,默认存在一个空构造器(无參);class中的方法是能够喝class同名的,仅仅只是非常少有人将class中的方法名定义成class名,方法和构造器唯一的差别就是构造器没有返回值;一个class可有多个构造器,通过參数的不同来加以区分。

3.java.lang.Exception类是继承自(Throwable类)的

分析:java.lang.Exception和java.lang.Ecxception都是继承自Throwable类的。Throwable类是全部java异常类的基类;java中的异常分为执行时异常(在程序编写的过程中难以察觉,仅仅有在程序实际执行的阶段才干发现,如:数组越界。空指针,分母为0等)和编译时异常(在程序编写的过程中就须要程序猿去处理。须要为其加入try/catch语句块,不加入则编译不通过,如:FileNotFoundException等)。

4.以下代码的执行结果

String []a = new String[10];

System.out.println(a[0]);

int []b = new int[10];

System.out.println(b[1]);

结果:

null

0

分析:第一句语句编译之后。会在栈中开辟一块内存来放字符串数组变量a,可是数组中的元素未初始化不论什么值,因此a[0]...a[9]均为默认值null;同理。int型数组中的元素也未初始化值。所以,b[0]...b[9]均为默认值0

5.以下代码的执行结果

class A{

public static void main(String args[]) {        Thread t = new Thread() {            public void run() {                test();            }        };        t.run();        System.out.print("Test");     }    public static void test() {        System.out.print("test");    }

}

结果:testTest

分析:首先实例化一个Thread对象并实现run方法(当一个线程開始运行时会默认去运行run方法),然后t.run()运行不过Thread对象中的run方法运行,而非开启一个线程。开启线程用t.start()方法。运行后打印test,最后是紧接着打印Test。

6.以下说法正确的是(AB)

A LinkedList继承自List

B HashSet继承自AbstractSet

C AbstractSet继承自Set

D WeakMap继承自HashMap

分析:见继承关系图

http://img.blog.csdn.net/20140907123055043?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhlbmcwNTE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

7.存在i使i+1<i的成立么?成立

分析:如果i为int类型,当i+1之后就超出int类型的数值范围(溢出)时。此时i+1就会变为负数,显然负数<正数

8.0.123的数据类型是(double)

分析:0.123当然是double了。0.123f或0.123F才是float

9.以下哪个是面向字符的输出流(A)

A.BufferedWriter

B.FileInputStream

C.ObjectInputStream

D.InputStreamReader

分析:java中的IO流分为字符(character)和字节(byte)流,面向字符的操作是以字符为单位对数据操作(read时将二进制转换为字符,write时将字符转换为二进制数据),面向字节的操作是以8位为一个单位对二进制的数据操作,不须要转换。

字符流都是以Reader/Writer结尾的,字节流都是以InputStream/OutputStream结尾的

详见Java Io流图:

http://img.blog.csdn.net/20140907123109536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhlbmcwNTE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

10.谈谈对java中接口(interface)的理解

分析:接口是一类事物的属性和行为的抽象,是统一的抽象。既然是统一的,那就不能存在变量,因此,接口中的属性都是public static final的,行为都是public abstract的。

(1)接口表明了对外的公共的服务,因此接口中的属性和行为均为public的,谁都可使用;

(2)接口仅仅是告诉外界一个抽象来描写叙述能做什么。而详细里面的实现是不说明的,因此接口中的行为都是abstract的;

(3)接口中不包括详细的实现细节,因此不能实例化,也就没有实例变量的存在。

(4)接口中若存在仅可存在常量且必须初始化值。

11.Java中创建对象的有几种方法?各自是什么?

分析:共4种。例如以下:

(1)new语句来创建对象(调用构造函数)

(2)反射机制,调用Class类或Constructor类的newInstance()实例方法(调用构造函数)

(3)调用clone方法(是对内存上对象的clone,不调用构造函数)

(4)反序列化(调用ObjectInputStream对象的readObject()方法,是从文件里还原类对象)

12.以下的代码有问题么,若没问题。执行结果是?

public class NULL {    public static void t(){        System.out.println("ttt");    }    public static void main(String[] args) {        ((NULL)null).t();

System.out.println(((NULL)null));    }}

结果:

ttt

null

分析:

(1)NULL不是java中的keyword或保留字。所以NULL能够为class名;

(2)null是java中的keyword。null值能够转换为不论什么的类型,可是转换为之后依旧为null(无效对象)值,此外。t函数为static。可直接类名.函数名来调用,因此,main函数中第二条语句能够正常运行。打印null;(若函数t不是static,程序就报错了)

13.谈下静态代码块,构造代码块。构造函数的运行顺序

静态代码块先运行,最后是构造代码块和构造函数运行(两者绑定,内部顺序为先构造代码块,后构造函数)

分析:当一个类载入完成之后,从父类到子类。从上到下。先要运行静态代码块,完成之后去运行main函数,若存在new对象的语句,则运行绑定的构造代码块和构造函数。

注意:静态代码块有且仅运行一次

14.以下代码的执行结果?

public class A{

public static void main(String[] args){

String str;

System.out.println(“” + str);

}

}

分析:以上代码不会编译通过,若str不被初始化,是不能打印输出的,java中的基本类型或对象均须要数据化,这不同于类的属性(成员变量)。

接下来再看以下的代码:

public class A{

static String str;

public static void main(String[] args){

System.out.println(“” + str);

}

}

分析:该代码就会编译通过。因为str为类的属性,因此打印出来为str的默认值null

15.Java中不存在引用传递。仅仅有值传递。

(不管是对象、基本类型或数组,在函数中均不能改变实际所在的地址。仅能改变当中的值)

16.Java中的String类能否够继承?不能够

分析:String类是final的,故不能够继承

17.Java中的构造器能够被override(重写)么?不能够

分析:java的构造器不能够继承,因此不能够override,但能够overload(重载)

时间: 2024-08-08 17:54:40

java面试核心基础(1)的相关文章

java面试复习基础

*基于javaGuide java基础 重载(override)要求子类的返回值小于父类(类型相同),修饰符使用范围也大于分类,抛出异常小于父类. 静态方法不能调用类非静态方法,因为静态方法可以在不生成对象的时候直接调用. 默认构造方法,因为子类构造的时候也调用super()父类,所以需要增加一个默认构造函数,避免编译出错. java只有值传递:按值调用,按引用调用(其实也是按值调用,因为传的是一个指针地址) 线程状态:初始状态->就绪状态->运行状态.阻塞状态.等待状态.超时等待状态->

java面试笔试基础题目

JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父

Java面试之基础一

1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境. JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境. 具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具.简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你

Java面试总结-基础篇2

1. mvn的dependency-management dependency-management是声明依赖,不实际引入,主要用于在父依赖中统一各依赖的版本,否则,各个子模块在引用同一依赖时,难免会出现版本混乱的情况.类似于类继承和重写的关系 2. springboot优化了哪些 @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan1. 简化启动过程2. 约定大于配置,简

Java面试-常见基础笔试题目

1. Vector, ArrayList, LinkedList的区别 Vector:①长度可变,以类似数组的形式存储于内存中,线程安全(同步),因为其大部分方法都有synchronized 关键字,正因为是同步的,所以进行频繁的数据操作时,必然会导致性能的下降. ②当增加的元素长度超过Vector 长度时,增加原来一倍的长度. ③如果是单线程应用,推荐使用ArrayList 来代替Vector 效率更高. ④如果是多线程应用,可以使用Vector 来代替ArrayList 实现同等功能,且能保

关于Java面试知识点解析——JVM基础篇

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视. 准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说).今天给大家分享下 Java面试知识点解析--JVM基础篇 1)Java 是如何实现跨平台的? 注意:跨平台的是 Java 程序,而不是 JVM.JVM 是用 C/C++ 开发的,是

Java面试求职之Java编程基础

Java编程基础 小编目前大三在读,专业电子系.由于对编程感兴趣还有就是对本专业前途的不乐观,还是勇敢的加入所谓的码农之路.学习Java也有一段时间了,快要放假了,想找家公司实习一下.至目前为止,已经面试了好几家公司了,大的有像腾讯.百度.联想这样的大公司:小的也有只有10几个员工的创业型公司.拿到过offer.也有碰壁连面试机会都没得到的. 下面就是一些对面试官面试时问的问题做的一些总结和自己搜集的一些知识点. Java概述和开发环境 Java开发包的总类            随着Java语

【Java基础】Java面试题目整理与解说(二)

1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的差别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

【Java基础】Java面试题目整理与讲解(二)

1.Collection 和 Collections 的区别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的区别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程