大厂Java面经
导言
在面试大厂Java岗位时,经常会遇到高难度的问题和题目。通过本文的科普,我们将介绍一些常见的面试问题,并提供代码示例来帮助读者更好地理解和准备面试。
状态图
下面是一个示例的状态图,展示了一个简单的状态机:
stateDiagram
[*] --> A
A --> B
B --> C
C --> D
D --> [*]
类图
下面是一个示例的类图,展示了一个简单的类结构:
classDiagram
class Animal {
+int age
+void eat()
}
class Dog {
+String name
+void bark()
}
class Cat {
+String name
+void meow()
}
Animal <|-- Dog
Animal <|-- Cat
Java面试题
题目一:反转链表
给定一个单链表,将其反转。
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode nextTemp = curr.next;
curr.next = prev;
prev = curr;
curr = nextTemp;
}
return prev;
}
题目二:二叉树的最近公共祖先
给定一个二叉树,找到该树中两个指定节点的最近公共祖先。
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null || root == p || root == q) {
return root;
}
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
if (left != null && right != null) {
return root;
} else if (left == null) {
return right;
} else {
return left;
}
}
总结
通过本文的科普,我们了解了一些大厂Java面试中常见的问题,并提供了相应的代码示例。在准备面试时,不仅要熟练掌握基础知识,还要注重练习和理解算法和数据结构。希望读者能够通过本文的帮助,在面试中取得好的成绩!