十个最常见的经典JAVA基础面试 笔试题
Java面试题大全(答案版)

Java面试题大全(答案版)1、一个".java"源文件中是否可以包括多个类(不是内部类)有什么限制可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致2、&和&&的区别。
&和&&都可以用作逻辑与;&&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式;&还可以用作位运算符,当&操作符两边的表达式不是boolean 类型时,&表示按位与操作。
3、Java有没有gotojava中的保留字,现在没有在java中使用。
4、在JAVA中,如何跳出当前的多重嵌套循环break+变量控制与 return5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上不能作用在long上,也不能作用在String上6、short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。
s1+=1不会报,因为JVM 会对它特殊处理(自动强转)7、char型变量中能不能存贮一个中文汉字为什么可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的8、编程题: 用最有效率的方法算出2乘以8等於几2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的9、请设计一个一百亿的计算器思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。
10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变引用变量不能变11、"=="和equals方法究竟有什么区别==和equals方法都可以用来比较两个对象是否是同一个对象。
java经典面试题汇总

Java基础方面:1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一package 子孙类其他packagepublic √√√√protected √√√ ×friendly √√ × ×private √ × × ×不写时默认为friendly2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)答:匿名的内部类是没有名字的内部类。
不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现3、Static Nested Class 和 Inner Class的不同答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。
Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。
注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象4、&和&&的区别答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)5、Collection 和 Collections的区别答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作6、什么时候用assert答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。
在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。
JAVA程序员笔试面试题汇总及答案

1. 【基础题】请描述访问控制符的各自作用域与区别答:√√√√√√√√√一、名词解释二、问答题1. 【中等题】请说出ArrayList和Vector的区别答:主要从二方面来说.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却是原来的一半2. 【中等题】请说出HashMap和Hashtable的区别答:HashMap与HashT able主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value3. 【基础题】Collection 和Collections的区别答:Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口第十八章输入输出笔试题一、填空题1. 【基础题】File对象的isFile()方法作用是判断是否是文件,getAbsolutePath() 方法作用是获取文件或目录的绝对路径。
2. 【基础题】BufferedReader和BufferedWriter以字符流的方式读写文本文件,且效率更高。
3. 【基础题】FileInputStream和FileOutputStream以字节流的方式读写文本文件。
二、选择题1. 【基础题】下列哪个类是实体类(BC )A. InputStreamB. PrintStreamC. SocketD. ReaderE. DataInput2. 【提高题】请选择下列程序的运行结果(A)public class TestIOapp{public static void main(String [] args) throws IOException{StringReader stingin = new StringReader("test");LineNumberReader in = new LineNumberReader(stingin);PrintWriter out = new PrintWriter(System.out);out.println(in.readLine());out.flush();}}A. testB. test:1C. 1:testD. 1 test3. 【提高题】请选择下列程序的运行结果( B )public class TestIOapp{public static void main(String [] args) throws IOException{RandomAccessFile file = new RandomAccessFile("test.txt","rw");file.writeBoolean(true);file.writeInt(123456);file.writeInt(7890);file.writeLong(1000000);file.writeInt(777);file.writeFloat(.0001f);file.seek(5);System.out.println(file.readInt());}}A. 123456B. 7890C. 1000000D. 777E. 0001三、名词解释四、问答题1. 【中等题】请说出java.io.reader和java.io.inputstream的区别答:java.io.Reader 和java.io.InputStream 组成了Java 输入类。
java常见基础知识笔试题

java常见基础知识笔试题Java常见基础知识笔试题:一、Java基础语法1. 请解释Java中的变量和常量有什么区别?2. 请问Java中的关键字有哪些?请列举出来。
3. 请解释Java中的注释有哪几种形式?4. 请说一下Java的数据类型有哪些?5. 请解释Java中的运算符有哪些?二、面向对象1. 请解释面向对象的三大特性是什么?2. 请解释Java中的继承,多态,封装和抽象类分别是什么?3. 请解释Java中的接口是什么?4. 请解释Java中的重载和重写有什么区别?5. 请解释Java中的构造方法和普通方法有何区别?三、异常处理1. 请解释Java中的异常处理机制是什么?2. 请解释Java中的异常分类有哪些?3. 请解释Java中的异常处理关键字try,catch,finally的作用分别是什么?4. 请解释Java中的自定义异常是什么?5. 请解释Java中的异常链是什么?四、集合类1. 请解释Java中的集合类有哪些?2. 请解释Java中的ArrayList和LinkedList的区别。
3. 请解释HashSet和TreeSet的区别。
4. 请解释HashMap和TreeMap的区别。
5. 请解释Java中如何遍历一个集合?五、多线程1. 请解释Java中的线程是什么?2. 请解释Java中的线程实现方式有哪些?3. 请解释Java中的线程池是什么?4. 请解释Java中的synchronized关键字是做什么的?5. 请解释Java中的volatile关键字是做什么的?六、IO流1. 请解释Java中的IO是什么?2. 请解释Java中的字节流和字符流有什么区别?3. 请解释Java中的输入流和输出流有什么区别?4. 请解释Java中的文件读写操作步骤是什么?5. 请解释Java中的RandomAccessFile是什么?以上是java常见基础知识笔试题。
希望这些问题能够帮助读者熟悉Java的基础语法、面向对象、异常处理、集合类、多线程以及IO流的相关知识,在笔试中更好地发挥自己的能力。
java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
java模拟面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
java笔试题大全带答案(经典11题)

