每日六道java新手入门面试题,通往自由的道路第二天完整攻略
1. 背景
本系列针对Java新手准备面试的练习题目,既能够检验Java知识的掌握程度,同时也能够提高Java新手的编写代码和调试程序的能力。
2. 面试题目
本次面试题目共计六道题,涉及Java基础、面向对象、异常处理等知识点,具体如下:
1. 判断输出结果:
public class Test {
public static void main(String[] args) {
A t1 = new B();
t1.printName();
}
}
class A {
public void printName() {
System.out.println("A");
}
}
class B extends A {
public void printName() {
System.out.println("B");
}
}
输出结果是?为什么?
2. 请用Java实现一个单例模式。
3. 如何判断两个字符串是否相等?
4. 写出截取字符串的代码。
5. 请解释Java中的异常处理机制。
6. 如何用Java实现多线程?
3. 答案及解析
1. 判断输出结果
输出结果是B
,因为t1
的类型是A
,但是它是通过new B()
方式创建的,所以是B
类中的方法被调用了。
2. 请用Java实现一个单例模式。
public class Singleton {
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized (Singleton.class) {
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
这是一个双重检查锁的单例模式,实现了懒加载和线程安全。
3. 如何判断两个字符串是否相等?
String str1 = "hello";
String str2 = "world";
if(str1.equals(str2)){
//相等
} else {
//不相等
}
在Java中,判断两个字符串是否相等需要使用equals()
方法。
4. 写出截取字符串的代码。
String str = "abcdefg";
//截取前三位
String subStr = str.substring(0,3);
在Java中,可以使用substring()
方法来截取字符串。
5. 请解释Java中的异常处理机制。
Java中的异常处理机制可以让程序在遇到错误时不会直接崩溃,而是可以捕捉异常并进行处理。Java中的异常分为编译时异常和运行时异常,编译时异常需要在代码中明确进行处理,而运行时异常则可以不处理,交给JVM处理。
6. 如何用Java实现多线程?
public class MyThread extends Thread {
public void run(){
//执行代码
}
}
//启动线程
MyThread thread = new MyThread();
thread.start();
在Java中,可以通过继承Thread
类来实现多线程,然后重写run()
方法,在其中编写线程代码。启动线程的方式是调用线程类的start()
方法。另外,Java中还可以通过实现Runnable
接口来实现多线程,这里不再赘述。
4. 示例说明
示例1:单例模式实现
public class Singleton {
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized (Singleton.class) {
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton1.equals(singleton2)); //输出true
}
}
这里演示了单例模式的实现,运行程序时会输出true
,证明单例模式实现成功。
示例2:多线程实现
public class MyThread extends Thread {
public void run(){
//假设任务是输出100次自己的名字
for(int i=1;i<=100;i++){
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
public class Test {
public static void main(String[] args) {
for(int i=1;i<=5;i++){
MyThread thread = new MyThread();
thread.setName("线程" + i);
thread.start();
}
}
}
这里演示了多线程的实现,启动了5个线程,每个线程输出100次自己的名字。可以看到,所有线程交替执行,每个线程都输出了自己的名字。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:每日六道java新手入门面试题,通往自由的道路第二天 - Python技术站