面试题,持续更新
发布人: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

