几个面试题

package com.test;


public class Test {
    public static void main(String[] args)  {
        new Circle();
    }
}
 
class Draw {
     
    public Draw(String type) {
        System.out.println(type+" draw constructor");
    }
}
 
class Shape {
    private Draw draw = new Draw("shape");
     
    public Shape(){
        System.out.println("shape constructor");
    }
}
 
class Circle extends Shape {
    private Draw draw = new Draw("circle");
    public Circle() {
        System.out.println("circle constructor");
    }

}


结果:shape draw constructor
shape constructor
circle draw constructor

circle constructor


第二题:

package com.test;


public class Test {
    public static void main(String[] args)  {
        Shape shape = new Circle();
        
       // shape constructor
//       / circle constructor
        
        System.out.println(shape.name);//cycle
        shape.printType();//this is circle
        shape.printName();//shap
    }
}
 
class Shape {
    public String name = "shape";
     
    public Shape(){
        System.out.println("shape constructor");
    }
     
    public void printType() {
        System.out.println("this is shape");
    }
     
    public static void printName() {
        System.out.println("shape");
    }
}
 
class Circle extends Shape {
    public String name = "circle";
     
    public Circle() {
        System.out.println("circle constructor");
    }
     
    public void printType() {
        System.out.println("this is circle");
    }
     
    public static void printName() {
        System.out.println("circle");
    }

}


结果出乎我意料:


shape constructor
circle constructor
shape
this is circle

shape

说明:覆盖只针对非静态方法(终态方法不能被继承,所以就存在覆盖一说了),而隐藏是针对成员变量和静态方法的。

4:java String 引用类型

在Java中,数组和String字符串都不是基本数据类型,它们被当作类来处理,是引用数据类型。
引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量
在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用。
 

5:冒泡

/**
 * 冒泡排序的第一种实现, 没有任何优化
 * @param a
 * @param n
 */
public static void bubbleSort1(int [] a, int n){
    int i, j;

    for(i=0; i<n; i++){//表示n次排序过程。
        for(j=1; j<n-i; j++){
            if(a[j-1] > a[j]){//前面的数字大于后面的数字就交换
                //交换a[j-1]和a[j]
                int temp;
                temp = a[j-1];
                a[j-1] = a[j];
                a[j]=temp;
            }
        }
    }
}// end


以下是中软国际常见的面试题及答案: 1. 请简单介绍一下自己的项目经历。 答案:这道题目考察面试者对自己参与项目的理解以及对技术的掌握情况。回答时应注意突出自己在项目中承担的职责和贡献,并且强调与面试职位相关的技术技能。 2. 请简述一下 Java 中的多线程。 答案:Java 中的多线程是指在同一个进程中,同时运行多个线程来执行不同的任务。Java 中实现多线程有两种方式:继承 Thread 类和实现 Runnable 接口。在多线程编程中,需要注意线程安全、线程同步和死锁等问题。 3. 请简述一下 Spring 框架的优点。 答案:Spring 是一个开源的、轻量级的 JavaEE 框架。它的主要优点包括:依赖注入(DI)和控制反转(IOC)能够降低组件之间的耦合度,提高代码的可维护性和可扩展性;AOP 技术可以实现横切面编程,减少代码的重复性;集成了多种 ORM 框架,能够方便地操作数据库;提供了完善的 MVC 模式支持,能够快速开发 Web 应用程序。 4. 请简述一下 RESTful API 的概念和特点。 答案:RESTful API 是一种基于 HTTP 协议的架构风格,它的主要特点包括:统一资源标识符(URI)作为资源的唯一标识符,以及对资源的操作使用 HTTP 动词(GET、POST、PUT、DELETE 等)。RESTful API 能够减少接口的复杂度,提高接口的可读性和可维护性,同时也能够提高接口的性能和可扩展性。 5. 请简述一下 Git 的工作原理。 答案:Git 是一种分布式版本控制系统,它的工作原理基于快照(Snapshot)和指针(Pointer)。在 Git 中,每次提交都会生成一个新的快照,这个快照包含了文件的内容和元数据。同时,Git 还会创建一个指向这个快照的指针,这个指针叫做“引用”(Reference)。Git 还会创建一个名为“HEAD”的特殊引用,它指向当前分支的最后一次提交。这样,就可以通过 HEAD 引用来访问当前分支的快照。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值