数据结构设计

yirufeng

247字小于1分钟

2024-05-13

LRU设计与实现

LFU设计与实现

设计题:设计一个任务定时器,给定时间和任务,到时间了自动执行对应的任务。

如何设计一个 HashMap,考虑线程安全?

通过内存的计数器:实现一个限流器。限制请求在每秒 1000 次以下

hash表是如何实现的 hash表的扩容

map 如何实现的,map 的如何查找,unordered_map 呢

实现一个位图,包含 constructor(int size)、check(int val)、put(int val) 三个方法

package main

import (
    "fmt"
)

type BitMap struct {
    bits []byte
}

func NewBitMap(capacity int) BitMap {
    return BitMap{make([]byte, (capacity+7)/8)}
}

func (bitmap *BitMap) Set(num int) {
    if (num > 8*len(bitmap.bits)) {
        return
    }
    pos := num / 8
    offset := uint(num % 8)
    bitmap.bits[pos] |= (0x80 >> offset)
}

func (bitmap *BitMap) Check(num int) bool {
    if (num > 8*len(bitmap.bits)) {
        return false
    }
    pos := num / 8
    offset := uint(num % 8)
    return bitmap.bits[pos] & (0x80 >> offset) > 0
}

func main() {
    bitmap := NewBitMap(15)
    bitmap.Set(2)
    bitmap.Set(15)
    bitmap.Set(30)
    fmt.Println(bitmap.Check(2))
    fmt.Println(bitmap.Check(3))
    fmt.Println(bitmap.Check(15))
    fmt.Println(bitmap.Check(30))
}

No Pains, No Gains