Tech 公司面试杂谈 从大学找实习开始,断断续续面试、被面试了许多场,想来应该有三位数了,最近又作为 Senior/Leader 岗位面了一些公司,算是补全了一块人生体验,写篇文章谈谈 Tech 公司面试的感想。 算法谈到算法面试,首先想到的是 LeetCode,这不是我想的,是 Copilot 想的。 算法是讨论到面试绕不开的话题,我懒得考古,但这股“歪风”应该是从硅谷几家 Big-name Tech 带 2024-06-06 #Interview #Non-tech
Design a collection with compile-time reference stability in Rust (2) 在上一篇文章中,我们设计了一个允许同时持有多个不可变引用的 LruCache。唯一的问题是,为了足够安全,API 不太易用。这篇文章完美地解决了问题。 1234567891011new_lru_cache(|mut perm, mut cache| { cache.put("a", "b".to_string(), &mut perm 2024-01-31 #Programming #Rust
Design a collection with compile-time reference stability in Rust (1) LRU Cache 是工业界最常用的数据结构之一,而最简单的实现方式是基于 HashMap 和链表。当访问某个 entry 时,这个 entry 会被移到链表的最前端。 Rust 有个 crate lru 实现了这个数据结构,这里摘取了几个关键方法: 12345678impl<K: Eq + Hash, V> LruCache<K, V> { pub fn 2024-01-26 #Programming #Rust
RisingWave 中的状态管理 RisingWave 是近期开源的一款 Rust 写的云原生流数据库产品。今天根据下图简单介绍一下 RisingWave 中的状态管理机制: 2022-04-30 #Programming #Database #Streaming System #RisingWave
Zig lang 初体验 -- 『大道至简』的 comptime 在很长的一段时间里,系统级的编程语言只有 C 与 C++,使用其中任何一种都不是愉快的体验,这里不作展开。现在许多新的系统项目都使用 Rust 开发。然而这些都不是本文的重点,最近我接触了一个新的系统编程语言 – Zig,今天分享一下试玩的体验。 2022-04-05 #Programming #Zig
Rust Enum Layout 的优化 今天学到了一点关于 Rust Enum 的冷知识,在开始阅读之前,大家可以猜一下下面的 Rust 代码在常见的 64 bit 机器上的输出是什么? 12345678struct A (i64, i8);struct B (i64, i8, bool);fn main() { dbg!(std::mem::size_of::<A>()); dbg!(std::mem 2022-01-23 #Rust
[Paper Notes] Noria: dynamic, partially-stateful data-flow for high-performance web applications 最近读了 Noria,一个物化视图系统的实现(虽然它自称是 Dataflow)。这篇 Note 包含大量本人脑补。 2021-08-22 #Paper Note #Database
[Paper Notes] Napa: Powering Scalable Data Warehousing with Robust Query Performance at Google Materialized View 成了最近数据库的新热潮,大数据三驾马车的原厂 Google 也发了一篇 PVLDB,介绍他们替代 Mesa 的新系统 Napa。Paper 链接。随便分享一些 notes 和 unresolved issues(比较乱,不能作为 Paper 的替代品) 2021-08-12 #Paper Note #Database
用可持久化 B+ 树优化 OFFSET 子句 分页功能是网站常见的需求之一,对应到数据库中的实现,通常会用 LIMIT ? OFFSET ? 的子句来实现,然而这是很多网站被攻击的潜在原因之一。在主流的数据库实现中,这种查询的效率往往非常的低下。本文脑洞了一种高效支持 OFFSET LIMIT 的方法。 2021-08-10 #Programming #Database #Algorithm