测开的50道面试题及答案

编程与算法

  1. 检查字符串是否是回文

    def is_palindrome(s):
        return s == s[::-1]
    
  2. 计算数组中所有元素的和

    def array_sum(arr):
        return sum(arr)
    
  3. Java实现二分查找

    public int binarySearch(int[] arr, int target) {
        int left = 0, right = arr.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (arr[mid] == target) return mid;
            if (arr[mid] < target) left = mid + 1;
            else right = mid - 1;
        }
        return -1;
    }
    
  4. 找到数组中的第二大元素

    def second_largest(arr):
        first, second = float('-inf'), float('-inf')
        for num in arr:
            if num > first:
                second = first
                first = num
            elif num > second and num != first:
                second = num
        return second
    
  5. 实现一个栈

    class Stack:
        def __init__(self):
            self.stack = []
    
        def push(self, item):
            self.stack.append(item)
    
        def pop(self):
            if not self.is_empty():
                return self.stack.pop()
    
        def peek(self):
            if not self.is_empty():
                return self.stack[-1]
    
        def is_empty(self):
            return len(self.stack) == 0
    
  6. 实现一个队列

    class Queue:
        def __init__(self):
            self.queue = []
    
        def enqueue(self, item):
            self.queue.append(item)
    
        def dequeue(self):
            if not self.is_empty():
                return self.queue.pop(0)
    
        def is_empty(self):
            return len(self.queue) == 0
    
  7. 反转一个链表

    class ListNode:
        def __init__(self, val=0, next=None):
            self.val = val
            self.next = next
    
    def reverse_list(head):
        prev, curr = None, head
        while curr:
            next_temp =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南测先锋bug卫士

你的鼓励是我们最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值