达内CoreJava面试题集:涵盖基础到高级

需积分: 7 3 下载量 156 浏览量 更新于2024-07-24 收藏 515KB DOC 举报
"这是一份来自达内的软件面试题集,包含了Java核心知识和面试常见问题,旨在帮助求职者准备新年面试。题目涵盖了Java基础、面向对象、异常处理、多线程、集合框架等多个方面,全部为企业真实面试题。" 这篇资料的核心内容主要涉及以下几个Java编程的重要知识点: 1. **Java基本类型**:Java有8种基本类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **Java跨平台原理**:Java通过JVM(Java虚拟机)实现跨平台,编译后的Java代码(字节码)可以在任何安装了对应版本JVM的操作系统上运行。 3. **String类**:String在Java中是一个对象,不是基本类型,且它是final类,不能被继承。 4. **逻辑运算符**:`&`是按位与运算符,`&&`是逻辑与运算符,`&&`具有短路特性,只会在左侧表达式为真时才计算右侧。 5. **Switch语句**:在Java 7之前,switch不支持byte、short、char类型的常量和枚举类型,从Java 7开始,可以使用String。但需要注意,字符串匹配时会进行全等比较,不考虑大小写。 6. **短整型溢出**:在Java中,直接使用`s1=s1+1`可能会导致短整型溢出,而`s1+=1`会自动提升类型,避免溢出。 7. **字符存储汉字**:Java中的char类型使用Unicode编码,可以存储一个汉字,因为它占两个字节。 8. **高效计算2的幂次**:可以用`Integer.toBinaryString()`转换为二进制查看位数,或者使用`Math.pow()`,但更高效的方案是利用移位操作,如`1 << 3`计算2的3次方。 9. **final修饰变量**:final修饰的对象引用不可变,但对象内部的状态可以改变。 10. **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于对象,每个实例有自己的副本。 11. **面向对象特征**:封装、继承、多态。 12. **访问控制权限**:public(公共)、private(私有)、protected(受保护)以及默认(包级私有),决定了类成员的可见范围。 13. **Overload(重载)与Override(重写)**:重载发生在同一类中,方法名相同但参数列表不同;重写发生在子类中,方法名、返回类型和参数列表都必须与父类方法一致。 14. **构造器**:构造器可以被重载,但不能被重写。 15. **抽象类与接口**:抽象类可以包含抽象方法和非抽象方法,可以有实例变量;接口只能声明抽象方法和常量,不能有实例变量。 16. **多态**:Java通过方法的覆盖和接口的实现来实现多态。 17. **int与Integer**:int是基本类型,Integer是其包装类,后者支持对象方法。 18. **String与StringBuilder/StringBuffer**:String是不可变的,而StringBuilder和StringBuffer是可变的,用于字符串拼接,后者是线程安全的。 19. **String对象创建**:`new String("xyz")`创建了两个String对象,一个在常量池,一个在堆内存。 20. **length()方法**:数组有length属性,String有length()方法。 21. **try-finally**:无论try块中的return语句是否执行,finally块的代码都会被执行,但在return语句之后。 22. **final, finally, finalize**:final修饰变量表示不可变,finally保证代码块的执行,finalize是垃圾回收前调用的方法。 23. **'=='与equals**:'=='比较基本类型值或对象引用,equals比较对象内容。 24. **Error与Exception**:Error是程序无法处理的错误,Exception是程序可能处理的异常。 25. **线程创建方式**:通过实现Runnable接口或继承Thread类。同步方法使用`synchronized`关键字修饰,`stop()`和`suspend()`不推荐是因为它们可能导致数据不一致。 26. **sleep()与wait()**:sleep()让当前线程暂停指定时间,不会释放锁;wait()使线程等待,会释放锁。 27. **线程同步**:进入synchronized方法的线程不能同时进入该对象的其他synchronized方法,除非已退出同步方法。 28. **ArrayList与Vector**:两者都是动态数组,ArrayList线程不安全,性能较高;Vector线程安全,性能较低。 29. **List、Set与Map**:List是有序集合,允许重复元素;Set不允许重复元素;Map存储键值对,键唯一。 这些知识点是Java程序员必备的基础,对于面试和日常开发都有重要意义。掌握这些内容,将有助于理解和解答面试中遇到的问题。
水货111
  • 粉丝: 0
  • 资源: 3
上传资源 快速赚钱

最新资源