当前位置: 首页 > news >正文

优秀的国内企业网站国家精品资源共享课程建设网站

优秀的国内企业网站,国家精品资源共享课程建设网站,深圳网站制作公司在那,wap网站开发视频教程前言 之前为了准备面试#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 设计模式 单例共有几种写法#xff1f; 细分起来就有9种#xff1a;懒汉#x…前言 之前为了准备面试收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 设计模式 单例共有几种写法 细分起来就有9种懒汉初始加载资源过多时使用、饿汉、静态内部类、枚举防止反序列化创建新对象、ThreadLocal单例 建造者模式和工厂方法模式的区别是什么 工厂模式注重创建一个产品不关心创建细节 建造者模式也是创建一个产品同时关注组成的细节。 总结就是一个关注整体、一个关注细节。 简单工厂、工厂方法和抽象工厂之间的区别是什么 使用场景有一些区别 简单工厂适用于类关系简单、不复杂 并且 确定之后几乎不扩展的情况。工厂方法适用于需要根据运行时上下文信息动态选择实现类的时候。抽象工厂方法模式适用于创建一组相关 或 相互依赖的对象时使用。 桥接模式与适配器模式的区别是什么 从目的来看桥接模式关注的是分离适配器关注的是合并、配合。 适配器模式分为哪几类每类的应用场景是什么 类适配器、对象适配器、接口适配器。 装饰器模式与代理模式的区别是什么 共同点都是让两个类一起配合工作。 区别目标、侧重不一样 装饰器模式侧重扩展功能、增加职能代理模式侧重对被代理对象的访问控制。 模板设计模式的适用场景是什么 适用于流程固定但是具体实现有区别的场景。 策略模式的优缺点是什么 优点避免多重条件转移语句、算法实现跟使用者分离、避免重复代理。 缺点必须要知道所有策略类 扩展可结合工厂模式、享元模式。 责任链模式的优缺点有哪些 优点减少对象之间的耦合灵活指派处理者。 缺点较长的责任链可能会影响性能。 访问者模式的适用场景及优缺点有哪些 适用场景数据结构 与 数据操作 分离 ; 优点容易扩展新操作 缺点增加新接收比较麻烦。 泛型的上限限定和下限限定是什么 上限限定是某个类或其子类 public static T extends MyClass void addToList(ListT list) {}下限限定是某个类或其超类。 public static void addToList(List? super AbstractMyClass list) {}泛型的类型擦除和侨界方法是什么 类型擦除编译期间将泛型替换为普通类型没有指定上、下限定的话就是Object否则就是指定的边界类。 Java基础 反射的适用场景有哪些 应用场景动态加载类和实例化对象、动态代理和AOP、获取注解信息、编写通用的框架和工具类。 反射的优点和缺点 优点动态灵活 缺点1.性能开销反射涉及动态解析类型和方法的调用有一定的性能开销2.安全性问题绕过访问控制修饰符的限制3.可读性变差。 静态嵌套类与内部类区别 静态嵌套类不依赖外部类就可以进行实例化 内部类要进行实例化的话需要先实例化外部类。 抽象方法不能被static、native、synchronized修饰 对 当一个线程进入一个对象的 synchronized 方法 A 之后 其它线程是否可进入此对象的 synchronized 方法 B 不能。只能进入非synchronized的方法。 对于同一个对象或者class来说。 finally 中的代码一定会执行吗 不一定比如虚拟机终止时、try内死循环。 SPI 是什么 提供一套标准接口让服务提供方第三方实现然后使用合适的方式比如 Service Loader发现这个服务实现并调用。 SPI 和 API 有啥区别 目的不一样SPI 用于扩展让第三方实现API 是对外提供服务不支持扩展。 序列化和反序列化是什么 序列化将对象持久化到磁盘、写到数据库或在网络传输时需要将对象序列化成二进制流 反序列化将二进制流数据还原成对象。 BIO、NIO 和 AIO 的区别 BIO同步阻塞IO知道数据准备就绪、拷贝完成才继续执行 NIO同步非阻塞IOJava中采用IO多路复用模型避免了CPU资源的浪费。它可以将多个通道Channel注册到选择器Selector选择器通过select系统调用进行监控当数据准备好之后让用户线程继续执行。 在linux2.6内核还支持epoll系统调用能监控无限多的FD而且不会随FD增多而降低效率。 AIO异步IO基于事件以及回调机制实现当数据准备好的时候系统通知用户线程进行后续操作。 什么是语法糖 为了方便程序而设计的特殊语法。对编程功能没有影响主要是让代码更加简洁。 什么是检查异常不受检查异常运行时异常并分别举例说明 检查异常Checked Exceptions这类异常是Exception及其子类的成员它们在编译时被强制要求处理否则程序无法通过编译。例如如果程序要访问一个文件但该文件不存在就会出现一个IOException这是一个检查异常。 运行时异常Runtime Exceptions这类异常是RuntimeException类及其子类的成员它们在程序运行时可能发生但不强制要求处理。例如如果程序中出现空指针异常NullPointerException或数组越界异常IndexOutOfBoundsException这些都是运行时异常。运行时异常通常是由程序的逻辑错误引起的因此程序应该尽量避免这些错误。 不受检查异常运行时发生一般是程序逻辑问题引起的。 finally块一定会执行吗 JVM停止时不执行for循环内的break、return不会。 public static void main(String[] args) {for (int i 0; i 2; i) {try {System.out.println(开始try块);if(i 0) { // break;return;}} catch (Exception e) {System.out.println(执行了catch块异常信息为 e.getMessage());} finally {System.out.println(执行finally块);}} }try、catch、finally语句块的执行顺序 如上。 一个空Object对象的占多大空间 64位操作系统下等于对象头的大小即16字节。关闭指针压缩则是32 对象的组成 对象头实际数据对其填充。 对象头组成 Mark Word标记字段Mark Word是对象头的核心部分它用于存储对象的标记信息和运行时状态。Mark Word的具体结构和含义可能会因不同的虚拟机实现而有所差异但通常包括以下内容 对象的哈希码HashCode用于支持对象的哈希操作如在HashMap中使用。锁状态标志Lock State Flags用于支持对象的同步操作如加锁、解锁等。GC标记GC Mark用于垃圾回收器标记对象的存活状态。偏向锁Biased Lock用于支持对象的偏向锁优化以提高单线程访问对象的性能。 类型指针Class Metadata Pointer类型指针指向对象所属的类元数据Class Metadata包括对象的类型信息、方法表Virtual Method Table等。通过类型指针虚拟机可以确定对象的类型和方法的调用。 拆箱和装箱的过程 Integer数值范围在[-128, 127]的将从对象池中获取。 Integer a 1自动装箱从对象池中获取对象。 a;先拆箱自增之后装箱 多态实现原理 回顾多态的三个必要条件 区分实现方式与实现原理实现方式继承重写。 而多态的实现原理是动态绑定 虚拟方法表。 而非私有、非静态和非 final 的方法是动态绑定的 同一个class的多个实例共用同一张虚拟方法表。 虚拟方法表在链接阶段初始化。 集合 ArrayList的优缺点 优点高效的随机访问尾插、尾删较快1.5倍动态扩容 缺点动态扩容需要重新分配内存影响性能不是线程安全删除、插入元素可能需要移动元素会损失一些性能可能会有一些空间的浪费。 ArrayList和ListList区别 ArrayList基于数组实现具有高效的随机访问能力在插入、删除元素时可能需要最差的情况下需要 ArrayList初始容量 使用无参构造器创建的ArrayList默认是一个空数组没有分配空间直到调用add()方法会将初始容量设置为10。 ArrayList扩容机制 每次扩容原来的一半。 以add(T t)为入口插入元素前先检查容量如果不够那就计算要扩容到多少大小然后检查要扩容的大小是否超过限制最后使用Arrays.copyOf方法进行数组拷贝。 基层调用System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); private void grow(int minCapacity) {// overflow-conscious codeint oldCapacity elementData.length;int newCapacity oldCapacity (oldCapacity 1); // 每次扩容原来的一半。if (newCapacity - minCapacity 0)newCapacity minCapacity;if (newCapacity - MAX_ARRAY_SIZE 0)newCapacity hugeCapacity(minCapacity);// minCapacity is usually close to size, so this is a win:elementData Arrays.copyOf(elementData, newCapacity);}LinkedList是双向链表还是单向链表 双向链表。这样删除、插入更高效但是对比单向链表需要的空间就多一些、实现也更复杂一些。 HashMap jdk1.7和1.8的实现有什么区别 数据结构JDK8引入了红黑树解决链表过长问题数组类型改为Node。哈希冲突解决方式上JDK7是采用头插法将元素插入链表JDK8采用尾查法扩容机制JDK7扩容是在put操作中进行当链表大于8时将重建数组和链表并重新散列JDK8的话扩容是在resize方法进行当元素数量达到需要调整的阈值时(容量*0.75)将触发扩容方法创建更大的数组将旧元素重新hash分配到新数组。 HashMap 的长度为什么是 2 的幂次方 为了让HashMap存取高效让数据分配得更均匀减少哈希碰撞。 HashMap 多线程操作导致死循环问题 JDK7之前当桶中有多个元素需要进行扩容的时候多线程同时进行可能会生产环形链表导致死循环。 JDK8采用了尾插法避免环形链表。 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同 相同全部实现Set接口都不是线程安全的区别最大的区别是底层结构不同 HashSethash表LinkedHashSet链表 hash表、TreeSet红黑树。 HashMap底层结构 异同: JDK8之后new HashMap()不会创建一个长度为16的数组了。调用put的时候才创建。 JDK8之后使用Node[]作为数组类型 JDK8之后使用数组链表红黑树之前使用的是数组链表。 下面是数据结构图 JDK7 JDK8 HashMap什么时候转红黑树 链表长度大于等于8并且数组长度大于等于64时。 HashMap红黑树为什么6的时候退回链表 链表更简单、数据量小的时候链表可能查得更快 ConcurrentHashMap底层结构 JDK7 JDK8 跟HashMap类似采用CAS synchronized保证并发安全。 JDK 1.7 和 JDK 1.8 的 ConcurrentHashMap 实现有什么不同 数据结构不同JDK7采用分段数组 条目数组 链表JDK8采用数组 链表 红黑树 并发程度不同JDK7并发程度由分段数量决定JDK8对Node加锁并发读更大。 ConcurrentHashMap 为什么 key 和 value 不能为 null 从设计上来说用null的话无法区分是找不到才返回空还是原本就是null 从源码上来看需要取hashCode空的key会抛出空指针异常。 ConcurrentHashMap 能保证复合操作的原子性吗 不能。但是提供了一些复合操作原子性的方法如putIfXX、compute等。
http://www.hkea.cn/news/14492487/

