• Java实习生常规技术面试题每日十题Java基础(六)


    目录

    1.在Java语言,怎么理解goto。

    2.请描述一下Java 5有哪些新特性??

    3.Java 6新特性有哪些。

    4.Java 7 新特性有哪些。

    5.Java 8 新特性有哪些。

    6.描述Java 动态代理。

    7.为什么要使用单例模式?

    8.Java中有哪些常用排序方式,使用Java实现冒泡排序。?

    9.Java中垃圾回收有什么目的?什么时候进行垃圾回收?

    10.如何实现对象克隆。


    1.在Java语言,怎么理解goto。

    goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移,构成循环,跳出循环体等功能。而在结构化程序语言中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,不推荐使用,因为java语言讲究简单,方便。

    2.请描述一下Java 5有哪些新特性?

    1、泛型

    2、For-Each循环

    3、自动装包/拆包

    4、枚举

    5、静态导入

    6、Annotation(框架配置,代码生成 的里程

    7、可变参数

    8、字符串格式化器(java.util.Formatter)

    9、新的线程模型和并发库 Thread Frameword

    3.Java 6新特性有哪些。

    1、引入了一个支持脚本引擎的新框架

    2、UI的增强

    3、对WebService支持的增强(JAX-WS2.0和JAXB2.0)

    4、一系列新的安全相关的增强

    5、JDBC4.0

    6、CompilerAPI

    7、通用的Annotations支持

    4.Java 7 新特性有哪些。

    1.switch中可以使用字串了

    2.运用List tempList = new ArrayList<>(); 即泛型实例化类型自动推断

    3.语法上支持集合,而不一定是数组

    4.新增一些读取环境信息的工具方法

    5.Boolean类型反转,空指针安全,参与位运算

    6.两个char间的equals

    7.安全的加减乘除

    8.map集合支持并发请求,且可以写成 Map map = {name:“xxx”,age:18};

    5.Java 8 新特性有哪些。

    1.Lambda 表达式 Lambda允许把函数作为一个方法的参数,用更简洁的语法实现以前复杂的功能代码

    2.方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

    3.接口中可以使用default关键字声明一个默认实现方法。

    4.新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。

    5.新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。

    6.加强对日期与时间的处理。

    7.Optional 类用来解决空指针异常。

    8.Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。

    6.描述Java 动态代理。

    代理模式是常用的java设计模式之一,java中的代理实现主要有基于接口的jdk动态代理和基于类的cglib动态代理,代理的特点就是会为目标对象产生代理对象,从而在调用实际目标对象方法时实现无侵入式的代码扩展,比如一些框架中的拦截器机制、springAOP面向切面机制都是基于动态代理模式实现的,其次也可以更安全的保护目标对象。动态代理的目的主要就是为了解决一些安全性问题(不让客户直接调用目标对象的功能,而是相当于通过中介),其次就是可以在调用目标功能方法之前、之后额外添加一些功能,比如日志、事务等,并且还能阻止调用功目标功能,从而实现权限控制等。

    7.为什么要使用单例模式?

    1、避免在开发程序的时候,创建出一个类的多个实例(占用空间,性能问题),所以使用单例模式,保证该类只创建一个对象;

    2、一般单例模式通常有两种形式:它的构造函数为private的,必须有一个静态方法,静态方法返回自己的实例;实行形式有两种,懒汉式和饿汉式;所谓的饿汉式就是在声明实例的时候直接初始化对象,而懒汉式是先声明一个空对象,在静态方法中实例化该对象并返回。

    //构造方法私有化,让外界无法创建对象
    
    private Test() {
    
    ?? ?}
    ?? ?//在当前类中声明静态对象,并提供公共静态方法让外界调用获取对象
    ?? ?private static Test t;
    
    
    ?? ?public static Test getInstance(){
    ?? ??? ?if(t==null){
    ?? ??? ??? ?t=new Test();
    ?? ??? ?}
    ?? ??? ?return t;
    ?? ?}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    8.Java中有哪些常用排序方式,使用Java实现冒泡排序。

    排序主要用于将一组无需数据进行升序/降序排列,Java中有很多种排序方法,如:冒泡排序,选择排序,插入排序,快速排序等,其中在大量数据无需数据中效率最高的属于快速排序,比如实际工作中如果需要对数据排序,我们可以借助JDK中自带的Arrays.sort方法,它内部采用了快速排序,效率非常高,当然也可以自己实现。

    冒泡排序代码如下:

    import java.util.Arrays;
    
    public class BubbleSort {
    
    ? ? public static void BubbleSort(int[] arr) {
    ? ? ? ? int temp;//定义一个临时变量
    ? ? ? ? for(int i=0;i<arr.length-1;i++){?? ??? ?//循环的轮数
    ? ? ? ? ? ? for(int j=0;j<arr.length-i-1;j++){?? ?//从前往后循环比较,从第1个数往后依次比较
    ? ? ? ? ? ? ? ? if(arr[j+1]<arr[j]){?? ??? ??? ?//如果后面的数字小于前面的则交换
    ? ? ? ? ? ? ? ? ? ? temp = arr[j];
    ? ? ? ? ? ? ? ? ? ? arr[j] = arr[j+1];
    ? ? ? ? ? ? ? ? ? ? arr[j+1] = temp;
    ? ? ? ? ? ? ? ? }
    ? ? ? ? ? ? }
    ? ? ? ? }
    ? ? }
    
    ? ? public static void main(String[] args) {
    ? ? ? ? int arr[] = new int[]{1,6,2,2,5};
    ? ? ? ? BubbleSort.BubbleSort(arr);
    ? ? ? ? System.out.println(Arrays.toString(arr));
    ? ? }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    9.Java中垃圾回收有什么目的?什么时候进行垃圾回收?

    Java语言中一个显著的特点就是引入了垃圾回收机制(简称GC),使c语言程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。简单的理解,就是当对象失去引用后,系统会在调度的时间对它所占用的内存进行回收。

    10.如何实现对象克隆。

    实现对象克隆有两种方式:

    1). 实现Cloneable接口并重写Object类中的clone()方法;

    2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

    其他面试题:

    Java实习生常规技术面试题每日十题Java基础(八)

    Java实习生常规技术面试题每日十题Java基础(七)

    Java实习生常规技术面试题每日十题Java基础(六)

    Java实习生常规技术面试题每日十题Java基础(五)

    Java实习生常规技术面试题每日十题Java基础(四)

    Java实习生常规技术面试题每日十题Java基础(三)

    Java实习生常规技术面试题每日十题Java基础(二)

    Java实习生常规技术面试题每日十题Java基础(一)

  • 相关阅读:
    Curve 块存储应用实践 -- iSCSI
    flask restful项目开发结尾必看!!!
    社区买菜系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
    flann的接口介绍
    PHP MySQL 创建数据库
    torch.nn.interpolate—torch上采样和下采样操作
    小节3:数据类型
    【2023-09-01】vue中自定义按钮设置disabled属性后,异常触发click事件
    《洛谷深入浅出进阶篇》 P2367语文成绩——差分
    微信小程序——<image>图片组件图片显示闪烁
  • 原文地址:https://blog.csdn.net/m0_67403013/article/details/125438886