Java|资深架构师整理分享60道全套Java核心技术面试题及答案

Java|资深架构师整理分享60道全套Java核心技术面试题及答案

文章图片

Java|资深架构师整理分享60道全套Java核心技术面试题及答案

大家想不想进入一线大厂来进行自我提升、涨薪跳槽呢?今天就给大家分享一波阿里资深架构师整理分享出的60道必备的Java核心技术面试题及答案 , 希望大家能够喜欢!文末还有大量面试题分享 , 不止这60道!!60道必备Java核心技术面试题及答案1、作用域 publicprivateprotected以及不写时的区别
答:区别如下:
作用域 当前类 同一 package 子孙类 其他 package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为 friendly
2、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类 , 是否可以 implements(实现)interface(接口)
答:匿名的内部类是没有名字的内部类 。 不能 extends(继承) 其它类 , 但一个内部类可以作为一个接口 , 由另一个内部类实现
3、Static Nested Class 和 Inner Class 的不同
答:Nested Class (一般是 C++的说法) , Inner Class (一般是 JAVA 的说法) 。 Java 内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上 。 注: 静态内部类(Inner Class)意味着 1 创建一个 static 内部类的对象 , 不需要一个外部类对象 , 2 不能从一个 static 内部类的一个对象访问一个外部类对象!
4、&和&&的区别
答:&是位运算符 , 表示按位与运算 , &&是逻辑运算符 , 表示逻辑与(and)
5、Collection 和 Collections 的区别
答:Collection 是集合类的上级接口 , 继承与他的接口主要有 Set 和 List.Collections 是针对集合类的一个帮助类 , 他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
6、什么时候用 assert
答:assertion(断言)在软件开发中是一种常用的调试方式 , 很多开发语言中都支持这种机制 。
在实现中 , assertion 就是在程序中的一条语句 , 它对一个 boolean 表达式进行检查 , 一个正确程序必须保证这个 boolean 表达式的值为 true;如果该值为 false , 说明程序已经处于不正确的状态下 , 系统将给出警告或退出 。 一般来说 , assertion 用于保证程序最基本、关键的正确性 。 assertion 检查通常在开发和测试时开启 。 为了提高性能 , 在软件发布后 , assertion 检查通常是关闭的
7、String s = new String(\"xyz\");创建了几个 String Object
答:两个 , 一个字符对象 , 一个字符对象引用对象
8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少
答:Math.round(11.5)==12;Math.round(-11.5)==-11;round 方法返回与参数最接近的长整数 , 参数加 1/2 后求其 floor
9、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;(可以正确编译)
10、Java 有没有 goto
答:java 中的保留字 , 现在没有在 java 中使用
11、数组有没有 length()这个方法? String 有没有 length()这个方法
答:数组没有 length()这个方法 , 有 length 的属性 。 String 有有 length()这个方法
12、Overload 和 Override 的区别 。 Overloaded 的方法是否可以改变返回值的类型
答:方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现 。 重写 Overriding是父类与子类之间多态性的一种表现 , 重载 Overloading 是一个类中多态性的一种表现 。 如果在子类中定义某方法与其父类有相同的名称和参数 , 我们说该方法被重写 (Overriding) 。 子类的对象使用这个方法时 , 将调用子类中的定义 , 对它而言 , 父类中的定义如同被\"屏蔽\"了 。 如果在一个类中定义了多个同名的方法 , 它们或有不同的参数个数或有不同的参数类型 , 则称为方法的重载(Overloading) 。 Overloaded 的方法是可以改变返回值的类型