驾途面试题目大全
驾途面试题目大全 1. Java序列化版本号的作用 答:Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性 的。 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体 (类)的serialVersionUID进行比较,如果相同就认为是一致的, 可以进行反序列化,否则就会出现序列化版本不一致的异常。 2. ArrayList 和 LinkedList 的区别,HashMap 和 Hashtable 的区别 答:ArrayList采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中, 所以最大的缺点就是插入删除时非常麻烦 LinkedList采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的 索引但是缺点就是查找非常麻烦要丛第一个索引开始 Hashtable和HashMap类有三个重要的不同之处。 1、是历史原因,Hashtable是基于陈|日的Dictionary类的,HashMap是Java 1.2引进 的Map接口的一个实现。 2、最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味 着,在一个多线程应用程序中即可以不用采取任何特殊的行为就可以用一个Hashtable , 但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类 的静态的synchronizedMap。方法,它创建一个线程安全的Map对象,并把它作为一 个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap0这么做的 结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的 应用程序中),而且同步增加了很多处理费用。 第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。 HashMap中只有一条记录可以是一个空的key ,但任意数量的条目可以是空的value。 这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值, 那么get()将返回nullo如果有必要,用containKey。方法来区别这两种情况。 —些资料建议,当需要同步时,用Hashtable ,反之用HashMap。但是,因为在需要 时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基 于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。 关于 Properties 有时侯,你可能想用一个hashtable来映射key的字符串到value的字符串。DOS、 Windows和Unix中的环境字符串就有一些例子,如key的字符串PATH被映射到 value 的字符串 C:\WINDOWS:C :\WINDOWS\SYSTEMo Hashtables 是表示这些的一个 简单的方法,但Java提供了另外一种方法。 Java.util.Properties 类是 Hashtable 的一个子类,设计用于 String keys 和 values„ Properties对象的用法同Hashtable的用法相象,但是类增加了两个节省时间的方法, 你应该知道。 Store。方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load() 方法正好相反,用来读取文件,并设定Properties对象来包含keys和values。 注意,因为Properties扩展了 Hashtable ,你可以用超类的put()方法来添加不是 String对象的keys和valueso这是不可取的。另夕卜,如果你将store。用于一个不包含 String 对象的 Properties 对象,store。将失败。作为 put()和[object Object]get()的替 代,你应该用 setProperty()和 getProperty(),它们用 String 参数。 3. JVM性能优化参数有哪些 答:减少使用全局变量和大对象,- 调整新生代的大小到最合适; 设置老年代的大小为最合适; 选择合适的GC收集器; 4.Overload 和 Override 的区别 答:Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父 类方法一致的。它的关系是父子关系 Overload是重载:方法名称不变,其余的都是可以变更的。它的关系是同一个类, 同一个方法名,不同的方法参数或返回值。 备注:它们都是是Java多态性的不同表现 5. 接口和抽象类的区别 答:抽象类的成员可以具有访问级别,而接口的成员全部public级别 抽象类可以包含字段,而接口不可以, 抽象类可以继承接口,而接口不能继承抽象类 抽象类的成员可以具有具体实现,而接口不行 抽象的子类可以选择性实现其基类的抽象方法,而接口的子类必须实现 6. final, finally, finalize 的区别 final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类 不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对 象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。 7. sleep和wait有什么区别 1、这两个方法来自不同的类分别是Thread和Object 2、最主要是sleep方法没有释放同步锁,而wait方法释放了同步锁,使得其 他线程可以使用同步控制块或者方法。 3、wait, notify和notifyAll只能在同步控制方法或者同步控制块里面使用, 而sleep可以在任何地方使用(使用范围) synchronized(x) ( x. notify () 〃或者 wait () } 4、sleep必须捕获异常,而wait, notify和notifyAll不需要捕获异常 8. 同步和异步有何异同,在什么情况下分别使用? 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或 者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据, 必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望 让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径 往往更有效率。 9. 说说java锁机制及几种实现方式 10.linux常用命令(10个) 11. java代码安全有哪些 Java通过提供一个”安全沙箱“来保证从网络或者其他不信任的地方下载并运 行的程序不会破坏本地数据,为了确保沙箱是可靠的,java安全模型对体系结 构的各方面都进行了考虑。组成java沙箱的基本组件如下: ・类装载器结构 • class文件检验器 ・内置于Java虚拟机(及语言)的安全特性 •安全管理器及Java API 12. 列举你在项目中常用的设计模式以及对于的应用