字节跳动 后端开发工程师 一面
字节跳动抖音生活服务平台治理后端开发工程师一面面试经历,主要考察了Go语言基础、数据库设计、缓存机制和算法题,面试时长约53分钟
LeetCode 239 - 滑动窗口最大值(Sliding Window Maximum)
使用单调队列解决滑动窗口最大值问题,通过维护递减队列来高效获取每个窗口的最大值,时间复杂度O(n),空间复杂度O(k)
LeetCode 560 - 和为 K 的子数组(Subarray Sum Equals K)
使用前缀和和哈希表解决子数组和问题,通过维护前缀和的出现次数来统计和为K的子数组数量
LeetCode 149 - 直线上最多的点数(Max Points on a Line)
使用哈希表存储斜率信息,通过枚举每个点作为基准点,计算与其他点形成的直线斜率,统计最多共线的点数。核心思路是避免浮点数精度问题,使用最简分数表示斜率。
LeetCode 50 - Pow(x, n)(快速幂算法)
使用快速幂算法高效计算 x 的 n 次方,通过二进制分解将时间复杂度从 O(n) 优化到 O(log n),是数学计算中的经典优化技巧
LeetCode 172 - 阶乘后的零(Factorial Trailing Zeroes)
通过统计因子中5的个数来计算阶乘末尾零的数量,关键在于理解每个零都是由2和5配对产生的
LeetCode-23-合并 K 个升序链表
本文介绍了 LeetCode 第 23 题——合并 K 个升序链表的解题思路,包括最小堆的解法和顺序合并的解法。
技术八股: 悲观锁与乐观锁
本文深入探讨了多线程编程中两种核心的锁机制:悲观锁和乐观锁。内容涵盖了互斥锁、自旋锁、读写锁的原理和适用场景,并详细对比了悲观锁与乐观锁的思想、实现方式及优缺点,帮助你更好地理解并发控制,应对面试挑战。

