资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
【黑马程序员】IT名企java面试题(中)31.怎样权衡是使用无序的数组还是有序的数组?有序数组最大的好处在于查找的时间复杂度是 O(log n),而无序数组是 O(n)。有序数组的缺陷是插入操作的时间复杂度是 O(n),因为值大的元素需要往后移动来给新元素腾位置。相反,无序数组的插入时间复杂度是常量 O(1)。32.Java 集合类框架的最佳实践有哪些? 依照应用的需要正确选择要使用的集合的类型对性能非常重要,例如:假如元素的大小是固定的,并且能事先懂得,我们就应当用 Array 而不是 ArrayList。 有些集合类允许指定初始容量。因此,假如我们能估量出存储的元素的数目,我们能够设置初始容量来防止重新计算 hash 值或者是扩容。 为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以防止运行时的 ClassCastException。 使用 JDK 提供的不变类(immutable class)作为 Map 的键能够防止为我们自己的类实现 hashCode()和 equals()措施。 编程的时候接口优于实现。 底层的集合实际上是空的情况下,返回长度是 0 的集合或者是数组,不要返回null。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:33.Enumeration 接口和 Iterator 接口的区分有哪些?Enumeration 速度是 Iterator 的 2 倍,同时占用更少的内存。不过,Iterator 远远比Enumeration 安全,因为其他线 程不能够修更正在被 iterator 遍历的集合里面的对象。同时,Iterator 允许调用者删除底层集合里面的元素,这对 Enumeration 来说是 不也许的。34.HashSet 和 TreeSet 有什么区分?HashSet 是由一个 hash 表来实现的,因此,它的元素是无序的。add(),remove(),contains()措施的时间复杂度是 O(1)。另首先,TreeSet 是由一个树形的结构来实现的,它里面的元素是有序的。因此,add(),remove(),contains()措施的时间复杂度是 O(logn)。垃圾搜集器(Garbage Collectors)35.Java 中垃圾回收有什么目标?什么时候进行垃圾回收?垃圾回收的目标是识别并且丢弃应用不再使用的对象来释放和重用资源。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:36.System.gc()和 Runtime.gc()会做什么事情?这两个措施用来提示 JVM 要进行垃圾回收。不过,立即开始还是延迟进行垃圾回收是取决于 JVM 的。37.finalize()措施什么时候被调用?析构函数(finalization)的目标是什么?在释放对象占用的内存之前,垃圾搜集器会调用对象的 finalize()措施。一般提议在该措施中释放对象持有的资源。38.假如对象的引用被置为 null,垃圾搜集器是否会立即释放对象占用的内存?不会,在下一个垃圾回收周期中,这个对象将是可被回收的。39.Java 堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?JVM 的堆是运行时数据区,所有类的实例和数组都是在堆上分派内存。它在 JVM 开启的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾搜集器回收。堆内存是由存活和死亡的对象组成的。存活的对象是应用能够访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾搜集器回收掉的对象。一直到垃圾搜集器把这些对象回收掉之前,他们会一直占据堆内存空间。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:40.串行(serial)搜集器和吞吐量(throughput)搜集器的区分是什么?吞吐量搜集器使用并行版本的新生代垃圾搜集器,它用于中等规模和大规模数据的应用程序。而串行搜集器对大多数的小应用(在当代处理器上需要大约 100M 左右的内存)就足够了。41.在 Java 中,对象什么时候能够被垃圾回收?当对象对目前使用这个对象的应用程序变得不可触及的时候,这个对象就能够被回收了。42.JVM 的永久代中会发生垃圾回收么?垃圾回收不会发生在永久代,假如永久代满了或者是超出了临界值,会触发完全垃圾回收(Full GC)。假如你仔细查看垃圾搜集器的输出信息,就会发觉永久代也是被回收的。这就是为何正确的永久代大小对防止 Full GC 是非常重要的原因。请参考下 Java8:从永久代到元数据区(译者注:Java8 中已经移除了永久代,新加了一个叫做元数据区的 native 内存区)异常处理43.Java 中的两种异常类型是什么?他们有什么区分?Java 中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不需要在措施或者是结构函数上声 明,就算措施或者是结构函数的执行也许会抛出这么的异常,并且不受检查的异常能够传输到措施或者是结构函数的外面。相反,受检查的异常必须要用 throws 语句在措施或者是结构函数上申明。这里有 Java 异常处理的某些小提议。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:44.Java 中 Exception 和 Error 有什么区分?Exception 和 Error 都是 Throwable 的子类。Exception 用于用户程序能够捕捉的异常情况。Error 定义了不期望被用户程序捕捉的异常。45.throw 和 throws 有什么区分?北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090throw 核心字用来在程序中明确的抛出异常,相反,throws 语句用来表白措施不能处理的异常。每一个措施都必须要指定哪些异常不能处理,因此措施的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。45.异常处理的时候,finally 代码块的重要性是什么?(译者注:作者标题的序号弄错了)无论是否抛出异常,finally 代码块总是会被执行。就算是没有 catch 语句同时又抛出异常的情况下,finally 代码块仍然会被执行。最后要说的是,finally 代码块重要用来释放资源,例如:I/O 缓冲区,数据库连接。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:46.异常处理完成以后,Exception 对象会发生什么变化?Exception 对象会在下一个垃圾回收过程中被回收掉。47.finally 代码块和 finalize()措施有什么区分?无论是否抛出异常,finally 代码块都会执行,它重要是用来释放应用占用的资源。finalize()措施是 Object 类的一个 protected 措施,它是在对象被垃圾回收之前由 Java虚拟机来调用的。Java 小应用程序(Applet)48.什么是 Applet?java applet 是能够被包括在 HTML 页面中并且能被启用了 java 的客户端浏览器执行的程序。Applet 重要用来创建动态交互的 web 应用程序。49.解释一下 Applet 的生命周期applet 能够经历下面的状态: Init:每次被载入的时候都会被初始化。 Start:开始执行 applet。 Stop:结束执行 applet。 Destroy:卸载 applet 之前,做最后的清理工作。50.当 applet 被载入的时候会发生什么?首先,创建 applet 控制类的实例,然后初始化 applet,最后开始运行。51.Applet 和一般的 Java 应用程序有什么区分?applet 是运行在启用了 java 的浏览器中,Java 应用程序是能够在浏览器之外运行的独立的 Java 程序。不过,它们都需要有 Java 虚拟机。深入来说,Java 应用程序需要一个有特定措施署名的 main 函数来开始执行。Javaapplet 不需要这么的函数来开始执行。最后,Java applet 一般会使用很严格的安全方略,Java 应用一般使用比较宽松的安全方略。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:52.Java applet 有哪些限制条件?重要是因为安全的原因,给 applet 施加了如下的限制: applet 不能够载入类库或者定义本地措施。 applet 不能在宿主机上读写文献。 applet 不能读取特定的系统属性。 applet 不能发起网络连接,除非是跟宿主机。 applet 不能够开启宿主机上其他任何的程序。53.什么是不受信任的 applet?不受信任的 applet 是不能访问或是执行本地系统文献的 Java applet,默认情况下,所有下载的 applet 都是不受信任的。54.从网络上加载的 applet 和从本地文献系统加载的 applet 有什么区分?当 applet 是从网络上加载的时候,applet 是由 applet 类加载器载入的,它受 applet安全管理器的限制。当 applet 是从客户端的本地磁盘载入的时候,applet 是由文献系统加载器载入的。从文献系统载入的 applet 允许在客户端读文献,写文献,加载类库,并且也允许执行其他程序,不过,却通不过字节码校验。更多(Java、android、大数据、python、前端、iOS、PHP)课程讲义源码加QQ:55.applet 类加载器是什么?它会做哪些工作?北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090当 applet 是从网络上加载的时候,它是由 applet 类加载器载入的。类加载器有自己的java 名称空间等级结构。类加载器会确保来自文献系统的类有唯一的名称空间,来自网络资源的类有唯一的名称空间。当浏览器通过网络载入 applet 的时候,applet 的类被放置于和 applet 的源有关联的私有的名称空间中。然后,那些被类加载器载入进来的 类都是通过了验证器验证的。验证器会检查类文献格式是否遵守 Java 语言规范,确保不会出现堆栈溢出(stack overflow)或者下溢(underflow),传递给字节码指令的参数是正确的。56.applet 安全管理器是什么?它会做哪些工作?applet 安全管理器是给 applet 施加限制条件的一个机制。浏览器能够只有一个安全管理器。安全管理器在开启的时候被创建,之后不能被替代覆盖或者是扩展。Swing57.弹出式选择菜单(Choice)和列表(List)有什么区分Choice 是以一个紧凑的形式展示的,需要下拉才能看到所有的选项。Choice 中一次只能选中一个选项。List 同时能够有多个元素可见,支持选中一个或者多个元素。58.什么是布局管理器?布局管理器用来在容器中组织组件。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号