2.科大讯飞
Java优势:
-
跨平台性:Java 的口号是“一次编写,到处运行”,因为它依赖于 Java 虚拟机(JVM),可以在不同的操作系统上运行。
-
面向对象:Java 是一种纯粹的面向对象编程语言,提供了封装、继承和多态等特性。
-
丰富的API:Java 提供了丰富的标准类库,简化了开发过程。
-
安全性:Java 设计了安全机制,如类加载器、字节码校验器等,以防止恶意代码。
-
多线程支持:Java 内建了对多线程的支持,简化了并发编程。
-
内存管理: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:基于红黑树实现,可以确保元素处于排序状态。
红黑树讲讲:
红黑树是一种自平衡的二叉查找树,它通过以下规则保持平衡:
-
每个节点非红即黑。
-
根节点是黑色。
-
所有叶子节点(NIL节点,树尾端的虚拟节点)都是黑色。
-
每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径上不会有两个连续的红色节点)。
- 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
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 之后替换为元空间)
对象创建过程:
-
类加载检查:检查类是否已经被加载。
-
分配内存:为对象分配内存空间。
-
初始化零值:将分配的内存空间初始化为零值。
-
设置对象头:设置对象所属类信息、HashCode、GC分代年龄等。
- 执行初始化方法:执行对象的构造方法。
垃圾回收过程:
-
标记:标记出所有需要回收的对象。
-
清除:清除被标记的对象。
- 整理:整理内存碎片。
Full GC和Young GC区别:
-
Young GC:发生在新生代,速度快,回收频率高。
-
Full GC:发生在老年代,速度慢,回收频率低,会回收新生代和老年代。
Full GC详细流程:
-
标记-清除(Mark-Sweep)或标记-整理(Mark-Compact)。
-
标记整个堆中的存活对象。
- 清除或整理非存活对象占用的空间。
静态代码块存在哪里:
静态代码块存储在方法区中。
Final修饰的变量存在哪里:
Final 修饰的变量存储在堆(对象实例)、栈(基本类型或局部变量)或常量池(常量)中。
CAP理论:
CAP 理论指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三者不可同时得到保证。
为什么要首先保证P(Partition tolerance):
在分布式系统中,网络分区是必然发生的,因此分区容错性(P)是必须首先保证的。然后,系统设计者需要在一致性和可用性之间做出权衡,选择CP(一致性+分区容错性)或AP(可用性+分区容错性)。
#秋招提前批启动你开冲了吗##简历中的项目经历要怎么写##我的成功项目解析##我的失利项目复盘#八股文分类整理 老哥们点点赞,订阅一下,纯福利做数据。