java高级工程师_面试题和答案
高级Java工程师面试题及答案
高级Java工程师面试题选择题各2分共44分
1.下列说法正确的是
A. Java语言不区分大小写
B. Java程序以类为基本单位
C. JVM为Java虚拟机JVM的英文缩写
D. 运行Java程序需要先安装JDK
答案:B,C,D
2.下列说法中错误的是
A. Java语言是编译执行的
B. Java中使用了多进程技术
C. Java的单行注视以//开头
D. Java语言具有很高的安全性
答案:A,B
3.下面不属于Java语言特点的一项是
A. 安全性
B. 分布式
C. 移植性
D. 编译执行
答案:D
4.下列语句中,正确的项是
A . int $ e,a,b=10;
B. char c,d=’a’;
C. float e=0.0d;
D. double c=0.0f;
答案ABD
5.一个int 类型的常量和一个byte类型常量做减法,结果的类型是
A. int
B. byte
C. char
D. float
答案 A
6.下列程序段的输出结果是
public class Expressions{
void printExpr(){
int x=3,y=4,z=5;
System.out.println(x+y+z);
}
}
A. xyz
B. x+y+z
C. 12
D. 9
答案 C
7.下列关于for循环和while循环的说法中哪些是不正确的?
A. for循环能实现的操作,while循环也都能实现
B. for循环判断条件一般是非程序结果
C. while循环判断条件一般是程序结果
D. 两种循环结构中都必须有循环体,循环体不能为空
答案ABC
8.以下程序段执行后的K值为
java高级工程师面试题及答案完整版
j a v a高级工程师面试题
及答案
集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]
一:选择题
1. 关于以下程序代码的说明正确的是( D )
1.class HasStatic{
2. private static int x=100;
3. public static void main(String args[ ]){
4. HasStatic hs1=new HasStatic( );
5. hs1.x++;
6. HasStatic hs2=new HasStatic( );
7. hs2.x++;
8. hs1=new HasStatic( );
9. hs1.x++;
10. HasStatic.x- -;
11. (“x=”+x);
12. }
13. }
A、 5行不能通过编译,因为引用了私有静态变量
B、 10行不能通过编译,因为x是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102
2. 下列关于for循环和while循环的说法中哪个是正确的( B )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
3. 以下选项中循环结构合法的是( C )
A、while (int i<7)
{ i++;
(“i is “+i);
}
B、 int j=3;
while(j)
{
(“ j is “+j);
java高级工程师 面试题
java高级工程师面试题
Java高级工程师面试题
一、简介
Java高级工程师是指具备扎实的Java编程基础、熟悉Java常用开
发框架、熟悉面向对象思想及设计模式,并能独立完成复杂Java项目
开发的专业人员。在Java开发领域,高级工程师要求拥有丰富的经验
和技术能力,能够解决各种复杂的技术难题和性能优化问题。
二、面试题目
1. 请简述Java中的多态性,并给出示例说明。
2. 请解释Java中的封装性,以及封装的优势在开发中的应用。
3. 请列举并解释Java中常用的集合类,并说明它们之间的区别和使用场景。
4. 请简述Java中的反射机制,并说明其在代码开发中的应用场景。
5. 请分别解释Java中的继承和接口,并给出它们之间的区别和使用场景。
6. 请问如何处理Java中的异常,以及异常处理的机制和原则是什么?
7. 请说明Java中的线程同步机制,以及并发编程中的线程安全问题和解决方案。
8. 请简述Java中的设计模式,并介绍至少三种常用的设计模式及其实际应用场景。
9. 请简述Java中的IoC和DI概念,并结合具体实例解释它们在Spring框架中的应用。
10. 请解释Java中的内存管理机制,包括垃圾回收算法和内存泄漏的原因及预防方法。
三、回答示例
1. 多态性是指在面向对象的程序设计中,通过使用父类的引用来调用子类的方法,实现同一方法在不同对象上的多种不同执行方式。示例代码:
```java
class Animal {
public void sound() {
System.out.println("Animal makes sound");
java高级面试题及答案
java高级面试题及答案
一、基础理论知识
1. 请解释Java中的四种访问修饰符及其作用范围。
答:Java中的四种访问修饰符分别是public、protected、default
(无修饰符)和private。public修饰的类或成员可以被任何其他类
访问;protected修饰的成员可以被同一个包内的类以及子类访问;default(无修饰符)的成员只能被同一个包内的类访问;private修
饰的成员只能在声明它的类内部访问。
2. 什么是Java的序列化和反序列化?请举例说明。
答:Java序列化是将对象的状态信息转换为字节流的过程,以便于存
储或传输。反序列化则是将字节流恢复为原来的对象。例如,通过ObjectOutputStream和ObjectInputStream类可以实现对象的序列化
和反序列化。
3. 解释Java中的多态性及其优势。
答:多态性是指允许使用子类对象来替代父类对象的能力。在Java中,这是通过继承和接口实现的。多态性的优势包括代码的可扩展性和可
维护性,以及能够编写更通用的代码。
二、Java集合框架
1. 请比较ArrayList和LinkedList的性能差异。
答:ArrayList是基于动态数组的数据结构,适合随机访问;
LinkedList是基于双向链表的数据结构,适合频繁的插入和删除操作。在随机访问大量元素时,ArrayList的性能优于LinkedList;而在插
入和删除操作频繁时,LinkedList的性能更优。
2. 什么是HashMap的工作原理,以及如何解决它的线程安全问题?答:HashMap基于哈希表实现,通过键的哈希值来计算存储位置。当两个不同的键具有相同的哈希值时,会发生哈希冲突,HashMap通过链表或红黑树来解决这个问题。对于线程安全问题,可以使用ConcurrentHashMap,它通过锁分离技术来提供线程安全的映射。
java高级工程师面试题
java高级工程师面试题
Java高级工程师是一种职位要求技能和经验较高的软件开发者,在
软件行业具有广泛的应用。作为一名Java高级工程师,需要具备扎实
的编程基础、深入的Java知识、熟悉的开发框架和工具,以及解决复
杂问题的能力。下面将介绍一些常见的Java高级工程师面试题,帮助
应聘者准备面试。
1. 解释Java的封装特性。
封装是Java面向对象编程的核心特性之一。它通过将数据和方法组
合在一个类中,对外部隐藏了内部的细节实现,只暴露出有限的接口
供其他类使用。封装提供了以下优点:提高代码可维护性,减少了程
序的耦合度,保护了数据的完整性和安全性。
2. 什么是Java中的多态性?
多态性是Java面向对象编程的重要特性之一。它允许通过父类的引用变量来引用子类的对象,在运行时确定具体调用的方法。多态性实
现了代码的灵活性和可扩展性,提高了代码的复用性。
3. 请解释Java中的内存管理机制。
Java中的内存管理是通过垃圾回收器(Garbage Collector)来实现的。垃圾回收器会自动监测和释放不再使用的内存,使开发者不需要手动
管理内存。Java的垃圾回收器采用了自动化的内存回收技术,包括标
记-清除、复制、标记-整理等方法。
4. 请解释Java中的异常处理机制。
Java中的异常处理机制通过try-catch-finally语句块来实现。当代码
中发生异常时,会抛出一个异常对象,程序会在try块中查找匹配的catch块进行异常处理。如果没有找到匹配的catch块,异常将会从当
前方法传播到调用该方法的地方,直到被处理或者导致程序终止。
20个高级Java面试题及答案
20个高级Java面试题及答案
20个高级Java面试题及答案
本文是店铺搜索整理的高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题,供参考复习,希望对大家有所帮助!想了解更多相关信息请持续关注我们店铺!
Java面试问题集合指南
1. 什么是可变参数?
2. 断言的用途?
3. 什么时候使用断言?
4. 什么是垃圾回收?
5. 用一个例子解释垃圾回收?
6. 什么时候运行垃圾回收?
7. 垃圾回收的最佳做法?
8. 什么是初始化数据块?
9. 什么是静态初始化器?
10.什么是实例初始化块?
11.什么是正则表达式?
12.什么是令牌化?
13.给出令牌化的例子?
14.如何使用扫描器类(Scanner Class)令牌化?
15.如何添加小时(hour)到一个日期对象(Date Objects)?
16.如何格式化日期对象?
17.Java中日历类(Calendar Class)的用途?
18.如何在Java中获取日历类的实例?
19.解释一些日历类中的重要方法?
20.数字格式化类(Number Format Class)的用途?
解答
什么是可变参数?
可变参数允许调用参数数量不同的方法。请看下面例子中的求和方法。此方法可以调用1个int参数,或2个int参数,或多个int参数。
//int(type) followed ... (three dot's) is syntax of a variable argument.
public int sum(int... numbers) {
java高级工程师_面试题和答案解析
一:选择题
1. 关于以下程序代码的说明正确的是( D )
1.class HasStatic{
2.private static int x=100;
3.public static void main(String args[ ]){
4.HasStatic hs1=new HasStatic( );
5.hs1.x++;
6.HasStatic hs2=new HasStatic( );
7.hs2.x++;
8.hs1=new HasStatic( );
9.hs1.x++;
10.HasStatic.x- -;
11.System.out.println(“x=”+x);
12.}
13.}
A、5行不能通过编译,因为引用了私有静态变量
B、10行不能通过编译,因为x是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102
2. 下列关于for循环和while循环的说法中哪个是正确的?( B )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
3. 以下选项中循环结构合法的是( C )
A、while (int i<7)
{ i++;
System.out.println(“i is “+i);
}
B、int j=3;
while(j)
{
System.out.println(“ j is “+j);
}
C、int j=0;
for(int k=0; j + k !=10; j++,k++)
java高级工程师-面试题及答案
一: 选择题
1、关于以下程序代码的说明正确的就是( D )
1.class HasStatic{
2. private static int x=100;
3. public static void main(String args[ ]){
4. HasStatic hs1=new HasStatic( );
5. hs1、x++;
6. HasStatic hs2=new HasStatic( );
7. hs2、x++;
8. hs1=new HasStatic( );
9. hs1、x++;
10. HasStatic、x- -;
11. System、out、println(“x=”+x);
12. }
13. }
A、5行不能通过编译,因为引用了私有静态变量
B、10行不能通过编译,因为x就是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102
2、下列关于for循环与while循环的说法中哪个就是正确的?( B )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般就是程序结果,for循环判断条件一般就是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
3、以下选项中循环结构合法的就是( C )
A、while (int i<7)
{ i++;
System、out、println(“i is “+i);
}
B、int j=3;
while(j)
{
System、out、println(“ j is “+j);
java高级工程师 面试题及答案
一:选择题
1. 关于以下程序代码的说明正确的是( D )
1.class HasStatic{
2.private static int x=100;
3.public static void main(String args[ ]){
4.HasStatic hs1=new HasStatic( );
5.hs1.x++;
6.HasStatic hs2=new HasStatic( );
7.hs2.x++;
8.hs1=new HasStatic( );
9.hs1.x++;
10.HasStatic.x- -;
11.(“x=”+x);
12.}
13.}
A、5行不能通过编译,因为引用了私有静态变量
B、10行不能通过编译,因为x是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102
2. 下列关于for循环和while循环的说法中哪个是正确的( B )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
3. 以下选项中循环结构合法的是( C )
A、while (int i<7)
{ i++;
(“i is “+i);
}
B、int j=3;
while(j)
{
(“ j is “+j);
}
C、int j=0;
for(int k=0; j + k !=10; j++,k++)
{
(“ j is “+ j + “k is”+ k);
java高级工程师面试题及答案
java高级工程师面试题及答案
一、Java基础知识
1. 请简述Java语言的特点和优势。
Java是一种跨平台的编程语言,具有以下特点和优势:
- 简单易学:Java采用C/C++风格的语法,使得开发者可以快速上手。
- 面向对象:Java是一种面向对象的语言,通过封装、继承和多态等特性,使得程序更加模块化、可复用和可维护。
- 平台无关性:Java应用程序可以在不同的操作系统平台上运行,只需编译一次即可。
- 高效性能:Java通过垃圾回收机制和即时编译器(Just-In-Time Compiler)来提高性能,同时拥有高度优化的运行时环境。
- 安全性:Java提供了安全的执行环境,通过类加载器、字节码验证和安全管理器等机制,防止恶意代码的执行。
2. 什么是Java的自动装箱和拆箱?
自动装箱(Autoboxing)和拆箱(Unboxing)是Java编译器提供的便利功能。
- 自动装箱:将基本数据类型转换为对应的包装类对象,例如将int 类型转换为Integer对象。
- 自动拆箱:将包装类对象转换为基本数据类型,例如将Integer对象转换为int类型。
自动装箱和拆箱使得基本数据类型和包装类之间的转换更加方便,可以在需要包装类的地方直接使用基本数据类型,编译器会自动进行装箱或拆箱操作。
3. 请简述Java中的重载和重写的区别。
- 重载(Overload):指在同一个类中,方法名相同但参数列表不同的多个方法,可以具有不同的返回类型。重载可以通过参数个数、类型或顺序的不同来实现。重载的方法可以拥有不同的访问修饰符。
Java高级工程师面试题及答案
Java高级工程师面试题及答案
Java高级工程师面试题及答案
随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。Java软件工程师是指运用Java这种开发语言去完成软件产品的软件程序设计、开发、测试、维护升级等工作的人员。那么java工程师的面试你过了吗?如果们有,快来看看yjbys店铺为大家准备的Java高级工程师面试题目,希望对大家的学习有所帮助!
1.Hibernate工作原理及为什么要用?
工作原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务 7.关闭Session 8.关闭SesstionFactory
为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO 层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2.Hibernate是如何延迟加载?
1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)
2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
java高级工程师面试题
java高级工程师面试题
一、概述
Java高级工程师是一个具备深厚Java开发经验和技能的职位。面试Java高级工程师时,需要考察其对Java核心概念、高级特性和开发工具的理解和应用,以及其在项目中解决实际问题的能力。以下是一些常见的Java高级工程师面试题。
二、Java核心概念
1. 什么是Java虚拟机(JVM)?它的作用是什么?
2. 请解释Java的面向对象编程思想。
3. 什么是Java中的封装、继承和多态?请分别举例说明。
4. 什么是Java中的接口和抽象类?它们有何区别?
三、高级特性
1. 请解释Java中的反射机制和动态代理。
2. 什么是Java中的泛型?它的作用是什么?请举例说明。
3. 什么是Java中的注解(Annotation)?请解释常用的注解及其作用。
4. 请解释Java中的线程同步与锁机制,如synchronized关键字和Lock接口等。
四、开发工具和框架
1. 请介绍一些常用的Java开发工具和集成开发环境(IDE)。
2. 请解释Maven和Gradle的作用及其区别。
3. 请介绍Spring框架的核心模块及其作用。
4. 请解释Hibernate框架的作用及其优势。
五、项目经验和实际问题
1. 请分享你在Java项目中遇到的一个挑战,并描述你如何解决它。
2. 请解释什么是Java中的ORM框架?你在项目中有使用过吗?是
如何应用的?
3. 请描述你如何优化Java应用的性能。
4. 请解释什么是Java中的设计模式?你最常使用的设计模式是哪个,为什么?
六、结语
面试Java高级工程师需要全面考察候选人的Java开发知识体系和
高级java工程师面试题
高级java工程师面试题
一、介绍
Java作为一种广泛应用的编程语言,在软件开发领域具有重要的地位。作为高级Java工程师,您需要掌握扎实的Java基础知识,并具备解决实际问题的能力。下面是一些常见的高级Java工程师面试题,希望能帮助您更好地准备面试。
二、Java基础
1. 请解释Java的三大特性。
2. 什么是Java的包装类?请列举几个常用的包装类。
3. 请解释Java中的抽象类和接口的区别。
4. 请解释重载和重写的区别。
5. 请解释Java中的多态性。
三、JVM和垃圾回收
1. 请解释JVM是什么,它的作用是什么?
2. 什么是垃圾回收?请解释Java中的垃圾回收机制。
3. 请解释堆和栈的区别。
4. 请解释Java中的引用类型和值类型。
四、多线程和并发
1. 请解释进程和线程的区别。
2. 请解释Java中的线程同步机制。
3. 请解释volatile关键字的作用。
4. 请解释什么是线程池,它的优点是什么?
五、数据库和ORM框架
1. 请解释关系型数据库和非关系型数据库的区别。
2. 请解释ORM框架的作用。
3. 请解释Hibernate框架的特点和使用方法。
4. 请解释什么是SQL注入,如何避免SQL注入?
六、Spring框架
1. 请解释Spring框架的特点和作用。
2. 请解释控制反转(Inversion of Control,IOC)的概念。
3. 请解释什么是面向切面编程(Aspect-Oriented Programming,AOP)。
4. 请解释Spring MVC框架的工作原理。
Java高级面试题整理(附答案)
Java⾼级⾯试题整理(附答案)
这是我收集的10道⾼级Java⾯试问题列表。这些问题主要来⾃ Java 核⼼部分 ,不涉及 Java EE 相关问题。你可能知道这些棘⼿的 Java 问题的答案,或者觉得这些不⾜以挑战你的 Java 知识,但这些问题都是容易在各种 Java ⾯试中被问到的,⽽且包括我的朋友和同事在内的许多程序员都觉得很难回答。
我还收集整理了⼀份PDF版的Java⾯试⼿册,超详细!关注博主的微信公众号:Java团长,然后回复“⾯试⼿册”即可获取~
1. 为什么等待和通知是在 Object 类⽽不是 Thread 中声明的?
⼀个棘⼿的 Java 问题,如果 Java编程语⾔不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深⼊了解有助于回答这种棘⼿的Java 核⼼⽅⾯的⾯试问题。
为什么 wait,notify 和 notifyAll 是在 Object 类中定义的⽽不是在 Thread 类中定义
这是有名的 Java ⾯试问题,招2~4年经验的到⾼级 Java 开发⼈员⾯试都可能碰到。
这个问题的好在它能反映了⾯试者对等待通知机制的了解, 以及他对此主题的理解是否明确。就像为什么 Java 中不⽀持多继承或者为什么String 在 Java 中是 final 的问题⼀样,这个问题也可能有多个答案。
为什么在 Object 类中定义 wait 和 notify ⽅法,每个⼈都能说出⼀些理由。从我的⾯试经验来看, wait 和 nofity 仍然是⼤多数Java 程序员最困惑的,特别是2到3年的开发⼈员,如果他们要求使⽤ wait 和 notify, 他们会很困惑。因此,如果你去参加 Java ⾯试,请确保对 wait 和notify 机制有充分的了解,并且可以轻松地使⽤ wait 来编写代码,并通过⽣产者-消费者问题或实现阻塞队列等了解通知的机制。
java高级工程师面试题及答案
java高级工程师面试题及答案
一、Java基础知识
1.请解释Java中的面向对象编程(OOP)是什么?
面向对象编程是一种程序设计思想,它将系统划分为一系列对象,每个对象都有自己的数据和行为。通过封装、继承和多态等特性,实现了代码的重用性、灵活性和可扩展性。
2.描述Java中的继承和多态的概念及其应用场景。
继承是指一个类可以通过继承另一个类的属性和方法,并且可以在保持原有功能的基础上添加新功能或修改原有功能。多态则是指同一个方法可以根据不同的对象执行不同的操作。
应用场景:继承可以用于创建一个类的扩展版本,同时保持原有类的功能,例如创建不同类型的动物类时可以使用继承。多态可以用于实现不同类型的对象通过统一的接口调用相同的方法,在处理逻辑复杂的场景下可以提高代码的可读性和可维护性。
3.什么是抽象类和接口?它们之间有什么区别?
抽象类是一种无法实例化的类,通常包含了一些抽象方法和实现方法。子类必须实现父类中的抽象方法才能被实例化。接口是一种完全抽象的类,只包含抽象方法和常量的定义,没有实现方法和变量。
区别:抽象类可以包含实现方法,而接口只包含方法的定义。类可以实现多个接口,但只能继承一个抽象类。抽象类只能作为父类被继承,而接口可以被任何类实现。
二、Java集合框架
1.请解释Java集合框架,并列举常用的集合类。
Java集合框架是一组用于存储和操作数据的类和接口集合。它提供了一种常用的数据结构实现,包括List(列表)、Set(集合)、Queue (队列)和Map(映射)等。
常用的集合类包括:
java高级工程师-面试题及答案
java高级工程师-面试题及答案
选择题
A. while 循环能实现的操作,for 循环也都能实现
1. class HasStatic{
2. private static int x=100;
3. public static
void mai n( Stri ng args[ 4. HasStatic hs1= new HasStatic();
5. hs1.x++;
6. HasStatic
hs2二
new
HasStatic();
7. hs2.x++;
8. hs1= new HasStatic();
9. hs1.x++;
0. HasStatic.x-
5
1. System.out.pri ntl n(
x= +x);
2. }
3. }
A
、 5行不能通过编译,
因为引用了私有静态变量
B
、 10行不能通过编译, ,因为x 是私有静态变量
C
、程序通过编译,输出结果为: x=103 D
、
程序通过编译,输出结果为: x=102 ]){
2.下列关于for 循环和while 循环的说法中哪个是正确的?( B )
1.关于以下程序代码的说明正确的是( D )
B. while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C. 两种循环任何时候都可替换
D. 两种循环结构中都必须有循环体,循环体不能为空
3. 以下选项中循环结构合法的是( C)
A、w hile (int i<7)
{ i++;
System.out.pri ntl n( “ i is “ +i);
}
B、i nt j=3;
while(j)
{
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:选择题
1. 关于以下程序代码的说明正确的是( D )
1.class HasStatic{
2. private static int x=100;
3. public static void main(String args[ ]){
4. HasStatic hs1=new HasStatic( );
5. hs1.x++;
6. HasStatic hs2=new HasStatic( );
7. hs2.x++;
8. hs1=new HasStatic( );
9. hs1.x++;
10. HasStatic.x- -;
11. System.out.println(“x=”+x);
12. }
13. }
A、 5行不能通过编译,因为引用了私有静态变量
B、 10行不能通过编译,因为x是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102
2. 下列关于for循环和while循环的说法中哪个是正确的?( B )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
3. 以下选项中循环结构合法的是( C )
A、while (int i<7)
{ i++;
System.out.println(“i is “+i);
}
B、 int j=3;
while(j)
{
System.out.println(“ j is “+j);
}
C、int j=0;
for(int k=0; j + k !=10; j++,k++)
{
System.out.println(“ j is “+ j + “k is”+ k);
}
D、 int j=0;
do{
System.out.println( “j is “+j++);
if (j = = 3) {continue loop;}
}while (j<10);
4. 给出下面代码段, 哪行将引起一个编译时错误?( D )
1) public class Test {
2) int n = 0;
3) int m = 0;
4) public Test(int a) { m=a; }
5) public static void main(String arg[]) {
6) Test t1,t2;
7) int j,k;
8) j=3; k=5;
9) t1=new Test();
10) t2=new Test(k);
11) }
12) }
A. 行1
B. 行4
C. 行6
D. 行9
5. 下面的方法,当输入为2的时候返回值是多少?( D )
public int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A 0
B 2
C 4
D 10
二:简述题
1、描述一下 JVM 加载 class 文件的原理机制?
JVM 中类的装载是由C lassLoader 和它的子类来实现的,Java ClassLoader 是一个重要的Java 运行时系统组件。它负责在运行时查找和装入类文件的类。
2、heap 和s tack 有什么区别。
java 的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。
堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new 创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final 修饰后,放在堆中,而不是栈中。
3、GC 是什么?为什么要有 GC?
GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的G C 功能可以自动
监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内
存的显示操作方法。
4、列举出一些常用的类,包,接口,请各举 5 个
要让人家感觉你对j ava ee 开发很熟,所以,不能仅仅只列c ore java 中的那些东西,要多列
你在做s sh 项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。
常用的类:BufferedReader BufferedWriter FileReader FileWirter
StringInteger java.util.Date,System,Class,List,HashMap
常用的包:ng java.io java.util
java.sql,javax.servlet,org.apache.strtuts.action,org.h
ibernate 常用的接口:Remote List Map Document
NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、Session(Hibernate),HttpSession
5 java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
字节流,字符流。字节流继承于I nputStream OutputStream,字符流继承于 InputStream Reader
OutputStreamWriter。在j ava.io 包中还有许多其他的流,主要是为了提高性能和使用方便。6、多线程有几种实现方法?同步有几种实现方法?
多线程有两种实现方法,分别是继承T hread 类与实现R unnable 接口
同步的实现方面有两种,分别是s ynchronized,wait 与n otify wait():使一个线程处于
等待状态,并且释放所持有的对象的l ock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException(中断异常)异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由J VM 确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是
让它们竞争。
7、说一说 Servlet 的生命周期?
答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由j avax.servlet.Servlet 接口的i nit,service 和d estroy 方法表达。
Servlet 被服务器实例化后,容器运行其i nit 方法,请求到达时运行其s ervice 方法,service 方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其d estroy 方法。
web 容器加载s ervlet,生命周期开始。通过调用s ervlet 的i nit()方法进行s ervlet 的初始化。