1.说一下Java与JavaScript:
Java是一种真正的面向对象的语言,适用于互联网应用程序开发。JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象和事件驱动的编程语言。
解释和编译:Java的源代码在执行之前,必须经过编译。JavaScript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。
Java采用强类型变量检查,即所有变量在编译之前必须作声明;JavaScript中变量是弱类型的,甚至在使用变量前可以不做声明,JavaScript的解释器在运行时检查推断其数据类型。
2.说一下&和&&的区别?
&运算符有两种用法:(1)按位与(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的。如果&&左边的表达式的值是false,右边的表达式会被直接短路掉。
3.int和Integer有什么区别?
为了编程的方便引入了人基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型。int的包装类型就是Integer,Java为每一个引入了对应的包装类型,int的包装类型就是Integer,从Java5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
4.大O符号表示一个程序运行时所需要的渐进时间复杂度上界。
5.数组Array和列表ArrayList的区别:
Array和ArrayList的不同点:
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
Array大小是固定的,ArrayList的大小是动态变化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。
6.解释什么值传递和引用传递:
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.
引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。所以对引用对象进行操作会同时改变原对象. 一般认为,java内的传递都是值传递.
7十进制的数在内存中是怎么存的:补码的形式
8.Java8的新特性:
Lambda表达式——Lambda表达式允许把函数作为一个方法的参数(函数作为参数传递进方法中)
方法引用——方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与Lambda联合使用,方法引用可以使语言的构造更加紧凑简洁。
默认方法:默认方法就是一个在接口里面有了一个实现的方法。
StreamAPI——新添加的StreamAPI(java.util.stream),把真正的函数式编程风格引入到Java中。
Data time API 加强对日期和时间的处理
Optional类—Optional类已经成为Java8类库的一部分,用来解决空指针异常。
Nashorn,JavaScript引擎——Java8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript
9.如果Object类不重写hashCode()的话,hashCode()如何计算出来?
Object的hashcode方法是本地方法,也就是用c语言或c++实现的,该方法直接返回对象的内存地址
10、请你解释为什么重写equals还要重写hashcode?
HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承于Object类,其hashcode码为默认的内存地址,这样即便有相同含义的两个对象,比较也是不相等的。HashMap中的比较key是这样的,先求出key的hashcode(),比较其值是否相等,若相等再比较equals(),若相等则认为他们是相等的。若equals()不相等则认为他们不相等。
11.