zoukankan      html  css  js  c++  java
  • 第一次外包面试

    1,单例设计模式都有几种 

    单例对象在内存中静态共享区存储

    第一种:懒汉模式 线程不安全

    第二种:懒汉模式 线程安全  加一个同步锁

    第三种:饿汉模式 类装载的时候就实例化

    第四种:静态内部类 一个构造方法,一个静态内部类来new一个单例对象,然后公开对外一个方法来获取单例对象

    第五种:枚举 

    第六种:双重校验锁  使用关键词volatile,然后获取的方法加锁,如果未加载,锁住类之后再判断一次,如果还未加载,就进行加载

    public class SingletonDemo7 {
      private volatile static SingletonDemo7 singletonDemo7;
      private SingletonDemo7(){}
      public static SingletonDemo7 getSingletonDemo7(){
        if (singletonDemo7 == null) {
        synchronized (SingletonDemo7.class) {
          if (singletonDemo7 == null) {
          singletonDemo7 = new SingletonDemo7();
    }
    }

    }
    return singletonDemo7;
    }
    }

    2,如何删除百万行的数据

    delete每次删除一行,同时将该行的删除操作作为事务记录在日志中以便进行回滚操作 操作后不会减少表和索引所占用的空间 DML data maintain Language

    truncate执行速度快,删除是不能恢复的,执行后,表 和索引所占用的空间会恢复到初始大小 但是有外键约束的表不能使用,DDL data define language

    3,创建多线程的方法

    继承thread类,实现runnable接口,实现callable接口,通过线程池

    线程独有的程序计数器,本都方法栈,虚拟机栈,共享的是堆(存放新创建的对象),方法区(存放已被加载的),直接内存

    直接调用run方法的话会把run方法当作thread的一个普通方法调用

    4,创建线程池的方法

    构造方法实现,使用execrtor不允许使用(fixed,single,cached) 本质都是threadpoolexecutor的构造方法(核心线程数,最大线程数,等待时间,时间单位,队列)。使用线程池的话 就是池化思想,可以线程复用,控制最大并发数量,管理线程

    5,hashMap,

    线程不安全,效率高,支持null键值,初始化16,给定的话扩充到2次方大小,底层数据结构是红黑树

    6,HashSet

    底层是基于hashMap来实现的,检查重复的时候是hashcode和重写的equals方法来进行判断

    7 concurrentHashMap

    基于分段锁,后面采用基于cas和同步锁,比较并交换,只要hash不冲突,就不会发生并发,极大的提高了效率

    外包面试完了之后有二面

    反射:框架设计的灵魂  通过反射,类对我们是完全透明的,想获取任何自己想要的东西

      定义:

        在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对应任意一个对象,都能够调用它的任意一个方法和属性,动态获取的信息以及动态调用对象的方法就是Java语言的反射机制,得到class对象后就可以反向获取这个对象的各种信息,jvm会在本地磁盘中找到这个.class对象,然后加载,加载之后,内存中就有jvm自动创建的一个class对象,他是不能被继承的,

        类的实例表示Java应用程序中的类和接口,Class对象是加载类的时候由Java虚拟机和通过调用类加载器中的defineClass对象自动构造的,没有公共构造方法

      使用:通过Class对象来获取成员变量,构造方法,成员方法

        new一个对象.getClass() 有对象了还要反射干什么

        任何数据类型.class,需要导入太多的包

        Class.forname(全路径名)  包名+类名,常用这个

  • 相关阅读:
    数据结构(java语言描述)顺序栈的使用(两个大数相加)
    DB2 Sql性能查看与优化
    spring默认为单例模式
    Java map的匿名类的初始化
    使用nohup后台执行ftp传输命令
    停止一个java的线程执行
    静态类
    XML语法随记
    Crontab有关
    string转Date转回String(JAVA)
  • 原文地址:https://www.cnblogs.com/benbenzoule/p/13819868.html
Copyright © 2011-2022 走看看