Java面试20200225

01、

1、abstract和introduction区别;

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4.抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型    的,并且默认即为public abstract类型。

5.抽象类中可以包含静态方法,接口中不能包含静态方法

6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默    认即为public static final类型。

2、什么是Java序列化,如何实现Java序列化?

Java的序列化指把Java对象通过流的形式保存到一个byte数组放在硬盘或内存等存储介质中,需要的时候通过反序列化再读取成对象。

Java实例序列化的作法是:Java类实现序列化接口Serializable,最好显示声明序列化ID,防止反序列化时版本不一致,序列化类的所有属性都必须实现序列  化或被transient修饰,然后通过ObjectOutputStream的writeObject方法输出到指定介质中.

3、883*8最快速的Java算法?

883 << 3

4、冒泡排序代码实现?

    int a[]={3,1,6,2,9,0,7,4,5},i,j,temp;

        for(i=0;i<a.length;i++)

            for(j=0;j<a.length-1-i;j++)

            {

                if(a[j]>a[j+1])

                {

                    temp=a[j];

                    a[j]=a[j+1];

                    a[j+1]=temp;

                }

            }

        for(i=0;i<a.length;i++){

        System.out.println(a[i]);

        }

       }

5、责任链模式简单代码实现?

public abstract class Handler {

    

    /**

     * 持有后继的责任对象

     */

    protected Handler successor;

    /**

     * 示意处理请求的方法,虽然这个示意方法是没有传入参数的

     * 但实际是可以传入参数的,根据具体需要来选择是否传递参数

     */

    public abstract void handleRequest();

    /**

     * 取值方法

     */

    public Handler getSuccessor() {

        return successor;

    }

    /**

     * 赋值方法,设置后继的责任对象

     */

    public void setSuccessor(Handler successor) {

        this.successor = successor;

    }

    

}

 

public class ConcreteHandler extends Handler {

    /**

     * 处理方法,调用此方法处理请求

     */

    @Override

    public void handleRequest() {

        /**

         * 判断是否有后继的责任对象

         * 如果有,就转发请求给后继的责任对象

         * 如果没有,则处理请求

         */

        if(getSuccessor() != null)

        {            

            System.out.println("放过请求");

            getSuccessor().handleRequest();            

        }else

        {            

            System.out.println("处理请求");

        }

    }

 

}

 

public class Client {

 

    public static void main(String[] args) {

        //组装责任链

        Handler handler1 = new ConcreteHandler();

        Handler handler2 = new ConcreteHandler();

        handler1.setSuccessor(handler2);

        //提交请求

        handler1.handleRequest();

    }

 

}

 

6、系统设计时通过哪些方式可以提高系统的性能(列出5—10条)。

选择的框架才可能影响系统的扩展和性能.软件设计方面

        * 网页静态化

        * 独立的图片服务器

        * 可能采用中间缓存层服务器,最可能采用第三方成熟的软件

        * 数据库分表(水平分割是最终方案)

7、请详细列出开发一套软件系统的流程和准备工作。

开发前的准备工作包括了解系统的背景知识、相关参考资料;明确认系统需求、核实系统需求、进行需求分析;项目启动前需要了解项目的主要干系人;制定  开发计划;软件系统开发流程包括开发前的准备工作,制定详细计划,组建团队和建设团队,建立项目组的规章制度,制定系统的专门术语表,分配置用户职责,搭建项目框架,开发,单元测试,BUG管理,压力测试等,然后提交用户测试,验收。

 

a. 对产品而言,需要做市场调研,项目来说可以不做

b. 计划、风险分析、资源预估

c. 组建团队和建设团队,建立项目组的规章制度

d. 分配置用户职责

e. 采集需求

f. 需求分析,明确需求

g. 概要设计

   概念模型,主要有模块、概念、功能点、参与者等

h. 详细设计

   物理模型,PDM数据表设计、UML建模、原型

i. 开发,单元测试,BUG管理

j. 压力测试、部门内测试(IT测试)、业务测试(Alpha测试)

k. 客户测试(外部测试,Bata测试)

l. 正式上线

m. 运行维护

n. 下个周期

 

02、

1、int和integer的效率问题

2、SQLserver和oracle得查询顺序分别是什么  (从左向右还是从右向左)

3、arraylist和hashmap的常用方法、区别;

4、forward和redirect的区别?在什么情景下使用这两个方法。

5、webservice的安全机制。

6、.Java的命名规范有哪些?

7、运行时异常与一般异常有何异同?并列举几个常见的运行时异常。

8、描述servlet的生命周期。

9、请说明jsp中forword与redirect有何区别?

10、谈谈你对MVC的理解。

11、请设计一个线程安全的单例模式。

12、对给你的{1,43,23,4,12,0,100}序列,输出序列中的最大和最小的数。

13、有一个职工表employee(eno,ename,esex,deptno,sal),其中eno代表职工号,字符型,长度为8的字符串,且唯一;ename代表职工姓名、字符型,长度为10;esex代表性别,取值仅为“男”或者“女”;deptno代表部门号,整数,非空,长度为6,sal是工资。

(1)创建表;

    create table employee(

        eno      number not null,    

        ename    varchar(8),

        esex     varchar(2),

        deptno   number not null,

        sal      number

    )

(2)查询姓张的员工;

    select *from employee where ename like'张%'

(3)查询每个部门员工的人数;

    select count(*) from employee group by deptno;

(4)工资大于2000的员工的人数。

    select count(*) from employee where sal>2000

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值