java笔试题大全带答案(经典11题)1.不通过构造函数也能创建对象吗()A. 是(推荐学习:java面试题大汇总)B. 否分析:答案:AJava创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用ng.Class或者ng.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
(1)和(2)将显式调用构造函数;(3)它是内存中已有对象的副本,所以不会调用构造函数;(4)类的对象是从文件中恢复的,不会调用构造函数。
(1)和(2)将显式调用构造函数;(3)它是内存中已有对象的副本,所以不会调用构造函数;(4)类的对象是从文件中恢复的,不会调用构造函数。
2.下面哪些是对称加密算法()A. DESB. MD5C. DSAD. RSA分析:答案:A分析:常用的对称加密算法有:DES、3DES、RC2、RC4、AES 常用的非对称加密算法有:RSA、DSA、ECC使用单向散列函数的加密算法:MD5、SHA3.下面的代码段,当输入为2的时候返回值是()public static int get Value(int i){int result=0;switch(i){case 1:result=result +icase 2:result=result+i*2case 3:result=result+i*3}return result;}登录后复制A. 0B. 2C. 4D. 10答案:C分析:result = 0 + 2 * 2;4.以下Java代码段会产生几个对象public void test(){String a="a";String b="b";String c="c";c=a+""+b+""+c;System.out.print(c);}登录后复制分析:答案: 一个对象,因为编译期进行了优化,3个字符串常量直接折叠为一个5.Math.round(-11.2)的运行结果是。
JAVA面试经典试题及答案

