Java EE面试笔试

笔试题

实现一个单例模式,饿汉式

考点:单例,线程并发

/**
 * 单利模式 饿汉式
 * @author wangxuekai
 *
 */
public class Singleton {
    private Singleton(){}
    private static Singleton instance = null;
    public static Singleton getInstance(){
        if(instance == null){
            synchronized (Singleton.class) {
                while(instance == null)
                    instance = new Singleton();
            }
        }
        return instance;
    }
}
/**
 * 单例模式  懒汉式
 * @author wangxuekai
 *
 */
public class Singleton2 {

    private Singleton2(){}

    private static Singleton2 instance = new Singleton2();

    public static Singleton2 getInstance(){
        return instance;
    }
}
//测试单例模式 饿汉式
    private static void singletonTest() {
        Singleton singleton = Singleton.getInstance();
        System.out.println("第一次---"+singleton);     
        for(int i = 0;i < 10; i++){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.currentThread().sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    Singleton singleton = Singleton.getInstance();
                    System.out.println(Thread.currentThread().getName()+"----"+singleton);
                }
            }).start();
        }
    }

利用JDK提供的API随机生成50-100之间的整数

考点:java.util.Random;java.lang.Math;

package com.interview.test;

import java.util.Random;

/***
 * 利用jdk提供的api,生成50-100之间的整数
 * Random用法
 * @author wangxuekai
 *
 */
public class RandomTest {

    public static void main(String[] args) {
        Random random = new Random();
        //nextInt(51) 取值范围是 0-50,如果取值为50-100,则可以再增加50
        //nextDouble() 取值范围0.0d(包括)到 1.0d(不包括)
        //nextFloat() 取值范围0.0f(包括)到 1.0f(包括)范围内
        for(int i = 0; i <20;i++ ){
            System.out.println("第"+i+"个数:"+(random.nextInt(51)+50));
            System.out.println("第"+i+"个数:"+(random.nextDouble()));
            System.out.println("第"+i+"个数:"+(random.nextFloat()));
        }

        //利用Math工具类random方法,取值范围0.0~1.0
        //Math.round(Double double) 取参数double最近的值 四舍五入
        System.out.println();
        int i = 0;
        while(i < 10){
            System.out.println(Math.round(Math.random()*50)+50);
            i++;
        }
    }

}

对数组冒泡排序

package com.interview.test;

/***
 * 实现冒泡排序
 * @author wangxuekai
 *
 */
public class BubbleSort {

    public static void main(String[] args) {
        int[] ins = {10,5,9,1,23,90,23,7,2,11};
        //Arrays.sort(ins);//利用Arrays工具类sort方法
        BubbleSort bub = new BubbleSort();
        bub.bubbleSort(ins);
        bub.show(ins);
    }
    //冒泡排序
    public void bubbleSort(int[] ins){
        for(int i = 0; i < ins.length-1; i++){//外循环,循环次数为数组的长度
            for(int j = 0; j < ins.length-i-1; j++){
                if(ins[j] > ins[j+1]){
                    swap(ins, j, j+1);
                }
            }
        }
    }
    //互换位置
    public void swap(int[] ins,int i,int j){
        ins[i] = ins[i] ^ ins[j];
        ins[j] = ins[i] ^ ins[j];
        ins[i] = ins[i] ^ ins[j];
    }
    //打印数组
    public void show(int[] ins){
        for(int i = 0; i < ins.length; i++){
            System.out.print(ins[i]+"\t");
        }
    }

}

有一个数组,如{0,1,2,3,4,6,12,0,2,45,66,0,23,4,1},剔除其中的数值0 ,剔除之后为{1, 2, 3, 4, 6, 12, 2, 45, 66}

package com.interview.test;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/***
 * 移除数组中 0
 * 如{0,1,2,3,4,6,12,0,2,45,66,0,23,4,1}
 * 移除之后
 * {1, 2, 3, 4, 6, 12, 2, 45, 66}
 * @author wangxuekai
 *
 */
public class ArrayTest {

    public static void main(String[] args) {
        int[] ins = {0,1,2,3,4,6,12,0,2,45,66,0,23,4,1};
        Object[] tmp = remove(ins,0);
        //通过Arrays.toString()将数组转成字符串打印
        System.out.println(Arrays.toString(tmp));
    }

    //通过List来完成
    private static Object[] remove(int[] ins,int value) {
        //声明一个list,用来存储数组中数据
        List<Integer> linkedList = new LinkedList<Integer>();
        //遍历数组,将值放入list
        for(int i : ins){
            linkedList.add(i);
        }
        //获取list中需要剔除value的始末位置,截取list
        linkedList = linkedList.subList(linkedList.indexOf(value), linkedList.lastIndexOf(value));
        //遍历list,剔除value
        for(int i = 0; i < linkedList.size();i++){
            if(linkedList.get(i).equals(value)){
                linkedList.remove(i);
            }
        }
        //通过list中的toArray方法转成数组
        return linkedList.toArray();
    }
}

display: none 和 visibility: hidden;区别

display:none 设置元素为不可见,不会占用页面空间。
visibility:hidden:设置页面元素不可见,但是会占用相应的页面空间。

类似格式JSON,使用JS取出kay=value

var JSON = {
        "name":"wangxuekai",
        "email":"wangxuekai@g.com",
        "age":"26"
};
<script type="text/javascript">
    var JSON = {
            "name":"wangxuekai",
            "email":"wangxuekai@g.com",
            "age":"26"
    };

    for(var n in JSON){
        alert(n + "===" + JSON[n]);
    }
</script>

$(document).read()和window.load区别

1.window.load要等到页面元素全部加载完毕才会执行,包括静态资源。而 (document).read()DOM2. (document).read()方法调用后,传入的方法是追加的形式,方法都会调用。而window.load会覆盖前面的方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值