这份文档包含了众多具有挑战性的Java面试问题,旨在帮助开发者提升技术水平和面试表现,是准备Java职位应聘者的必备资料。
超级用户的问题关于Java编程技术的详细探讨如下:
1. 超级内部类可以引用它包含外部类的成员吗?有没有什么限制?
答:一个内部类对象确实能够访问创建它的外部类对象的内容。
2. Web Service名词解释。
Web服务是一种基于网络、分布式的模块化组件,执行特定任务并遵守具体的技术规范,使得这些Web服务能与其他兼容的组件进行互操作。
3. JSWDL开发包介绍。
JSWDK(Java Server Web Development Kit)是用于开发和测试J2EE应用程序的工具集,它包括了Tomcat服务器、Axis框架等。
4. JAXP解释
JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用接口。这样,在你的程序里你只需要使用这些通用接口,当你需要改变具体的实现时也不必修改代码。
5. SOAP、UDDI和WSDL解释。
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI (Universal Description, Discovery and Integration) 的目的是为电子商务建立标准;它是一套基于Web的、分布式的、为企业提供的Web服务注册中心的标准规范,同时也包含一组使企业能将自身提供的Web Service注册,并让其它的企业能够发现和访问这些服务的协议实现标准。
WSDL是一种 XML 格式,用于描述网络服务作为一组端点,这些端点对含有面向文档信息或面向过程的信息的消息进行操作。这种格式首先抽象地定义了操作和消息,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象的端点(服务)。
6. 如何设计四个线程,其中两个增加j值1,另外两个减少j值1?
以下程序使用内部类实现线程对 j 值增减时没有考虑顺序问题。
```java
public class ThreadTest {
private int j;
public static void main(String[] args) {
ThreadTest tt = new ThreadTest();
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for (int i=0; i<2; ++i){
Thread t1 = new Thread(inc);
t1.start();
Thread t2 = new Thread(dec);
t2.start();
}
}
private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName()+-inc: +j);
}
private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName()+-dec: +j);
}
class Inc implements Runnable{
public void run(){
for(int i=0; i<100; ++i){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for (int i = 0; i < 100; ++i) {
dec();
}
}
}
}
```
7. 启动一个线程是调用run()还是start()?
启动一个新线程需要调用其 start 方法,这将使该线程所代表的虚拟处理器进入可运行状态。这意味着它可以由 JVM 调度并执行。但是,并不意味着它会立即开始运行。 run 方法可以产生必须退出的标志以停止某个特定的线程。
8. Java中有没有goto?
Java语言保留了 goto 关键字,但并未在实际使用中启用这一功能。