相关文章:

  • 网站建设功能需求文档刚刚深圳出的大事
  • wordpress侧面导航插件广州市网站优化公司
  • 小学网站建设设计方案wordpress多个导航菜单
  • wap织梦手机网站中国景观设计网
  • 网站推广的宣传途径深圳建设局官网站
  • 如何在yahoo上做网站产品定制网站
  • 专业网站建设哪家效果好商标注册证
  • 社交网站模板无锡网站制作推荐
  • 购物网站网页设计seo值怎么提高
  • 怎样建立微网站中国住房和城乡建设部网站证书查询
  • 家里做服务器开网站怎么改wordpress字体
  • 网站建站的方式主要有哪几种网站开发的未来发展
  • 做淘宝链接模板网站辽宁建设工程信息网开标流程
  • 手机做视频的软件排名优化seo
  • 怎么做一淘宝客网站吗网站搭建是什么专业
  • 深圳罗湖网站建设公司网站建设一条龙全包顶呱呱
  • 阜南网站建设公司友好速搭 WordPress
  • 重庆网站设计制作价格电脑学校
  • 叫人做网站后不提供源码网站开发工具安卓版
  • 医院网站主页面设计网站组建
  • 淘宝宝贝链接怎么做相关网站怎么网上接网站开发单自己做
  • 正能量网站地址污的wordpress如何修改背景图片
  • 网站制作1金华做网站最专业的公司
  • 做奥数题网站东莞公司建设网站
  • 做网站怎样做才有百度快照企业vi品牌设计公司
  • 文山网站建设交互界面设计
  • 为什么网站收录下降网站建设 软件有哪些
  • 昆明网站建设方案报价网站开发技术考题
  • 做网站编辑需要看什么书手机网站建设公司
  • frontpage怎么做网站有没有便宜的注册代理