zoukankan      html  css  js  c++  java
  • 软件公司笔试题

    1.java基本数据类型

       byte short int long float boolean double char

    2。单例模式

    第一种(懒汉,线程不安全):

    Java代码  收藏代码
    1. public class Singleton {  
    2.     private static Singleton instance;  
    3.     private Singleton (){}  
    4.   
    5.     public static Singleton getInstance() {  
    6.     if (instance == null) {  
    7.         instance = new Singleton();  
    8.     }  
    9.     return instance;  
    10.     }  

     这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。

    第二种(懒汉,线程安全):

    Java代码  收藏代码
    1. public class Singleton {  
    2.     private static Singleton instance;  
    3.     private Singleton (){}  
    4.     public static synchronized Singleton getInstance() {  
    5.     if (instance == null) {  
    6.         instance = new Singleton();  
    7.     }  
    8.     return instance;  
    9.     }  

     这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。

    第三种(饿汉):

    Java代码  收藏代码
    1. public class Singleton {  
    2.     private static Singleton instance = new Singleton();  
    3.     private Singleton (){}  
    4.     public static Singleton getInstance() {  
    5.     return instance;  
    6.     }  

     这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中大多数都是调用getInstance方法, 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance显然没有达到lazy loading的效果。

    第四种(饿汉,变种):

    Java代码  收藏代码
    1. public class Singleton {  
    2.     private Singleton instance = null;  
    3.     static {  
    4.     instance = new Singleton();  
    5.     }  
    6.     private Singleton (){}  
    7.     public static Singleton getInstance() {  
    8.     return this.instance;  
    9.     }  

     表面上看起来差别挺大,其实更第三种方式差不多,都是在类初始化即实例化instance。

    第五种(静态内部类):

    Java代码  收藏代码
    1. public class Singleton {  
    2.     private static class SingletonHolder {  
    3.     private static final Singleton INSTANCE = new Singleton();  
    4.     }  
    5.     private Singleton (){}  
    6.     public static final Singleton getInstance() {  
    7.     return SingletonHolder.INSTANCE;  
    8.     }  

    3.字符串反转

       {
    String s="abcdefg";
    String s2="";
    char[] cs=s.toCharArray();
    for(int i=cs.length-1;i>=0;i--)
    {
    s2=s2+cs[i];
    }
    System.out.println("对字符串进行反转操作后为:"+s2);
    StringBuffer sb=new StringBuffer("abcdefg");
    StringBuffer sb2=sb.reverse();
    System.out.println("对StringBuffer进行反转操作后为:"+sb2);
    }
    4.字符串中字符替换

    String s2="";
                char[] cs=s.toCharArray();
                for(int i=0;i<s.length();i++){
                    if(i<5){
                        s2=s2+"*";
                    }else{
                        s2=s2+cs[i];
                    }
                }
                System.out.println(s2);

  • 相关阅读:
    sprinboot测试类报错问题(Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...))
    实体类的命名细分
    zuul服务网关
    解决aplication.yml没有图标问题
    用户动态权限菜单管理简单实现方式
    servlet+ajax完成select二级联动/动态传值/查询分页功能
    servlet+jsp实现分页功能
    python——Django之admin的使用
    python-Django连接mysql实现可视化会出现的问题
    python——迭代器、列表解析、三元表达式
  • 原文地址:https://www.cnblogs.com/dawn-and-night/p/7222621.html
Copyright © 2011-2022 走看看