IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java基础复习(三)(准备大数据开发面试) -> 正文阅读

[大数据]Java基础复习(三)(准备大数据开发面试)

常见面试题来自牛客网:https://www.nowcoder.com/tutorial/94/4206176d637541fa92c784a4f547e979

一、前言

这个专栏是Java基础复习,将记录我准备大数据开发面试的过程,在校招面试中占了比较大的部分。希望自己现在夯实基础,笑着面对接下来的校招。那么现在开始行动起来吧!

二、常见题

1.请你解释为什么会出现4.0-3.6=0.3999999999999999这种现象?

首先,我们先来复习一下十进制和二进制是如何相互转换的?

附上一张思维导图:

思维导图
(一)、二进制–>十进制

二进制正整数–>十进制:

首位为0:先补齐位数,将二进制中的位数分别与对应的值相乘,然后相加得到的就为十进制

二进制正整数-->十进制
二进制负整数–>十进制:

首位为1:先减1,然后对结果取反,将二进制中的位数分别与对应的值相乘,然后相加得到的就为十进制

二进制负整数-->十进制
小数二进制转化为十进制:

将二进制中的位数分别与对应的值相乘,然后相加,得到的值即为换算后的十进制。
小数二进制转化为十进制

(二)、十进制–>二进制

十进制正整数–>二进制:除二取余,倒序排列,高位补零
十进制正整数转二进制
十进制负整数–>二进制:先将对应的正整数转化成二进制后,对二进制取反,再对结果+1

十进制负整数转二进制
小数–>二进制:对小数点以后的数×2,取结果的整数部分,然后再用小数部分再×2,再取结果的整数部分……以此类推,直到小数部分为0或者位数足够为止。然后把取的整数部分从上到下排列。

十进制小数转二进制
十进制小数转二进制

现在进入正题:

这里给出比较官方的回答,《Java核心技术卷》书上写道:这种舍入误差的主要原因是浮点数值采用二进制系统表示, 而在二进制系统中无法精确地表示分数 1/10。这就好像十进制无法精确地表示分数 1/3—样。

就是说我们在代码中编写的 System.out.println(4.0 - 3.6); 这样一段代码,
?
计算过程:
?①将十进制的 4.0 转换成 二进制,将十进制的 3.6 转换成二进制;
?②使用转换后的二进制,进行减法运算
?
到这里,读者朋友们应该大概知道什么原因了,因为十进制的 3.6 转换成二进制为:11.100110011001…(一直循环除不尽)

3.6除不尽

总结: 因为 3.6 转成二进制为 11.10011001…,除不尽的,所以 system.out.println(4.0 - 3.6); 就会输出 0.3999999999999999

2.数组(Array)和列表(ArrayList)的区别?什么时候应该使用Array而不是ArrayList?

记住一句话:固定数组,动态列表

区别:
(一)效率上:
Array效率高,但是容量固定,不能扩充
ArrayList效率低,可动态扩容

(二)类型识别:
ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。

Array中只能存储同一数据类型的数据,但ArrayList可以存任何Object,如String等

Array和ArrayList相互转换代码:
(一)ArrayList转换Array

//ArrayList转换Array
        List<String> arrayList = new ArrayList<>();
        arrayList.add("fg");
        arrayList.add("thn");
        arrayList.add("gfhjfyh");
        //转换
        String[] arr = arrayList.toArray(new String[arrayList.size()]);
        //打印输出
        for(int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        /*
        * fg
          thn
          gfhjfyh
         */

(二)Array转换ArrayList

public static void main(String args[]) {
        String[] arr = new String[]{"ab","cd","ef"};
        //Array转换ArrayList
        List<String> list = new ArrayList<>(Arrays.asList(arr));
        System.out.println(list.toString());//[ab, cd, ef]
    }
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:16:11  更:2021-12-26 22:16:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:33:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码