)
目录Java面试题1. 简单题1.1 java中的序列化和反序列化是什么1.2 你认为Java的优势1.3 谈谈你对Java三大特性的理解2. 中等题2.1Java面试题1. 简单题1.1 java中的序列化和反序列化是什么序列化是指内存中的Java对象转化成二进制反序列化是指把二进制转化成Java对象。序列化的目的是写入硬盘或者通过网络传输到其他的机器。publicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID1L;privateStringusername;privatetransientStringpassword;// 不参与序列化privateintage;}三个问题如何实现对象的序列化。答案类必须实现Serializable接口这个接口相当于许可证没有它JDK序列化机制不会让你序列化。如何取消序列化对象中的某个字段。答案加个transient关键字序列化的时候就会自动跳过。为什么类中要定义seriaversionUID。答案显式定义SerialVersionUID相当于给类打个版本戳防止改了类结构后反序列化旧数据时报错。1.2 你认为Java的优势Java有四大特性跨平台、gc、生态强大、面向对象。跨平台是Java经典的卖点【writer once, Run anywhere】。代码编译成字节码文件后JVM负责翻译成不同操作系统的机器指令。同一套代码在Windows开发直接扔到Linux服务器跑不用改一行代码。Java自带垃圾回收机制(GC)。不像C 那样需要程序员手动申请和释放内存容易忘释放导致内存泄漏或者释放导致崩溃。Java会自动在后台帮你打扫内存垃圾程序员只需要专注于业务逻辑开发效率高。Java的生态圈太庞大了不管你想要什么功能基本上都能找到现成的、成熟的开源库比如spring全家桶。这就像搭积木别人把积木都造好了我拿来拼就行不用重复造轮子。Java采用面向对像的思想。Java是强类型语言、面向对象封装、继承、多态这些特性代码结构清晰适合几百人协作的大型项目所以称之为工程化友好。1.3 谈谈你对Java三大特性的理解Java的三大特性分别是封装、继承、多态。封装java面向对象三大核心特性之一它将对象内部状态和绑定在一起并将内部实现细节隐藏起来仅对外暴露必要的、受控的访问接口如getter和setter。其核心目的是保护数据安全避免外部非法篡改同时降低系统的耦合度。继承Java面向对象三大核心特性之一子类通过使用extends关键字让子类复用父类非私有的属性和方法同时可以扩展或者重写。它体现了“是一个”is-a的关系比如“狗是一个动物”。Java面向对象三大核心特性之一。它指的是同一个行为或接口作用于不同的对象时会产生不同的执行结果。其实现的前提是存在继承或实现关系、父类引用指向子类对象以及方法的重写。多态极大地提升了代码的灵活性和可扩展性。2. 中等题2.1