引言

对于程序员来说,面试是职业生涯中至关重要的环节。一份优秀的题库不仅可以帮助你巩固知识点,还能让你在面试中游刃有余。本文将为你精选一系列面试题,涵盖数据结构、算法、编程语言等多个方面,助你轻松应对面试挑战。

数据结构与算法

1. 数组与链表

题目:实现一个单链表,包括插入、删除、查找和遍历等基本操作。

代码示例:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class LinkedList:
    def __init__(self):
        self.head = None

    def insert(self, val):
        new_node = ListNode(val)
        if not self.head:
            self.head = new_node
        else:
            current = self.head
            while current.next:
                current = current.next
            current.next = new_node

    def delete(self, val):
        current = self.head
        if current and current.val == val:
            self.head = current.next
            current = None
            return
        prev = None
        while current and current.val != val:
            prev = current
            current = current.next
        if current is None:
            return
        prev.next = current.next
        current = None

    def search(self, val):
        current = self.head
        while current:
            if current.val == val:
                return True
            current = current.next
        return False

    def traverse(self):
        current = self.head
        while current:
            print(current.val, end=' ')
            current = current.next
        print()

2. 栈与队列

题目:实现一个栈和队列,包括基本操作。

代码示例:

class Stack:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[-1]

    def is_empty(self):
        return len(self.items) == 0

class Queue:
    def __init__(self):
        self.items = []

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        return self.items.pop()

    def is_empty(self):
        return len(self.items) == 0

3. 树与图

题目:实现一个二叉树,包括遍历、查找和插入等操作。

代码示例:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class BinaryTree:
    def __init__(self):
        self.root = None

    def insert(self, val):
        if not self.root:
            self.root = TreeNode(val)
        else:
            current = self.root
            while True:
                if val < current.val:
                    if not current.left:
                        current.left = TreeNode(val)
                        break
                    current = current.left
                else:
                    if not current.right:
                        current.right = TreeNode(val)
                        break
                    current = current.right

    def inorder_traversal(self, root):
        if root:
            self.inorder_traversal(root.left)
            print(root.val, end=' ')
            self.inorder_traversal(root.right)

    def search(self, val):
        current = self.root
        while current:
            if current.val == val:
                return True
            elif val < current.val:
                current = current.left
            else:
                current = current.right
        return False

编程语言

1. Python

题目:实现一个简单的 HTTP 服务器。

代码示例:

from http.server import BaseHTTPRequestHandler, HTTPServer

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b'Hello, world!')

def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler, port=8000):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print(f'Starting httpd on port {port}...')
    httpd.serve_forever()

if __name__ == '__main__':
    run()

2. Java

题目:实现一个简单的银行账户类。

代码示例:

public class BankAccount {
    private String accountNumber;
    private double balance;

    public BankAccount(String accountNumber, double balance) {
        this.accountNumber = accountNumber;
        this.balance = balance;
    }

    public void deposit(double amount) {
        balance += amount;
    }

    public void withdraw(double amount) {
        if (amount <= balance) {
            balance -= amount;
        } else {
            System.out.println("Insufficient funds");
        }
    }

    public double getBalance() {
        return balance;
    }
}

总结

本文为您精选了一系列面试题,涵盖了数据结构、算法和编程语言等多个方面。通过学习和练习这些题目,相信您能够在面试中更加自信地应对挑战。祝您面试顺利!