20200110一家面试题

1、如何对插入mysql数据的原数据进行加密,写出加密函数?

加密:INSERT INTO t_pass_info(id,pass_info) VALUES (1,ENCODE(‘dong’,‘bb’));
解密:SELECT DECODE(ENCODE(‘dong’,‘aa’),‘aa’);

2、有数组a[n],用java代码将数组元素顺序颠倒

public static void main(String[] args) {
        /*
         * 有数组a[n],用java代码将数组元素顺序颠倒
         */
        int a[]={11,8,2,24,90,23};
        
        //首先可以用集合的方法把数组元素颠倒
        List<Integer> list=new ArrayList<Integer>();
        for(Integer i:a) {
            list.add(i);
        }
        Collections.reverse(list);
        for(Integer i:list) {
            System.out.print(i+" ");
        }
        
        //也可以用循环首尾互换的方法搞定
        for(int i=0;i<a.length>>1;i++) {
            int temp;
            temp=a[i];
            a[i]=a[a.length-1-i];
            a[a.length-1-i]=temp;
        }
        System.out.println();
        for(int i:a) {
            System.out.print(i+" ");
        }
    }

3、请列举排序都有哪几种方法?请使用一种方法进行排序

此题在上一篇也出现过,这里就不写了

4、一个用户表有一个积分字段,假如数据库中有800多万个用户(包含有效和失效用户),若要在每一季度第一天凌晨将有效用户的积分减半,你会怎么做?

我当时回答的是直接用定时任务跑批执行sql,修改语句
还不清楚怎么解决,有好的答案希望分享~~

5、写一个jdbc链接并访问oracle数据的程序代码?

private static String url="jdbc:oracle:thin:@localhost:1521:orcl";     

    private static String user="system";    

    private static String password="manager";    

    private static Connection conn;    

    private Statement statement = null;

    private ResultSet rs = null;
    Class.forName("oracle.jdbc.driver.OracleDriver");    
    conn=DriverManager.getConnection(url, user, password); 
    statement = conn.createStatement();
    rs=statement.executeQuery(sql);
    while (rs.next()){
        //do something
    }
    rs.close();
    statement.close();
    conn.close(); 

6.你对springcloud理解是什么?AOP和IOC主要用来解决哪种业务场景?

引用下面的话: springcloud理解—
SpringCloud是Spring为微服务架构思想做的一个一站式实现。
  从某种程度可以理解为,微服务是一个概念、一个项目开发的架构思想。SpringCloud是微服务架构的一种java实现。
SpringCloud是基于SpringBoot的一套实现微服务的框架。
  为微服务体系开发中的架构问题,提供了一整套的解决方案,它提供了微服务开发所需要的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟SpringBoot框架一起使用的话,会让开发微服务架构的云服务非常方便。
  Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现。
IOC和AOP应用场景:
AOP:面向切面,找出多个Bean有一定规律的代码,开发拆开,运行合并
面向规则编程,日志监控,事物开启/关闭,权限控制
IOC:控制反转,将创建对象的权利交给spring(BeanFactory) 衣来伸手饭来张口
DI: 依赖注入,DI:依赖查找。能够保存对象与对象之间的关联关系
自动赋值:构造方法, set赋值,直接赋值(反射,暴力强吻)
构造:xml赋值
set:@Resource(“beanName”) public void setXXX(){}
直接:@Autowried private Object object;

7、你用过常用的设计模式有哪些?用java写出来。

工厂、单利、模板、原型、策略、适配器、委派。。。。

//饿汉式单例模式例子
public class HungrystaticSingleton {
    private  static final HungrySingleton singleton=new HungrySingleton();
    private HungrySingleton(){}
    public static HungrySingleton getInstance(){
        return singleton;
    }
}
//懒汉式单例模式例子
public class LazyDoubleCHeckSingleton {
    private static LazyDoubleCHeckSingleton singleton=null;
    private  LazyDoubleCHeckSingleton(){}
    public  static LazyDoubleCHeckSingleton getInstance(){
        if(singleton==null){
            synchronized (LazySimpleSingleton.class){
                if(singleton==null){
                    singleton=new LazyDoubleCHeckSingleton();
                }
            }
        }
        return singleton;
    }
}

8、堆和栈的区别是什么?若有一个64k的字符串,是放到堆上,还是栈上,理由是什么?

只有引用及基本数据类型是直接存在栈上。对象类型可能是在堆、方法区、常量池中。
堆栈都是内存的可用区域,但是 堆的速度慢容量大,栈的速度快容量小。一个64K的字符串,自然放在堆。栈的内存是很宝贵的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章