java基础(二)

  • 请你谈谈大O符号(big-Onotation)并给出不同数据结构的例子
    答:大O符号是一个函数渐近线行为的描述。如果一个函数f(n)<=c*g(n),那么我们就说f(n)=O(g(n))。大O符号通常用来描述一个算法的时间和空间的复杂度。比如,对于不同的数据结构,大O用来衡量数据的增加、插入、删除算法等的性能。

  • 请你讲讲数组(Array)和列表(ArrayList)的区别?什么时候应该使用Array而不是ArrayList?
    答:Array数组存的是固定长度的数据,既能存基本数据类型,也能存对象。ArrayList数组可以存变长的数据。但是存的都是对象,所以当它存基本数据时需要进行装箱操作。所以在存数据基本类型时,使用Array会比ArrayList性能高。

  • 请你解释什么是值传递和引用传递?
    答:值传递是在内存中对值的内容拷贝一个副本,不改变原来的值。而引用传递是在内存中拷贝指向这个对象的指针,所以对原指针和拷贝的指针都指向同一个对象,操作时,会改变原对象的内容。

  • 请你讲讲java支持的数据类型有哪些?什么是自动拆装箱?
    答:java支持的数据类型有8种,分别是
    byte, boolean, char,int, short, long, float, double.
    自动装箱就是把基本数据类型封装成一个对象,比如int封装成Integer对象。自动拆箱就是把对象拆成一个基本数据类型,比如Integer拆成int数据类型。

  • 请你解释为什么会出现4.0-3.6=0.40000001这种现象?
    答:计算机计算是会将十进制的数据转化成二进制的数据,对于十进制0.1也就是1/10来说,计算机没有办法去非常精确的表示它,所以就会出现误差。

  • 请你讲讲一个十进制的数在内存中是怎么存的?
    答:是以补码的形式存。大于等于零的数补码使它本身,负数的补码是其反码加1。

  • 请你说说Lamda表达式的优缺点。
    答:优点:
    1.Lamda的写法简洁。是()->{},即是括号加箭头加方法体。
    2.Lamda表达式注重的是实现接口的结果,用Lamda方式写一个匿名类在很多时候简化了大量代码,比如在处理多线程的问题上很方便,不用再新建一个线程类,直接用Lamda方式写一个匿名类重写run方法即可。
    缺点:
    Lamda是java8的新特性,学习它需要消耗学习成本,所以会导致没有学过Lamda表达式的程序员看不懂,理解不了。

  • 你知道java8的新特性吗,请简单介绍一下。
    答:1.Lamda表达式。是以()->{}的方式来实现或者重写接口/类。
    2.方法引用。将方法进行参数化,一般是通过类名::方法名的形式。
    3.Stream API。可以将数据源先进行流处理,然后对它进行过滤、查找等操作。
    4.加强了对Date日期的处理。

  • 请你说明符号“==”比较的是什么?
    答:对于基本数据类型,比较的是数据的值是否相等。对于对象,比较的是对象的地址是否相等,即比较是否是同一个对象。

  • 请你解释Object若不重写hashCode()的话,hashCode()是如何计算出来的?
    答:hashCode是根据c/c++实现的,表示该对象在内存中的地址。

  • 请你解释为什么重写equals方法还要重写hashCode方法。
    答:因为在数据结构map中,只重写equals方法,新建的两个对象内容是一样的,hashCode不一样,那么在map中添加对象这两个内容一模一样的对象都会被添加进去,显然这并不是我们想要的结果。而即重写equals又重写hashCode方法,由于hashCode是一样的,所以将这两个一摸一样的对象添加进map中,只会添加一个,这才是我们想要的结果。

  • 请你介绍一下map的分类和常见的情况。
    答:map是用键值对的方式进行存储,常见的map有hashMap,linkedHashMap,hashTable,treeMap。
    hashMap,hashMap的遍历与它的容量有关,速度快。遍历的顺序每次都不一样。不支持多线程同步,最常见也最常用。
    linkedHashMap,它的遍历与数据有关,记录了数据的插入顺序,遍历顺序每次一样。不支持多线程同步。
    hashTable不支持null为键。但是它的多线程同步的。
    treeMap是实现了一个比较器接口,遍历时会按照键的升序或者降序进行遍历。默认是升序。它也不是线程同步的。

如有问题,欢迎指正补充~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值