面试题4 | 您所在的位置:网站首页 › java取字符串某一位 › 面试题4 |
单例模式饿汉式登记式枚举式懒汉式双重检索指令重排ThreadLocalCAS总结异常int 和 integer 的区别算法题大位数加法大位数乘法出现次数的字符串(多,少)第一个重复的值第一个只出现一次的字符看一段数字中出现的个数,并将他们按升序排序按照输入字符,和字节数量 ,进行截取字符串中截取匹配字符字符串反转输入一个字符串(含分隔符),以分隔符进行分割 ,反转输出给定一个字符串,反转字符串每个单词字符的顺序,保留单词和空格的初始位置验证是不是ipv4求和最大的子序列值,开始位置和结束位置2345
单例模式
饿汉式 static 是默认全剧配置 ,运用java加载类的机制 ,在线程中是安全的通过方法 获取 这个对象 优点是: 在类加载的时候就创建好了。是没有延迟的,没有加锁效率高缺点是: 浪费内存,产生垃圾对象,对于反射不安全,反序列化也是不支持的 登记式加强版的饿汉式静态内部类,返回静态内部类中的属性可以实现延时加载。过去实例对象的时候才进行加载。可以通过代码实现 反 反射 (反射就报错)原理是:当你 调用get方法回去初始化 ,因为是一个静态的属性,在虚拟机是全局作用域,反射再去创建 ,通过构造方法的 ,会我们会抛出一个异常 ,也可以通过read 方法让他反序列化也是安全的 枚举式jdk1.5,没有构造函数,就自动防止反射了, 也支持反序列化,但是用到继承就不很恰当 懒汉式但是是线程不安全的 , 有可能线程进入先后顺序在判断完成后,没有初始化完成,另一个就进入了可以加线程安全关键字 也可以写成同步代码块然后主线程运行不完成的情况 ,可以先让主线程阻塞 双重检索因为每次同步代码块效率低 也就是双重检索,在第一次两个都没有创建的时候,第一次判断有可能只需要一次同步,在下一次进行判断的时候,就在外层判断的时候就会被拦截 ,不会再去多次同步 指令重排使懒汉式不一定是百分之百单例模式 ,在运行中是没问题的,在多线程中,有可能会出现 别的线程过来拿走一个指向为空的地址解决方法 在对象上加一个 volatile 关键字 ,保证不会重排 ThreadLocal本身不加锁,为每个线程提供一个独立副本 。只能保证在一个线程里 是单例的,在多个线程里就会不一定是单例的(也就是 开了多个线程后 ,每个线程里 new多次是单例,但是每个线程之间的地址不一样,不是单例) CASfor 死循环 ,会产生很多的垃圾对象,但是 会最后保证得到单例的唯一性 ,对服务器压力比较大 总结 异常 int 和 integer 的区别 算法题 大位数加法 大位数乘法 出现次数的字符串(多,少)双层循环 逐个去比较也可以用map 去存值,然后每次取值比较基本数据类型不能用在泛型里 第一个重复的值通过set 集合 , set方法不允许出现重复的,如果插入进去就说明没重复,如果重复了就输出 第一个只出现一次的字符先统计次数,然后遍历第一个出现的字符 或者通过判断位置 看一段数字中出现的个数,并将他们按升序排序按照输入字符,和字节数量 ,进行截取 字符串中截取匹配字符 字符串反转 三种方法 输入一个字符串(含分隔符),以分隔符进行分割 ,反转输出 给定一个字符串,反转字符串每个单词字符的顺序,保留单词和空格的初始位置 验证是不是ipv4求和最大的子序列值,开始位置和结束位置 1暴力破解法 ,就是穷举 ,所有的情况 2动态规划 主要是看前面一个集合是否为正数,自身是否为正数 ,如果前一个集合为正,自身也为正就加上,前一个集合为负就不加 23 4 5 |
CopyRight 2018-2019 实验室设备网 版权所有 |