面试题4 您所在的位置:网站首页 java取字符串某一位 面试题4

面试题4

2023-03-10 12:51| 来源: 网络整理| 查看: 265

单例模式饿汉式登记式枚举式懒汉式双重检索指令重排ThreadLocalCAS总结异常int 和 integer 的区别算法题大位数加法大位数乘法出现次数的字符串(多,少)第一个重复的值第一个只出现一次的字符看一段数字中出现的个数,并将他们按升序排序按照输入字符,和字节数量 ,进行截取字符串中截取匹配字符字符串反转输入一个字符串(含分隔符),以分隔符进行分割 ,反转输出给定一个字符串,反转字符串每个单词字符的顺序,保留单词和空格的初始位置验证是不是ipv4求和最大的子序列值,开始位置和结束位置2345

单例模式

饿汉式

static 是默认全剧配置 ,运用java加载类的机制 ,在线程中是安全的通过方法 获取 这个对象

优点是: 在类加载的时候就创建好了。是没有延迟的,没有加锁效率高缺点是: 浪费内存,产生垃圾对象,对于反射不安全,反序列化也是不支持的

登记式

加强版的饿汉式静态内部类,返回静态内部类中的属性可以实现延时加载。过去实例对象的时候才进行加载。可以通过代码实现 反 反射 (反射就报错)原理是:当你 调用get方法回去初始化 ,因为是一个静态的属性,在虚拟机是全局作用域,反射再去创建 ,通过构造方法的 ,会我们会抛出一个异常 ,也可以通过read 方法让他反序列化也是安全的

枚举式

jdk1.5,没有构造函数,就自动防止反射了, 也支持反序列化,但是用到继承就不很恰当

懒汉式

但是是线程不安全的 , 有可能线程进入先后顺序在判断完成后,没有初始化完成,另一个就进入了可以加线程安全关键字 也可以写成同步代码块然后主线程运行不完成的情况 ,可以先让主线程阻塞

双重检索

因为每次同步代码块效率低

也就是双重检索,在第一次两个都没有创建的时候,第一次判断有可能只需要一次同步,在下一次进行判断的时候,就在外层判断的时候就会被拦截 ,不会再去多次同步

指令重排

使懒汉式不一定是百分之百单例模式 ,在运行中是没问题的,在多线程中,有可能会出现 别的线程过来拿走一个指向为空的地址解决方法 在对象上加一个 volatile 关键字 ,保证不会重排

ThreadLocal

本身不加锁,为每个线程提供一个独立副本 。只能保证在一个线程里 是单例的,在多个线程里就会不一定是单例的(也就是 开了多个线程后 ,每个线程里 new多次是单例,但是每个线程之间的地址不一样,不是单例)

CAS

for 死循环 ,会产生很多的垃圾对象,但是 会最后保证得到单例的唯一性 ,对服务器压力比较大

总结

异常

int 和 integer 的区别

算法题

大位数加法

大位数乘法

出现次数的字符串(多,少)

双层循环 逐个去比较也可以用map 去存值,然后每次取值比较基本数据类型不能用在泛型里

第一个重复的值

通过set 集合 , set方法不允许出现重复的,如果插入进去就说明没重复,如果重复了就输出

第一个只出现一次的字符

先统计次数,然后遍历第一个出现的字符

或者通过判断位置

看一段数字中出现的个数,并将他们按升序排序

按照输入字符,和字节数量 ,进行截取

字符串中截取匹配字符

字符串反转

三种方法

输入一个字符串(含分隔符),以分隔符进行分割 ,反转输出

给定一个字符串,反转字符串每个单词字符的顺序,保留单词和空格的初始位置

验证是不是ipv4

求和最大的子序列值,开始位置和结束位置

1暴力破解法 ,就是穷举 ,所有的情况 2动态规划

主要是看前面一个集合是否为正数,自身是否为正数 ,如果前一个集合为正,自身也为正就加上,前一个集合为负就不加

2

3

4

5



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有