Java面试必备:经典面试题解析

需积分: 9 1 下载量 65 浏览量 更新于2024-09-29 收藏 35KB DOC 举报
"Java面试题集锦" 1. Java语法问题 题目中提到的第一题是关于Java语法的,考察的是变量声明。选项A `var obj = ();` 是JavaScript中的数组声明方式,在Java中会引发错误。正确的方式是声明对象类型或使用`new`关键字实例化。选项B `var obj = [];` 也是JavaScript代码,表示创建一个空数组。选项C `var obj = {};` 代表创建一个JavaScript对象字面量,同样不适用于Java。选项D `var obj = //;` 在Java中是未完成的注释,也会导致错误。正确答案是D。 2. IFrame相关知识 IFrame(Inline Frame)是HTML中的一个元素,允许在一个页面中嵌入另一个页面的内容。题目中列出的四个选项,A、B、C、D都是正确的。A表示IFrame的基本功能;B和C描述了同源策略下的交互能力;D则表明可以通过JavaScript调整IFrame的尺寸。 3. 函数参数与Arguments对象 题目中的JavaScript函数`b(x, y, a)`尝试修改Arguments对象的第二个位置值,但Arguments对象并不直接对应函数参数。`Arguments[2] = 10;`将改变Arguments对象的第三个元素(因为JavaScript中的索引是从0开始的),但这不会影响实际的函数参数`a`。因此,Alert(a)会显示未定义,因为`a`仍然保持其原始值,即传递的3。 4. CSS引入方式 CSS可以有四种引入方式:行内样式(在HTML元素的style属性中)、内部样式(在<head>部分的<style>标签中)、外部样式(链接到单独的.css文件)和@import规则(在内部样式表中导入其他CSS文件)。 5. HTML代码审查 给出的HTML代码中,主要问题是不必要的连续空格("&nbsp;")和不推荐的内联样式。改进的版本应使用CSS来控制文本间距,避免使用过多的空格,以及将样式移到外部样式表中,以实现更好的代码组织和可维护性。 6. ArrayList, Vector, LinkedList的存储与线程安全性 ArrayList和LinkedList都是Java集合框架中的List实现,它们分别使用动态数组和链表数据结构。ArrayList操作速度快,适合随机访问,但插入和删除速度慢。LinkedList适合于插入和删除频繁的情况,但随机访问性能较差。Vector与ArrayList类似,但它是线程安全的,所有操作都是同步的,这可能导致性能下降。 7. HashSet和HashMap的去重机制 HashSet和HashMap中元素不重复是通过哈希码(hashCode)和equals()方法实现的。当添加元素时,先计算哈希码,相同的哈希码会进行equals()比较,只有两者都相等才视为重复元素。若要自定义去重逻辑,需要覆盖这两个方法。 8. 类加载器加载顺序 在Tomcat中,类加载顺序是Bootstrap ClassLoader -> ExtClassLoader -> AppClassLoader -> WebappClassLoader。Bootstrap加载JVM核心类库,ExtClassLoader加载扩展类库,AppClassLoader加载应用的类,而WebappClassLoader负责加载每个Web应用程序的类。 9. 接口继承与实现 题目中的接口定义存在问题。在Java中,接口不能实例化,所以`Ball ball = new Ball("PingPang");`应该放在实现接口的类(如Ball类)中。此外,接口Rollable扩展了Playable和Bounceable,但没有提供实现,需要在Ball类中实现这些接口的方法。 10. HashMap使用 题目中创建了一个HashMap,但没有完成初始化。在Java中,创建HashMap需要指定键值对,或者调用无参构造器。如果完整代码如下: ```java Map<String, Object> a = new HashMap<>(); a.put("key", "value"); ``` 那么运行结果取决于后续对`a`的访问,这里没有提供足够的上下文来确定具体的输出。通常,输出将是HashMap对象的引用,而不是实际存储的内容。