前言梳理了好久 , 总算是把面试题全部导出来了 , 毕竟还要上班 , 这次就给大家总结了一些JAVA开发岗位的经典面试题 。
篇幅较大 , 阅读过程中可能会有点繁琐! 但请细细观看 , 文章末尾有留给大家的小惊喜!!!
千万不要错过了~ 话不多说 , 咱们就直接开整!
Java开发岗面试题JavaOOPJava的数据结构有哪些?
- 线性表(ArrayList)
- 链表(LinkedList)
- 栈(Stack)
- 队列(Queue)
- 图(Map)
- 树(Tree)
- 整形:byte、short、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
- 不一样 , 第一个字面量声明字符串 , 会从常量池里面取 , 池中没有则创建 , 有则复用 , 后面再同样声明一个aaa时 , 就从池中取出复用 。第二个使用new的方式创建 , 是不会放到常量池中的 , 所以也不会复用 。
- String是只读字符串 , 它不是基本数据类型 , 而是一个对象 , 它的底层是一个final的char字符数组 , 一经定义 , 就不能增加和修改 , 每次对String的操作都是重新生成一个String字符串对象 。
- StringBu??er和StringBuilder都继承了AbstractStringBulder类 , 2个类都是用来进行字符串操作的 。
- StringBu??er是线程安全的 , 而StringBuilder是非线程安全的 , 所以StringBuilder效率比StringBu??er高 , StringBu??er类的方法大多数都加了synchronized关键字 。
- 抽象类需要使用abstract关键字定义 , 它可以有抽象方法和实例方法 , 抽象方法没有方法体 , 需要子类实现 。包含抽象方法的类 , 一定是抽象类抽象只能被继承 , 不能被实例化
- 接口接口的方法全部都是抽象方法 , 属性都是常量接口不能被实例化接口只能被实现 , 实现接口的类必须实现所有的抽象方法 , 除非该类是抽象类 , 可以选择实现部分抽象方法 , 剩余了让子类实现接口可以多继承
- Java集合有2类 , List和Set , List集合有序可重复 , 而Set集合无序但不可重复 。Set集合保证唯一的方法 , 就是插入时判断对象的equals()方法 , 是否和已有元素重复 , 但是元素较多时 , 调用equals()方法就会很低效 。所以增加了hashCode() , 通过元素对象的内存地址计算出一个hash值 , 比较时 , 先比较hashCode , hashCode的效率非常高 , 当元素的hashCode相同时 , 再调用元素的equals()进行比较 , 这样效率就提升了 。
- 强引用 , 强引用在内存不足时 , 宁愿发生OOM也不愿意回收它 。
- 软引用 , 使用SoftReference包裹引用 , 内存不足时 , 就会回收 。
- 弱引用 , 使用WeakReference包裹引用 , 只要JVM垃圾回收发现了它 , 就会回收 。
- 虚引用 , 回收机制和弱引用差不多 , 但是它在被回收前 , 会放入到ReferenceQueue队列中 , 并且虚引用声明时 , 必须传ReferenceQueue队列 。因为这个机制 , 大部分用虚引用来做引用销毁前的处理工作 。
- new关键字
- 通过反射机制
- 通过clone克隆机制
- 通过序列化和反序列化机制
- 浅拷贝 , 只拷贝外层对象 , 它引用的List并不会拷贝 , 所以原对象和拷贝对象的List对象是同一个 。
- 深拷贝 , 外层对象拷贝 , 它所有引用的对象也拷贝 , 所以拷贝的对象 , 它引用的List对象是新的一个 。
- finalfinal关键字标记的变量为常量final关键字标记的类 , 不可继承final关键字标记的方法 , 不可被复写
推荐阅读
- 袁天罡的后人是谁 历史上有袁天罡这个人吗
- Mysql数据库实现主从同步,看这一篇就够了
- 10分钟自建企业级Docker镜像仓库!这个开源项目太顶了
- 电视机顶盒和网络机顶盒哪个好?
- Python自带爬虫库urllib使用大全
- 癫痫的前兆有哪些症状
- 如何治疗痔疮的小窍门
- 皮肤受损后该如何修复
- 西装|辣目洋子教你玩转西装穿搭,微胖女生这样穿也能在职场脱颖而出
- 老年人脚麻木吃什么药