2.科大讯飞

Java优势:

  1. 跨平台性:Java 的口号是“一次编写,到处运行”,因为它依赖于 Java 虚拟机(JVM),可以在不同的操作系统上运行。

  2. 面向对象:Java 是一种纯粹的面向对象编程语言,提供了封装、继承和多态等特性。

  1. 丰富的API:Java 提供了丰富的标准类库,简化了开发过程。

  2. 安全性:Java 设计了安全机制,如类加载器、字节码校验器等,以防止恶意代码。

  1. 多线程支持:Java 内建了对多线程的支持,简化了并发编程。

  2. 内存管理:Java 有自动垃圾回收机制,减少了内存泄漏的风险。

Java常用集合:

  • List:ArrayList、LinkedList、Vector、Stack

  • Set:HashSet、LinkedHashSet、TreeSet

  • Map:HashMap、LinkedHashMap、TreeMap、Hashtable、Properties

ArrayList和LinkedList区别和底层:

  • 区别

    • ArrayList 基于动态数组实现,LinkedList 基于双向链表实现。

    • ArrayList 随机访问效率高,LinkedList 插入和删除效率高。

  • 底层

    • ArrayList 使用一个 Object 数组来存储元素。

    • LinkedList 使用节点(Node)存储元素,每个节点包含数据和指向前一个和后一个节点的引用。

    Set底层:

  • HashSet:基于 HashMap 实现,使用对象的 hashCode() 来存储值,确保唯一性。

  • TreeSet:基于红黑树实现,可以确保元素处于排序状态。

红黑树讲讲:

红黑树是一种自平衡的二叉查找树,它通过以下规则保持平衡:

  1. 每个节点非红即黑。

  2. 根节点是黑色。

  1. 所有叶子节点(NIL节点,树尾端的虚拟节点)都是黑色。

  2. 每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径上不会有两个连续的红色节点)。

  1. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

HashMap和TreeMap区别,底层实现:

  • 区别

    • HashMap 不保证顺序,TreeMap 根据 key 自然排序或者指定的 Comparator 进行排序。
  • 底层实现

    • HashMap 基于哈希表实现。

    • TreeMap 基于红黑树实现。

    ConcurrentHashMap底层实现:

  • JDK 1.7:使用分段锁(Segment),每个 Segment 继承自 ReentrantLock,包含若干个桶(HashEntry)。

  • JDK 1.8:使用 Synchronized 和 CAS 操作,以及对部分桶进行加锁,提高了并发访问的性能。

JVM内存区域:

  • 程序计数器

  • 虚拟机栈

  • 本地方法栈

  • 方法区(JDK 1.8 之后替换为元空间)

对象创建过程:

  1. 类加载检查:检查类是否已经被加载。

  2. 分配内存:为对象分配内存空间。

  1. 初始化零值:将分配的内存空间初始化为零值。

  2. 设置对象头:设置对象所属类信息、HashCode、GC分代年龄等。

  1. 执行初始化方法:执行对象的构造方法。

垃圾回收过程:

  1. 标记:标记出所有需要回收的对象。

  2. 清除:清除被标记的对象。

  1. 整理:整理内存碎片。

Full GC和Young GC区别:

  • Young GC:发生在新生代,速度快,回收频率高。

  • Full GC:发生在老年代,速度慢,回收频率低,会回收新生代和老年代。

Full GC详细流程:

  1. 标记-清除(Mark-Sweep)或标记-整理(Mark-Compact)。

  2. 标记整个堆中的存活对象。

  1. 清除或整理非存活对象占用的空间。

静态代码块存在哪里:

静态代码块存储在方法区中。

Final修饰的变量存在哪里:

Final 修饰的变量存储在堆(对象实例)、栈(基本类型或局部变量)或常量池(常量)中。

CAP理论:

CAP 理论指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三者不可同时得到保证。

为什么要首先保证P(Partition tolerance):

在分布式系统中,网络分区是必然发生的,因此分区容错性(P)是必须首先保证的。然后,系统设计者需要在一致性和可用性之间做出权衡,选择CP(一致性+分区容错性)或AP(可用性+分区容错性)。

#秋招提前批启动你开冲了吗##简历中的项目经历要怎么写##我的成功项目解析##我的失利项目复盘#
Java大中厂秋招八股一本通 文章被收录于专栏

八股文分类整理 老哥们点点赞,订阅一下,纯福利做数据。

全部评论

相关推荐

码农烧烤启动:我还还有一个朋友😂 是个学院本,毕业是比较早 以前很容易找到工作 他厉害的地方在:即使找到工作了依然保持每个月一次或几次面试 然后复盘总结抓住好机会就往上跳了 今年不知道跳哪去了 总而言之,成了程序员就得持续面试和学习 尤其是现在这个🐢环境下 可能前脚入后脚给你裁了 不一定要频率非常高 就像一场马拉松 你人生还这么长嘞…… 所以不用内耗 春招不行就社招嘛,没有经济来源就干干收银员,烧烤啥的,有人看不起你别管啊,这是你自己的剧本,你说谁杀青就杀青了🙂 没人的时候不也可以学学😂 偶尔来次面试 不爽就辞职换一家 你的人生是为自己而活
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务