java小白面试题

java小白面试题

  1. java有几种基本数据类型?各是哪些?各自范围是多少?

     java有8种数据类型,分别是:int、short、long、float、double、byte、char、boolean
     其中有6种数字型:int、short、long、byte (四种整型)、double、float(俩种浮点型)
         有1种字符型:char
         有1种布尔型:boolean
    

    在这里插入图片描述

  2. 超出long的范围的数四则运算可用BigDecimal
    在这里插入图片描述

    import java.math.BigDecimal;
    import java.math.BigInteger;
    
    /**
     * @Auther:wjw
     * @Date:2022/5/26 - 05 - 26 - 20:47
     * @Description: PACKAGE_NAME
     * @version: 1.0
    */
    public class 超出long的范围 {
         public static void main(String[] args) {
             //查看long的最大值
             long a = Long.MAX_VALUE;
             //查看long的最小值
             long b = Long.MIN_VALUE;
             //查看long的最大值+1
             long c = Long.MAX_VALUE + 1;
             //查看long的最大值-1
             long d = Long.MIN_VALUE - 1;
    
             System.out.println(a); //9223372036854775807
             System.out.println(b); //-9223372036854775808
             System.out.println("long的最大值+1:" + c); //-9223372036854775808
             System.out.println("long的最小值-1:" + d); //9223372036854775807
    
             //超出long的范围的数相加
             BigDecimal bd = new BigDecimal(a);
             bd = bd.add(bd);
             System.out.println("long的最大值的2倍:" + bd); //18446744073709551614
         }
    }
    
  3. 一个char占几个字节?可以存多少个汉字?

          java中的一个char占用2个字节。java采用unicode,2个字节来表示一个字符。 一个数字
      或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个字节都为0,就是浪
      费了点空间。存汉字就占满了2个字节。
    
  4. equals()和 == 的区别?

     = = 是运算符,equals是来自于Object类定义的一个方法。
     = = 判断两个变量名的值是否指向同一个内存空间地址(如果都指向同一个
         内存空间地址的话就返回true) 因此运行结果为false
     = = 可以用于基本数据类型和引用数据类型,equals只能用于引用类型。
     = = 俩端如果是基本数据类型,就是判断值是否相同,equals再重写之后,
         判断俩个对象的属性值是否相同;equals如果不重写其实就是 = = 号
    
     int a = 1;
     int b = 1;//a已经开辟了1的一个地址空间,b直接指向1对应的地址空间就可以了
    
     System.out.println(a == b);//true
    
     String s1 = new String("hello");
     String s2 = new String("hello");
     String s3 = new String("hello");
     System.out.println(s1 == s2);//false
     s2 = s3;
     s1 = s3;
     System.out.println(s1 == s2);//true
    
  5. 为什么重写equals后还要重写hashcode?

          重写equals可以让我们自己定义判断俩个对像是否相同的条件,Object中定义的hashcode方
      法生成的哈希码能保证同一个类的对象的哈希码一定是不同的;当equals返回为true,我们在逻
      辑上可以认为是 一个对象,但查看哈希码,发现哈希码不同,和equals方法返回结果违背,重写
      hashcode之后,我们可以自定义哈希码的生成规则。
          Object中定义的hashcode方法生成的哈希码根对象本身的属性值是无关的,重写hashcode之
      后,我们可以自定义哈希码的生成规则,可以通过对象的属性值计算出哈希码。
          hashmap中借助equals和hashcode方法来完成数据的存储。重写hashcode可以将根据对象的
      内容查询转换为根据索引查询。
    
  6. 什么是重写?什么是重载?二者的区别?

     1、重写:
           重写(Override)是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父
       类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调
       用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
    

    在这里插入图片描述

    在这里插入图片描述

     2、重载:
           重载(Overload)是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,
       它们参数列表不同,则称为方法的重载(Overload)
     3、区别:重载实现于一个类中;重写实现于子类中。
    

    在这里插入图片描述

  7. Arraylist和linkedlist的区别,优缺点。

         ArrayList,与LinkedList都是属于实现了List接口的类。首先从名字前缀开始看  ,Array
    表示数组,Link表示链表。
         所以ArrayList底层是基于动态数组的。而LinkedList底层是基于双向链表的。
         ArrayList必须是连续内存的,而LinkedList不要求连续内存。
         ArrayList查询快,增加和删除慢;LinkedList增加和删除快,查询慢。
         ArrayList 底层为动态数组,所以查询时是直接通过访问下标,查询效率高。而增加、删除
    时,为了保证内存的连续,增加和删除某一位置后,后方元素都得向前移动一位,最坏情况就是删
    除第一个元素,则后面第2个到第n个元素都得往前移动一位。所以增加删除慢。
         LinkedList底层为双向链表,不必保证内存上的连续,所以增删快,而查询时必须要经历从
    头到尾的遍历,所以查询慢。
         为什么说ArrayList是基于动态数组呢?一般的数组,容量确定了就不可以再更改,也无法超
    过。但是ArrayList可以,例如当数组元素数已满时调用了add方法向尾部添加一个元素,则此时会
    进行扩容,ArrayList会自动创建一个更大的数组,并将所有元素拷贝到新数组中,而原数组会被抛
    弃,会被GC回收。扩容后新数组的容量为原来的1.5倍。
    
  8. 什么是线程?线程和进程有什么区别?

         线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作
     单位。我们可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如
     果一个线程完成一个任务要100毫秒,那么用十个线程完成该任务只需10毫秒。
         区别:一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个
     应用。
         而线程是在进程中执行的一个任务。线程是进程的子集,一个进程可以有很多线程,每条线程
     并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。
         别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。
         有两种创建线程的方法:一是实现Runnable接口,然后将它传递给Thread的构造函数,创建
     一个Thread对象;二是直接继承Thread类。
    
  9. 主键和索引的概念、区别?

  10. 什么是分布式?

        分布式系统是一组独立的计算机以网络链接组成的服务系统,对用户来说是一个统一的体系。
    因为分布式系统建立在网络之上,由多个独立操作系统组成,所以分布式系统对比独立部署并运行
    于单一操作系统之上的软件系统来说存在要解决通信和共识等问题。
    
  11. String类能否被继承?String和StringBuffer有什么区别?
    在这里插入图片描述

    在这里插入图片描述

  12. 请求方式有什么?
    在这里插入图片描述

  13. 面向对象编程有哪些特点?

    1、封装:封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的
    访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数
    据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
    2、继承:继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承
    父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子
    类具有父类相同的行为。
    3、多态:多态同一个行为具有多个不同表现形式或形态的能力,是指一个类实例(对象)的相同方法
    在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口,这意味
    着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式
    予以调用。
    
  14. java中访问控制符
    在这里插入图片描述

  15. Integer和int有什么区别

    Integer是int的包装类;int是基本数据类型;
    Integer变量必须实例化后才能使用;int变量不需要;
    Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
    Integer的默认值是null;int的默认值是0。
    
  16. final、finally、finalize的区别。
    在这里插入图片描述

  17. java中的锁机制

     什么是锁?
         在并发环境下,多个线程会对同一个资源进行争抢,所以就会导致数据出现不一致的问题,为
     了解决这一个问题,就引入了锁机制,通过一个抽象的锁来对资源进行锁定。
    

    linux常用命令
    在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Juvenile少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值