JAVA面试经典试题及答案一基础篇1.谈谈final,finally,finalize的区别final是一个修饰符,修饰类的时候表示类不可继承,所以一个类不可能既是abstract又是final的;修饰变量的时候表示这个变量不可被更改并且必须赋初始值;修饰方法的时候表示方式不可被重写。
finally通常和try-catch一起,在finally里代码无论是否发生异常都会执行到finalize是一个方法名。
方式是定义在Object类中,在对象从内存中释放之前会调用此方法进行一些必要的清理工作。
2.Annoy Inner Class(匿名类)是否可以extends(继承)其他类,是否可以implements(实现)interface接口?Annoy Inner Class由于没有类名所以不可以extends其他类;可以实现interface3.Static Nested Class和Inner Class的不同Static Nested Class不需要外部类的实例来创建内部类的实例;内部类不能访问外部类的非静态方法;它能具有静态的数据,属性,和匿名内部类。
4.&和&&的不同&表示位运算符;&&表示逻辑运算符;5.HashMap和Hashtable的区别HashMap允许一个null或者多个null作为key,而Hashtable不行Hashtable是线程同步的,而HashMap不是的HashTable的原理:通过节点的关键码确定对象的存储位置。
给定节点的关键码k,通过一定的散列函数H(k),得到散列值,这个值就是节点的存储地址6.Colleciton和Collections的区别Collection在java.util下面,是所有集合类的父接口Collections也在java.util下面,他封装了集合类的一些操作7.什么时候用assert?assert是一条包含布尔表达式的语句,程序运行到当前语句的时候假定布尔返回值是true,如果是false则会抛出异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于 short s1 = 1; s1 += 1;由于 += 是 java 语言规定的运算符,java 编译器会对它进行特殊处 理,因此可以正确编译。
7、char 型变量中能不能存贮一个中文汉字?为什么?
char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型 变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集中,那么,这 个 char 型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节,所以,char 类型的变 量也是占用两个字节。
NullPointerException 异常。If(x==33 & ++y>0) y 会增长,If(x==33 && ++y>0)不会增长,&还可以
用作位运算符,当&操作符两边的表达式不是 boolean 类型时,&表示按位与操作,我们通常使用 0x0f 来 与一个整数进行&运算,来获取该整数的最低 4 个 bit 位,例如,0x31 & 0x0f 的结果为 0x01。
备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理 解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。
8、用最有效率的方法算出 2 乘以 8 等於几?
2 << 3,因为将一个数左移 n 位,就相当于乘以了 2 的 n 次方,那么,一个数乘以 8 只要将其左移 3 位即可,而位运算 cpu 直接支持的,效率最高,所以,2 乘以 8 等於几的最效率的方法是 2 << 3。
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
2、Java 有没有 goto?
java 中的保留字,现在没有在 java 中使用。
3、说说&和&&的区别。
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。&&还具有短路的功能,即如果 第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str != null && !str.equals(“”))表达式, 当 str 为 null 时,后面的表达式不会执行,所以不会出现 NullPointerException 如果将&&改为&,则会抛出
10、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以 改变的。例如,对于如下语句:
final StringBuffer a=new StringBuffer("immutable");
6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于 short s1 = 1; s1 = s1 + 1; 由于 s1+1 运算时会自动提升表达式的类型,所以结果是 int 型, 再赋值给 short 类型 s1 时,编译器将报告需要强制转换类型的错误。
十个最常见的经典 Java 基础面试、笔试题
发布时间: 2011-01-04 11:27:26 作者:张孝祥 来源: 程序员网校 浏览次数:262880 我要评 论(2)
摘要: 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?Java 有没有 goto? 说说&和&&的区别,等经典 Java 基础面试题。
ok: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.println("i=" + i + ",j=" + j);
if (j == 5) break ok;
} }
另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环 体代码的控制,例如,要在二维数组中查找到某个数字。
} }
5、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
在 switch(expr1)中,expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以 是 int 基本类型或 Integer 包装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这 些类型的包装类型也是可以的。显然,long 和 String 类型都不符合 switch 的语法规定,并且不能被隐式转 换成 int 类型,所以,它们不能作用于 swtich 语句中。
int arr[][] = { { 1, 2, 3 }, { 4, 5, 6, 7 }, { 9 } }; boolean found = false; for (int i = 0; i < arr.length && !found; i++) {
for (int j = 0; j < arr[i].length; j++) { System.out.println("i=" + i + ",j=" + j); if (arr[i][j] == 5) { found = true; break; }
备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理 解透彻深入、实际经验丰富。
4、在 JAVA 中如何跳出当前的多重嵌套循环?
在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码 中使用带有标号的 break 语句,即可跳出外层循环。例如,
} }
备注:要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看 jdk 中自带的 java. math.BigInteger 类的源码。面试的人也知道谁都不可能在短时间内写出这个类的完整代码的,他要的是你 是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,你不要因为自己无法写出完整的最终 结果就放弃答这道题,你要做的就是你比别人写得多,证明你比别人强,你有这方面的思想意识就可以了, 毕竟别人可能连题目的意思都看不懂,什么都没写,你要敢于答这道题,即使只答了一部分,那也与那些 什么都不懂的人区别出来,拉开了距离,算是矮子中的高个,机会当然就属于你了。另外,答案中的框架 代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很精准, 这也是能力、经验、专业性、英语水平等多个方面的体现,会给人留下很好的印象,在编程能力和其他方 面条件差不多的情况下,英语好除了可以使你获得更多机会外,薪水可以高出一千元。
}
public BigInteger add(BigInteger other) { }
public BigInteger subtract(BigInteger other) { }
public BigInteger multiply(BigInteger other) { }
public BigInteger divide(BigInteger other) {
9、请设计一个一百亿的计算器
首先要明白这道题目的考查点是什么,一是大家首先要对计算机原理的底层细节要清楚、要知道加 减法的位运算原理和知道计算机中的算术运算会发生越界的情况,二是要具备一定的面向对象的设计思想。
首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范 围的,为了便于讲解和理解,我们先以 byte 类型的整数为例,它用 1 个字节进行存储,表示的最大数值 范围为-128 到+127。-1 在内存中对应的二进制数据为 11111111,如果两个-1 相加,不考虑 Java 运算时 的类型提升,运算后会产生进位,二进制结果为 1,11111110,由于进位后超过了 byte 类型的存储空间, 所以进位部分被舍弃,即最终的结果为 11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。 -128 在内存中对应的二进制数据为 10000000,如果两个-128 相加,不考虑 Java 运算时的类型提升,运算 后会产生进位,二进制结果为 1,00000000,由于进位后超过了 byte 类型的存储空间,所以进位部分被舍 弃,即最终的结果为 00000000,也就是 0,这样的结果显然不是我们期望的,这说明计算机中的算术运算 是会发生越界情况的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于 Java 中涉及表达 式运算时的类型自动提升,我们无法用 byte 类型来做演示这种问题和现象的实验,大家可以用下面一个使 用整数做实验的例子程序体验一下:
实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:
param.append("a");
Hale Waihona Puke 1.这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数
2.有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中
3.提供加减乘除的功能
public class BigInteger { int sign; byte[] val;