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
分析:见继承关系图
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)流,位为一个单位对二进制的数据操作,不须要转换。
字符流都是以Reader/Writer结尾的,字节流都是以InputStream/OutputStream结尾的
详见Java Io流图:
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(重载)
java面试核心基础(1)的更多相关文章
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- java面试| 精选基础题(3)
每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...
- java面试| 精选基础题(2)
关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...
- Java线程核心基础(上)
Java线程核心基础(上) 一.实现多线程 根据Oracle官方文档,目前推荐的创建线程方法主要有两种,分别是继承Thread类和实现Runnable接口.通过阅读Thread类源码,可以发现二者不同 ...
- JAVA面试核心教程|Java面试基础知识点总结
Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么? byte——1 byte——Byte short——2 bytes——Short int——4 bytes——Integer lon ...
- java面试02——基础
1. JDK . JRE 和JVM有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境. JRE:Java Runtim ...
- Java面试专题-基础篇(1)
- Java面试准备基础篇_11.24
Java类加载机制 Java内存模型JMM 为什么 Redis 单线程能支撑高并发? 高并发下的接口幂等性解决方案! 面试官问:平常你是怎么对 Java 服务进行调优的? JAVA虚拟机(JVM)六: ...
- java面试|精选基础(1)
以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...
随机推荐
- struts2笔记01-环境搭建
1.官网下载struts2 struts-2.3.28-all.zip,这个包可谓应有尽有,以后全靠它了! 2.jar包怎么选? (1)struts-2.3.28-all\struts-2 ...
- Hibernate之dynamic-update
问题:设置了dynamic-update, 可是事实上并没有按照期望进行了update. 案例代码如下: 1.持久化对象 package com.jdw.hibernate.entities; imp ...
- poj 1769 Minimizing maximizer 线段树维护dp
题目链接 给出m个区间, 按区间给出的顺序, 求出覆盖$ [1, n] $ 至少需要多少个区间. 如果先给出[10, 20], 在给出[1, 10], 那么相当于[10, 20]这一段没有被覆盖. 令 ...
- 几种改变Activity回退栈默认行为的Intent Flag
FLAG_与LaunchMode相比最大的不同是临时性 1.FLAG_ACTIVITY_NEW_TASK: Developer.android.com的说法: (1)在新的task中启动这个Activ ...
- Oracle EBS-SQL (BOM-2):检查期间Bom的更改记录数.sql
Select MSI1.Segment1 上层编码, MSI1.Description 上层描述, MSI2.Segment1 ...
- SLC和MLC
SLC 和MLC分别是是Single Layer Cell 单层单元和Multi-Level Cell多层单元的缩写,SLC的特点是成本高.容量小.速度快,而MLC的特点是容量大成本低,但是速度慢.M ...
- 十几个remote control software
5 alternatives to LogMeIn Free for remote PC access VNC VNC, or Virtual Network Computing, isn’t its ...
- Effective Objective-C 读书笔记
一本不错的书,给出了52条建议来优化程序的性能,对初学者有不错的指导作用,但是对高级阶段的程序员可能帮助不是很大.这里贴出部分笔记: 第2条: 使用#improt导入头文件会把头文件的内容全部暴露到目 ...
- JavaScript之对象学习
对象是一种非常重要的数据类型,他是一种自包含的数据集合,包含在对象里面的数据可以通过属性和方法两种形式来访问; 1.属性是隶属于某个特定对象的变量; 2.方法是只有某个特定对象才能调用的函数; 而对象 ...
- 关于消息推送和service的一些调查-清理内存通知栏点击无响应
起因:做了两个带推送的app:HiApp和WeApp,前者个推,后者百度推送,但前者有一个小缺陷. 现象:两部手机 1.htcD820t手机,运行中的app利用自带的关闭最近程序后,通知栏不清理该ap ...