Java面试题精选100是一份为求职者准备的实用资料,涵盖了Java编程语言的基础和深入概念。以下是其中的一些核心知识点:
1. **重构方法**:Java中的常见重构技术包括提取方法(Extract Method)、封装内联(Inline Method)、提炼接口(Extract Interface)、替换类型(Replace Type with Interface)、提取超类(Extract Superclass)等。这些重构可以帮助改进代码结构,提高可读性和可维护性。
2. **JUnit测试**:Junit是Java中最流行的单元测试框架,面试者应能描述如何编写单元测试用例,如何使用assert关键字进行断言,以及测试覆盖率的概念。
3. **面向对象原则**:OOP(Object-Oriented Programming)的核心原则包括单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、接口隔离原则(Interface Segregation Principle, ISP)和依赖倒置原则(Dependency Inversion Principle, DIP)。
4. **作用域**:Java中的访问修饰符(public、protected、private和default)决定了一个成员变量或方法在不同范围内的可见性。public允许任何地方访问,protected允许同一包和子类访问,private只在当前类内可见,而default(不写时)仅在同一包内可见。
5. **匿名内部类**:匿名内部类用于创建没有名字的实例,只能继承一个类或实现一个接口,这在实现回调函数或者事件监听器时非常常见。
6. **位运算符与逻辑运算符**:&是按位与运算符,用于处理二进制位,&&是逻辑与运算符,用于条件判断。理解它们的运算规则对于处理位操作和控制流程至关重要。
7. **Collections接口和实现类**:Java集合框架中的接口如List、Set、Queue等,以及它们的实现类如ArrayList、LinkedList、HashSet、TreeSet等各有特点,比如ArrayList适合随机访问,LinkedList适合频繁的插入和删除操作。Map接口的典型实现如HashMap、TreeMap等,各有查找速度和排序的要求。
8. **assertion**:断言在开发阶段用于验证程序假设,确保关键逻辑的正确性。在发布后的生产环境中,一般会禁用以提高性能。
9. **String对象创建**:字符串常量池优化表明,`new String("xyz")`会创建两个对象,一个字符串对象和一个引用对象。而`String s1 = "xyz";`只有一次对象创建。
10. **Math.round()**:此方法根据四舍五入规则将浮点数转换为最接近的整数。对于正数,11.5四舍五入后变成12;负数-11.5四舍五入后变成-11。
11. **short类型溢出**:`shorts1=1;s1=s1+1;`会抛出异常,因为短整型(short)的最大值+1超过了它的范围。而`shorts1=1;s1+=1;`则不会,因为它自动提升到int类型再进行加法。
掌握这些知识点能够帮助面试者展示他们的Java基础扎实度,同时也能在实际工作中提高代码质量和效率。