目录

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、Compiler API

7、通用的Annotations支持

4.Java 7 新特性有哪些。

1.switch中可以使用字串了

2.运用List<String> 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;
    }

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));
    } }

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基础(一)

Java实习生常规技术面试题每日十题Java基础(六)的更多相关文章

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

    目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...

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

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

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

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

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

    目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...

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

    目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...

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

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

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

    目录 1.Java 的 "一次编写,处处运行"如何实现? 2.描述JVM运行原理. 3.为什么Java没有全局变量? 4.说明一下public static void main(S ...

  8. Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  9. java开发师笔试面试每日12题(3)

    1.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序的Java虚拟机.它同时也包含了执行applet需要的浏览器插件.Java开发工具包(JDK)是完整的Java软件开 ...

随机推荐

  1. 【Git项目管理】git新手入门——基础教程

    一.Git工作流程 直接上手看图,了解Git工具的工作流程: 以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词. Workspace:工作区 Index / Stage:暂存 ...

  2. vue2 页面路由

    vue官方文档 src/views/Login.vue <template> <div> <h2>登录页</h2> </div> </ ...

  3. Linux:spool命令

    格式调整有以下参数: set echo on/off--是否显示脚本中的需要执行的命令 set feedback on/off--是否显示 select 结果之后返回多少行的提示 set linesi ...

  4. Identity Server 4 从入门到落地(十)—— 编写可配置的客户端和Web Api

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  5. python爬取实习僧招聘信息字体反爬

    参考博客:http://www.cnblogs.com/eastonliu/p/9925652.html 实习僧招聘的网站采用了字体反爬,在页面上显示正常,查看源码关键信息乱码,如下图所示: 查看网页 ...

  6. Redis集群环境各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

    总结/朱季谦 在搭建Redis5.x版本的集群环境曾出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况,故而把解决方式记录下来. 在以下 ...

  7. .NET6中一些常用组件的配置及使用记录,持续更新中。。。

    NET6App 介绍 .NET 6的CoreApp框架,用来学习.NET6的一些变动和新特性,使用EFCore,等一系列组件的运用,每个用单独的文档篇章记录,持续更新文档哦. 如果对您有帮助,点击右上 ...

  8. THUSC 2021 游记

    想了想不往博客园放不行,还是放上来了. 原文 \[\texttt{Brief Introduction} \] 众所周知,THUSC2021 5 月 15-16 日在杭州市 XJ 中学举办,然而由于 ...

  9. LuoguB2133 我家的门牌号 题解

    Update \(\texttt{2021.11.27}\) 修复了代码中的 \(10000\) 写成 \(n\) 的错误. Content 一个家庭住在一个胡同里面,门牌号从 \(1\) 开始编号. ...

  10. grep的时候Binary file matches **.log 怎么解决

    操作 grep "hello world" test.log 结果 Binary file test.log matches 原因:grep认为test.log是二进制文件 解决方 ...