zoukankan      html  css  js  c++  java
  • JAVA基础面试题

    集合    :JAVA集合面试题
    JVM      :JVM面试题
    多线程     :Thread面试题
    SPRING  :SPRING面试题

    1.作用域public,private,protected,以及不写时的区别

     2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)

    匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现

    3.&和&&的区别

    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)

    4.Collection 和 Collections的区别

    Collection是集合类的上级接口,继承于它的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

    5.String s = new String("xyz");创建了几个String Object

    两个,一个字符对象,一个字符对象引用对象

    6.Math.round(11.5)等於多少? Math.round(-11.5)等於多少

    Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor

    7.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错

    short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)   short s1 = 1; s1 += 1;(可以正确编译)

    8.数组有没有length()这个方法? String有没有length()这个方法

    数组没有length()这个方法,有length的属性。String有有length()这个方法

    9.构造器Constructor是否可被override

    构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading

    10.是否可以继承String类

    String类是final类故不可以继承

    11.用最有效率的方法算出2乘以8等於几

    2 << 3

    12.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

    是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

    13.swtich参数范围

    switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

    14.什么是java序列化,如何实现java序列化?

    序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
    序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

    15.java基本数据类型

    Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
    
    byte:8位、有符号的,以二进制补码表示的整数。最小值是 -128(-2^7);最大值是 127(2^7-1);默认值是 0;
    short:16 位、有符号的,以二进制补码表示的整数。最小值是 -32768(-2^15);
    最大值是 32767(2^15 - 1);默认值是 0;
    int:32位、有符号的以二进制补码表示的整数。最小值是 -2,147,483,648(-2^31);最大值是 2,147,483,647(2^31 - 1);默认值是 0 ;
    long: 64 位、有符号的以二进制补码表示的整数。最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);默认值是 0L;
    float:单精度、32位、符合IEEE 754标准的浮点数。默认值是 0.0f;
    double:双精度、64 位、符合IEEE 754标准的浮点数。默认值是 0.0d;
    boolean:表示一位的信息。只有两个取值:true 和 false;默认值是 false;
    char:单一的 16 位 Unicode 字符。最小值是 u0000(即为 0);
    最大值是 uffff(即为65、535);char 数据类型可以储存任何字符;

    16.自动装箱与拆箱

    装箱:将基本类型用它们对应的引用类型包装起来;
    拆箱:将包装类型转换为基本数据类型;   
    Java使用自动装箱和拆箱机制,节省了常用数值的内存开销和创建对象的开销,提高了效率,由编译器来完成,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。

    17.静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?

    当类加载器将类加载到JVM中的时候就会创建静态变量,这跟对象是否创建无关。静态变量加载的时候就会分配内存空间。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。
    静态代码块不能包含this或者super,它们通常被用初始化静态变量。

    18.什么是反射API?它是如何实现的?

    反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能。这些功能是通过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以获取到类名。

    19.JVM自身会维护缓存吗,是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理的堆?为什么?

    JVM自身会管理缓存,它在堆中创建对象,然后在栈中引用这些对象。

    20.final 在 Java 中有什么作用

    final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。特征:凡是引用final关键字的地方皆不可修改!
    (1)修饰类:表示该类不能被继承;
    (2)修饰方法:表示方法不能被重写;
    (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

    21.普通类和抽象类有哪些区别

    普通类不能包含抽象方法,抽象类可以包含抽象方法。
    抽象类不能直接实例化,普通类可以直接实例化。

    22.BIO、NIO、AIO 有什么区别

    BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
    NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
    AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

    23.java支持多继承吗?

    不支持。只能支持单继承,即一个类只有一个父类。可以用implements实现多个接口扩展

    24.值传递和引用传递

    值传递是对基本类型变量而言,传递是该变量的一个副本,改变副本不会影响原变量
    引用传递一般是对于对象型变量而言,传递的是该对象地址的一个副本,改变副本,会影响原变量

    25.什么是JDK?什么是JRE?

    JDK: 顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的。它除了包括完整的JRE(Java Runtime Environment),Java运行环境,还包含了其他供开发者使用的工具包。
    JRE:普通用户而只需要安装JRE(Java Runtime Environment)来运行Java程序。而程序开发者必须安装JDK来编译、调试程序。

    26.java如何对大数据进行查重

    参考 Java进阶(七)布隆过滤器

  • 相关阅读:
    DevExpress控件使用系列--ASPxUploadControl(图片上传及预览)
    DevExpress控件使用系列--ASPxGridView+Popup+Tab
    DevExpress控件使用系列--ASPxTreeList
    "Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b7
    Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
    ExtJs的事件机制Event(学员总结)
    Ext.Loader
    Ext.ComponentQuery.query()
    Ext.grid.Panel表格分页
    WPF概述
  • 原文地址:https://www.cnblogs.com/ryjJava/p/14421462.html
Copyright © 2011-2022 走看看