Java面试必备知识点:作用域、匿名内部类与集合
需积分: 0 24 浏览量
更新于2024-09-11
收藏 57KB DOC 举报
"Java面试题"
Java面试题涵盖了广泛的领域,包括基础知识、语法特性、类与接口、集合框架、多线程、异常处理、IO流、网络编程等。以下是更详细的解释:
1、作用域public,private,protected,以及不写时的区别:
这涉及到Java的访问控制权限。`public`的成员可以在任何地方访问;`protected`的成员在同一个包内的类和子类中可访问;`friendly`(也称为包级私有)的成员只在同包内可访问;`private`的成员只能在其定义的类内部访问。如果不指定访问修饰符,默认为`friendly`。
2、AnonymousInnerClass(匿名内部类):
匿名内部类可以直接实现接口或继承抽象类,但它们没有名称,所以不能直接创建新的实例,通常用在需要一次性实现某个接口或类的地方。它们不能继承其他非抽象类。
3、StaticNestedClass和InnerClass的不同:
静态内部类(Static Nested Class)不持有对外部类的隐式引用,可以在没有外部类实例的情况下被实例化。而普通内部类(Inner Class)会持有一个对外部类的引用,所以它必须在外部类的实例上下文中创建。
4、&和&&的区别:
`&`是位运算符,用于对两个操作数的二进制位进行逐位与运算。`&&`是逻辑与运算符,只有当两边的条件都为真时,结果才为真。在短路逻辑中,如果左边的条件为假,右边的条件不会被执行。
5、Collection和Collections的区别:
`Collection`是所有集合接口的父接口,如Set和List。`Collections`是Java提供的工具类,包含了一系列静态方法,用于对集合进行操作,如排序、查找、线程安全化等。
6、什么时候用assert:
`assert`语句用于在开发和测试阶段检查程序状态,确保程序的关键假设是正确的。在生产环境中,通常通过设置JVM参数来禁用assertion,以避免性能损失。
7、Strings=new String("xyz");创建了几个StringObject:
在Java中,创建`String`对象时,如果常量池中已存在相同的字符串字面量,会复用该对象。但这里创建了一个新的`String`对象"xyz",然后又创建了一个引用变量`Strings`指向它,所以总共创建了两个对象。
除此之外,Java面试还可能涉及以下内容:
- 枚举类型(Enum)
- 泛型(Generics)
- 构造器与工厂方法
- 多线程中的同步与并发
- 异常处理(try-catch-finally, throws, throw)
- 类加载机制
- 垃圾回收(Garbage Collection)
- Lambda表达式与函数式编程
- Stream API
- Java反射机制
- 注解(Annotations)
- JVM内存模型和调优
这些知识点都是Java开发者在面试中可能会遇到的,深入理解和掌握它们对于提升编程技能和成功面试至关重要。
143 浏览量
2021-09-14 上传
2012-05-19 上传
2009-11-02 上传
2023-02-13 上传
2023-02-13 上传
2022-09-20 上传
点击了解资源详情
mmmmmt
- 粉丝: 0
- 资源: 1
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建