
Java面试回顾
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
《Java面试回顾》是一篇总结性文章,汇集了作者在准备和参加Java相关职位面试时遇到的问题与经验,旨在为求职者提供参考和指导。
一. Java基础部分
71、一个.java源文件可以包含多个类(但不是内部类),但是只能有一个公共类与文件名相同。这意味着如果存在其他非公共类,它们必须是非public的。
72、Java语言中没有goto语句。
73、&操作符用于位运算,而&&是逻辑和操作符,它具有短路特性:当第一个条件为false时,则不再检查第二个条件直接返回结果。
84、在JAVA中使用break可以跳出当前循环。若要从多重嵌套的循环结构中退出,需要明确指定哪个层次的循环被终止或者考虑使用标记语句(虽然不推荐)来实现这一功能。
85、switch语句支持byte、short和int类型的数据作为表达式进行比较;long类型的变量不能用作switch参数。Java 7以后版本开始支持在switch中使用String数据类型。
96、对于第一行代码short s1 = 1; s1 = s1 + 1;,编译器会将s1+1的结果自动转换为int型, 而不是short类型;因此需要进行强制类型转换才能正确赋值。第二行s1 += 1;同样存在相同的问题。
97、char变量可以存储一个中文汉字字符,因为Java中每个字符都是Unicode编码的,而中文属于Unicode范围内的字符,并且占两个字节(即16位)表示空间。
98、最有效率的方法计算2乘以8等于多少是直接写出答案:16。如果必须编程实现,则使用简单的算术运算符即可完成任务。
99、设计一个支持一百亿的计算器,需要考虑大数处理以及可能发生的溢出错误问题。可以采用BigInteger类来存储和操作超大的数值数据类型,并确保适当的异常处理机制以应对各种输入情况下的边界条件。
100、使用final关键字修饰变量时,表示该引用一旦被初始化后就不能再指向其他对象;但是它所指向的对象自身的状态是可以改变的(前提是这个对象本身不是不可变类)。
101、==操作符用于比较两个值是否相等或者判断两个引用是否指向同一个内存地址。而equals()方法通常用来比较两个对象的内容或属性是否相同,除非重写该方法,默认情况下它会调用==来检查引用的平等性。
102、静态变量(也称类变量)属于整个类而非特定实例;所有对该类的对象共享同一份数据资源。非静态成员变量则是每个新创建出来的对象都拥有独立的一份副本,互不影响。
103、从一个static方法内部不能直接调用非static的方法或访问非static的属性,除非通过当前所属类名来间接引用这些实例化特性(如ClassName.nonStaticMethod())或者使用this关键字指向自身实例变量/方法时需要创建对象实例后方可操作。
104、Integer是包装器类用于表示整数类型值的对象;int则是原始数据类型用来存储数值型信息的内存位置。两者之间可以通过自动装箱和拆箱过程相互转换,但它们在内部机制上存在本质区别。
105、Math.round(11.5)结果为12;而对负数而言如-11.5,则返回值是-11(即向最近的整数值四舍五入)。
106、此处未提供具体代码示例,故无法指出其潜在问题所在。请给出完整的待审查源码以便于分析其中可能存在的缺陷或不当之处。
107、public修饰符意味着该成员可以被任何其他类访问;private则限制了只有声明它的那个类能够看到它;protected允许子类及同一包内的其它类型使用此属性/方法,而省略访问控制时默认为包级别可见性(即只能在同名目录下的所有文件间互相调用)。
108、重载(Overload)是指在同一作用域内可以存在多个具有相同名称但参数列表不同的函数;覆盖(Override)则是指子类重新定义了从父类继承来的某个方法。前者允许改变返回值类型,后者则必须保持一致以满足继承关系的要求。
109、构造器不能被重写(override),因为它是用来初始化对象的特殊方法,并且每个非抽象类都至少有一个默认或自定义版本可用;而当创建子类时通常会调用父级构造函数来完成必要的属性设置工作,这被称为构造器链机制。
110、接口可以继承其它接口并添加新的未实现的方法。一个抽象类可以同时实现多个接口但只能直接继承一个具体类或另一个抽象基类;至于含有静态main方法的抽象类是可以存在的,它可以在测试框架中充当起点或者用于启动应用程序服务端点等功能模块初始化配置等
全部评论 (0)


