第一次面试总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一.十个Double类型的数据相加会出现什么问题,你是怎么解决的

是一个考我Java基础的题目
问题如下:

public class Test2 {
    public static void main(String[] args) {
        double a = 1.02;
        double b = 2.08;
        for (int i = 0; i < 30; i++) {
            System.out.println(a+i*b);
        }
    }
}

输出结果:

34.300000000000004
36.38
38.46
40.540000000000006
42.620000000000005
44.7
46.78000000000001
48.86000000000001
50.940000000000005

原因:这种情况是因为我们的数据在计算内部存储的是2进制(不论在内存还是cpu的寄存器内)的,其表示小数的时候更具不同的系统,不同的环境都是有一定差异的。
解决方法:做float或double运算的时候 建议使用BigDecimal 来处理~

public class Test2 {
    public static void main(String[] args) {
        double a = 1.02;
        double b = 2.08;
        BigDecimal a1 = new BigDecimal(Double.toString(a));
        BigDecimal b1 = new BigDecimal(Double.toString(b));
        for (int i = 0; i < 30; i++) {
            System.out.println(a1.add(b1));
            a1=a1.add(b1);
        }
    }
}
得到的结果很精确:
3.10 5.18 7.26 9.34 11.42 13.50 15.58 17.66 19.74 21.82 23.90 25.98 28.06 30.14 32.22 34.30 36.38 38.46 40.54 42.62 44.70 46.78 48.86 50.94 53.02 55.10 57.18 59.26 61.34 63.42 

结论:处理flout和double数据的运算时,一定要注意!

二、有一个业务是,新增一个表的同时要更新一个表,从创建数据库开始讲一讲你是怎么实现的

三、SQL怎么去重

四、你的项目的单个和批量的删除日志,说一下SQL语句

五、Linux的基本操作

六、用到过多线程吗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值