首页 > 2020/09/07海康威视笔试
头像
懂什么董
编辑于 2020-09-07 21:20
+ 关注

2020/09/07海康威视笔试

9月7日海康威视笔试
选择都是知识点,没有特别值得记录的
编程简答题:
1.简单的INSERT和SELECT语句
2.写一个简单的工厂模式:(当时没写出来,现在也不记得到底是工厂模式还是简单工厂模式了)
这里首先要区别工厂模式和简单工厂模式是不同的
这里以手机厂为例子编写
2.1简单工厂模式涉及到了 Factory工厂类,IProduct抽象产品类,Product具体产品类
//抽象产品类,一个抽象方法开机
public abstract class Cellphone{
    public abstract void start();
}
//具体产品类继承抽象产品类并重写开机方法
public class HuaweiPhone extends Cellphone{ @Override public void start(){
        System.out.println("华为手机开机");
    }
}
public class MiPhone extends Cellphone{ @Override public void start(){
        System.out.println("小米手机开机");
    }
}
public class OPPOPhone extends Cellphone{ @Override public void start(){
        System.out.println("OPPO手机开机");
    }
}
//工厂编写一个生产手机的方法,根据类型调用具体的构造器创建手机对象并返回
public class CellphoneFactory{
    public static Cellphone createCellphone(String type){
        Cellphone mCellphone = null;
        switch(type){
            case "Huawei":
                mCellphone  = new HuaweiPhone();
                break;
            case "Mi":
                mCellphone  = new MiPhone();
                break;
            case "OPPO":
                mCellphone  = new OPPOPhone();
                break;
        }
        return mCellphone;
    }
}
2.2工厂模式和简单工厂模式不同的是,工厂模式涉及到的是 抽象工厂类、具体工厂类、抽象产品类、具体产品类,如果想要增加新的产品只需要新建一个产品类即可动态的生产,而简单工厂模式想要增加新的产品需要修改工厂的生产逻辑,增加新的分支,违反了开放封闭原则。
工厂模式是首先创造一个抽象工厂,具体工厂继承抽象工厂并重写它的生产方法,根据传入的类型,利用反射机制动态的创建一个类的实例,并返回该实例,具体代码这里就不写了。

3.求最小子序列合,要求时间复杂度是O(n)
因为题目要求返回的是最小的合的值,不需要返回最小序列的起始下标,所以实现要相对简单,具体思路如下
设置临时变量temp=0和结果min=nums[0];
遍历整个数组,令temp+=nums[i];
没遍历一个元素,进行一次判断,首先判断temp是否小于min,如果小于则令min=temp,如果不小于则再判断temp是否小于0.因为如果temp此时大于0的话不如从下一个数重新开始计数得到的结果小,所以如果temp不小于0,则将temp重新置0;
这样得到结果只需要遍历一次数组所以时间复杂度是O(n)


全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