MyException - 我的异常网
当前位置:我的异常网» Java面试 » java面试核心基础(一)

java面试核心基础(一)

www.MyException.Cn  网友分享于:2015-06-25  浏览:0次
java面试核心基础(1)

1.下面代码的运行结果

String s1 = “helloworld”;

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

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

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

2.下面说法正确的是(C

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

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

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

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

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

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

分析:java.lang.Exceptionjava.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的成立么?成立

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

8.0.123的数据类型是(double

分析:0.123当然是double了,0.123f0.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中的关键字或保留字,所以NULL可以为class名;

(2)nulljava中的关键字,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(重载)

文章评论

做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
老程序员的下场
老程序员的下场
一个程序员的时间管理
一个程序员的时间管理
旅行,写作,编程
旅行,写作,编程
程序员应该关注的一些事儿
程序员应该关注的一些事儿
10个调试和排错的小建议
10个调试和排错的小建议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Java程序员必看电影
Java程序员必看电影
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员和编码员之间的区别
程序员和编码员之间的区别
那些争议最大的编程观点
那些争议最大的编程观点
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
鲜为人知的编程真相
鲜为人知的编程真相
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
漫画:程序员的工作
漫画:程序员的工作
为什么程序员都是夜猫子
为什么程序员都是夜猫子
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
 程序员的样子
程序员的样子
我的丈夫是个程序员
我的丈夫是个程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
每天工作4小时的程序员
每天工作4小时的程序员
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
编程语言是女人
编程语言是女人
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
代码女神横空出世
代码女神横空出世
我是如何打败拖延症的
我是如何打败拖延症的
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员的鄙视链
程序员的鄙视链
中美印日四国程序员比较
中美印日四国程序员比较
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
如何成为一名黑客
如何成为一名黑客
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有