Java实习生常规技术面试题每日十题Java基础(六)
目录
8.Java中有哪些常用排序方式,使用Java实现冒泡排序。
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基础(八)
目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...
- Java实习生常规技术面试题每日十题Java基础(七)
目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...
- Java实习生常规技术面试题每日十题Java基础(五)
目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...
- Java实习生常规技术面试题每日十题Java基础(四)
目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...
- Java实习生常规技术面试题每日十题Java基础(三)
目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...
- Java实习生常规技术面试题每日十题Java基础(二)
目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...
- Java实习生常规技术面试题每日十题Java基础(一)
目录 1.Java 的 "一次编写,处处运行"如何实现? 2.描述JVM运行原理. 3.为什么Java没有全局变量? 4.说明一下public static void main(S ...
- Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- java开发师笔试面试每日12题(3)
1.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序的Java虚拟机.它同时也包含了执行applet需要的浏览器插件.Java开发工具包(JDK)是完整的Java软件开 ...
随机推荐
- 零基础学习java------day2------关键字、标志符、常量、进制键的转换、java中的数据类型、强制类型转换的格式
今日内容要求: 1. 了解关键字的概念及特点,了解保留字 2. 熟练掌握标识符的含义,特点,可使用字符及注意事项 3. 了解常量的概念,进制,进制之间相互转换,了解有符号标识法的运算方式 4. 掌握变 ...
- 手淘lib-flexible布局适配方案
前置知识:什么是rem CSS3新增的一个相对单位rem(root em,根em).rem是相对于根节点(或者是html节点).如果根节点设置了font-size:10px;那么font-size:1 ...
- Windows zip版本安装MySQL
Windows --MySQL zip版本安装记录: step1. 官网download zip包:http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5. ...
- Linux基础命令---vmstat显示虚拟内存状态
vmstat vmstat指令用来显示虚拟内存使用状态,同时也可以显示进程.cpu活动情况.vmstat报告有关进程.内存.分页.块IO.陷阱和CPU活动的信息.生成的第一份报告给出了自上次重新启动以 ...
- 实现将rsyslog将日志记录与MySQL中
准备两个节点 node3: rsyslog node2: 数据库 准备相应的包 [root@node3 php-fpm.d]#yum install rsyslog-mysql 将数据拷贝到数据 ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(2. 配置NTP服务chrony)
1. 简介 1.1. 这次使用另外一个轻量级的NTP服务,chrony.这是openstack推荐使用的ntp服务. 1.2. 官方网站:https://chrony.tuxfamily.org/ 2 ...
- linux 操作只读变量
由于该操作需要用到 gdb,所以需要先 安装好 gdb 1. 查询是否有gdb: 2. 如果没有,需要先执行 yum install gdb 命令进行安装 3. 定义 只读变量 abc 并打印值: a ...
- SpringCloud微服务-Eureka服务注册与发现
一. Eureka 是什么? Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对微服务 ...
- 【力扣】有序矩阵中第K小的元素
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素.请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素. 示例: matrix = [ [ 1, 5, ...
- selenium: where to get ChromeDriver?
address: http://npm.taobao.org/mirrors/chromedriver