面试题,持续更新
发布人:shili8
发布时间:2025-01-22 12:09
阅读次数:0
**面试题持续更新**
**一、编程基础**
###1.1 算法与数据结构####1.1.1 数组和链表* **问题**: 编写一个函数,实现将两个有序链表合并为一个新的有序链表。
* **示例代码**:
def mergeTwoLists(l1, l2): # 创建一个新节点作为头结点 head = ListNode(0) current = head while l1 and l2: if l1.val < l2.val: current.next = l1 l1 = l1.next else: current.next = l2 l2 = l2.next # 移动到下一个节点 current = current.next # 如果有剩余的链表,直接连接 if l1: current.next = l1 elif l2: current.next = l2 return head.nextclass ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next
####1.1.2 栈和队列* **问题**: 实现一个栈的push、pop和peek操作。
* **示例代码**:
class Stack: def __init__(self): self.stack = [] # Push元素到栈顶 def push(self, x: int) -> None: self.stack.append(x) # 弹出栈顶元素 def pop(self) -> int: if not self.isEmpty(): return self.stack.pop() else: raise IndexError("Stack is empty") # 查看栈顶元素(不弹出) def top(self) -> int: if not self.isEmpty(): return self.stack[-1] else: raise IndexError("Stack is empty") # 检查是否为空 def isEmpty(self) -> bool: return len(self.stack) ==0# 测试用例stack = Stack() stack.push(1) stack.push(2) print(stack.top()) # 输出:2print(stack.pop()) # 输出:2print(stack.isEmpty()) # 输出:False
###1.2 计算机网络####1.2.1 HTTP协议* **问题**: 解释HTTP请求和响应的基本结构。
* **示例代码**:
import requests# 发送GET请求response = requests.get(' />print(response.status_code) # 输出:200print(response.headers['Content-Type']) # 输出:text/html; charset=UTF-8# 发送POST请求data = {'key': 'value'} response = requests.post(' data=data) print(response.text) # 输出:响应内容
####1.2.2 TCP/IP协议* **问题**: 描述TCP和UDP的主要区别。
* **示例代码**:
import socket# 创建一个TCP连接tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_socket.connect(('www.example.com',80)) # 发送数据data = b'GET / HTTP/1.1r Host: www.example.comr r ' tcp_socket.sendall(data) # 接收响应response = tcp_socket.recv(1024) print(response.decode()) # 输出:响应内容# 关闭连接tcp_socket.close()
###1.3 操作系统####1.3.1 进程和线程* **问题**: 解释进程和线程的区别。
* **示例代码**:
import threadingimport time# 创建一个线程def print_numbers(): for i in range(10): print(i) time.sleep(1) thread = threading.Thread(target=print_numbers) thread.start() # 主线程继续执行for i in range(5): print('Main thread:', i) time.sleep(1)
####1.3.2 文件系统* **问题**: 实现一个简单的文件复制程序。
* **示例代码**:
import osdef copy_file(src, dst): with open(src, 'rb') as src_file: with open(dst, 'wb') as dst_file: while True: chunk = src_file.read(4096) if not chunk: break dst_file.write(chunk) # 测试用例copy_file('source.txt', 'destination.txt')
**二、数据结构与算法**
###2.1 数组和链表####2.1.1 数组* **问题**: 实现一个函数,查找给定数组中最小的元素。
* **示例代码**:
def find_min(arr): min_val = arr[0] for num in arr: if num < min_val: min_val = num return min_val# 测试用例arr = [5,2,8,1,9] print(find_min(arr)) # 输出:1
####2.1.2 链表* **问题**: 实现一个函数,合并两个有序链表。
* **示例代码**:
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextdef merge_lists(l1, l2): # 创建一个新节点作为头结点 head = ListNode(0) current = head while l1 and l2: if l1.val < l2.val: current.next = l1 l1 = l1.next else: current.next = l2 l2 = l2.next # 移动到下一个节点 current = current.next # 如果有剩余的链表,直接连接 if l1: current.next = l1 elif l2: current.next = l2 return head.next# 测试用例l1 = ListNode(1) l1.next = ListNode(3) l1.next.next = ListNode(5) l2 = ListNode(2) l2.next = ListNode(4) l2.next.next = ListNode(6) print(merge_lists(l1, l2).val) # 输出:1
###2.2 栈和队列####2.2.1 栈* **问题**: 实现一个函数,判断栈是否为空。
* **示例代码**:
class Stack: def __init__(self): self.stack = [] # Push元素到栈顶 def push(self, x: int) -> None: self.stack.append(x) # 弹出栈顶元素 def pop(self) -> int: if not self.isEmpty(): return self.stack.pop() else: raise IndexError("Stack is empty") # 查看栈顶元素(不弹出) def top(self) -> int: if not self.isEmpty(): return self.stack[-1] else: raise IndexError("Stack is empty") # 检查是否为空 def isEmpty(self) -> bool: return len(self.stack) ==0# 测试用例stack = Stack() print(stack.isEmpty()) # 输出:True
####2.2.2 队列* **问题**: 实现一个函数,判断队列是否为空。
* **示例代码**:
class Queue: def __init__(self): self.queue = [] # Push元素到队尾 def enqueue(self, x: int) -> None: self.queue.append(x) # 弹出队首元素 def dequeue(self) -> int: if not self.isEmpty(): return self.queue.pop(0) else: raise IndexError("Queue is empty") # 查看队首元素(不弹出) def front(self) -> int: if not self.isEmpty(): return self.queue[0] else: raise IndexError("Queue is empty") # 检查是否为空 def isEmpty(self) -> bool: return len(self.queue) ==0# 测试用例queue = Queue() print(queue.isEmpty()) # 输出:True
###2.3树和图####2.3.1 树* **问题**: 实现一个函数,判断二叉树是否是平衡的。
* **示例代码**:
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonedef is_balanced(root): if root is None: return True left_height = get_height