面试中遇到的设计题

数字IC设计工程师笔试面试经典100题 本文来自芯社区,谢谢。 1:什么是同步逻辑和异步逻辑? 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态表中的每个状态都是稳定的。 异步时序逻辑电路的特点:... 阅读详情

1. 如何设计秒杀系统

前端:

a. 一些防刷单校验,拉长整个交易流程,起到一个削峰作用

b. 静态资源多CDN部署

c. 前端缓存,有些页面的切换,不需要调用后端接口

后端:

接口性能优化:使用缓存,异步,多线程,功能降级等手段

还有些高并发时保证系统稳定性的手段:扩容, 升配,限流,降级

还有是想做系统隔离/数据隔离的方案 这种成本很高。

需要关注的点:读请求/写请求

读请求:

商详页:包括商详接口/促销活动接口/评论接口等。不是交易强依赖的接口可以考虑降级,如评论

商详接口如何支撑更高的qps:本地缓存,redis多数据副本,增加redis副本集群。

后续交易的接口,相比商详会低很多。

写请求:

更多关注库存:库存扣减qps在300左右。要支持的到超过redis单点瓶颈,可能需要考虑多副本的方式。

2. 红包系统怎么设计

1. 模型设计

红包池表,红包账户表,红包池表

2. 怎么支持高并发?

 高并发需要考虑这个并发是有多高?拿redis可支撑的写入速度作为分界线,8万/秒。

如果并发低于这个值?这个场景较好处理,使用redis作为主要的存储介质,需要使用lua脚本完成红包金额生成,红包扣减等动作。

如果高于这个值?可以考虑下吗几种方案?

一是. 使用消息队列,异步的方式,处理抢红包的请求,起到一个削峰的作用。配合的玩法,用户抢到红包后,需要一定的时间后才能打开红包。

二是. 一种类似分段id的方式,每个pod都会从db中取到一个子红包落在redis中,后面都可以依赖这个redis缓存进行扣减,如果本pod的缓存处理完,再充db中取一个子红包进行扣减。当db中扣减为0之后,再按照预设的规则尝试获取其它节点的缓存扣减。

最后,为了保证系统的稳定,一定要做限流。预期外的流量,不要接受。

3. 怎么做一个唯一id的生成器

雪花算法

41位的时间戳 + 10位机器码(机房id+机器id) + 12位序列号

时间戳是毫秒级;机器码由用户指定可能有重复的风险;12位序列号的范围是0~4096;

4. 分布式限流怎么做

使用令牌桶。原理:算法以固定的速度向桶中存放令牌;桶有一定的容量,如果桶满了,则将新生成的令牌丢弃;有请求过来会消耗令牌。

主要有4种算法:

固定窗口:边界值,无法精确限流,不可控。

滑动窗口:更为精确,但是没办法处理短时的高峰流量。

漏桶:处理请求的速度是恒定的,没有办法快速处理短暂的高峰流量

令牌:可以处理短暂的高峰流量,并且后面可以做到匀速的处理请求

面试必备:4种经典限流算法讲解 - 文章详情

如何选择QPS限流算法和令牌桶算法_金融分布式架构-阿里云帮助中心

5. 100万考生,高考排名怎么做?

思路1:计数排序

假设最高分是700

700,699,698.。。500。。。。4,3,2,1,0

每个分数一个bucket,然后存储分数对应的学生数量

6. 10亿数组去重排序

思路1:如知数组中的范围,可以按数值范围分成多个组,比如1-10000,10001-20000等。遍历原数组将每个数投递到对应范围的数组中。当然最极致的做法就是每个组一个元素,这样不需要排序就是有序的了。

如果不知道范围:

借助hash算法思想,把一个大文件哈希分割到多个小文件中,而哈希冲突的数字

一定会在同一个小文件中,从而保证了子问题的独立性,小文件可以使用set结构去重,然后就可以单独对小文件通过快速排序来排序。最后再通过多指针的方式进行全局范围的排序

7. 游戏top实时排行榜

思路1:小顶堆

8. 设计微信摇一摇功能(设计微信附近的人功能)

假设自己的位置的经纬度是j,w, i 表示范围。那么附近的人的原理就是检索范围在j-i<经度<j+i, w - i<维度< w + i;

使用数据库来做也是可以的。但是如果直接这么做的话,当用户数上亿后,检索效率会很差。

 幸运的是redis中的geo结构,可以解决这个问题。

redis中的geo接口,直接提供附近x公里内,最近的n个人,并支持排序和显示实际距离。

geo,底层实现,使用二刀法,将整个地球切成无数的小块。每个小块都有固定的编码,每个编码都有负责的经纬度范围(使用base32算法)。当向geo结构中加用户时,会根据用户的经纬度确定用户在的区域块,在同一个块上的用户就会有一样的编码。所以,后面搜索附近的人的时候,就可以减少搜索的范围,在自己的小块或者周围的小块进行搜索。

9. 如何去设计一个feed流的系统

feed流系统的基本功能:比如朋友圈,一个用户的feed流,他需要展示所有好友发布的帖子。

大致的方案有3类:

        1. 推型:每发一条帖子,需要向自己的所有好友。

                优点:对于好友少的用户是可行的,写扩散的范围可控。

                缺点:如果一个用户的好友有1万,用户每生成1条朋友圈,就会产生1万条记录

        2. 拉型:用户浏览拉取所有好友的朋友圈,不主动推送

                优点:比较简单,不会有写扩展

                缺点:会产生读扩散,需要拉取所有好友的帖子,一起按时间排序

        3. 推拉结合:先采用打标签的方式将用户分为两类:活跃和不活跃。对于活动的用户,采用推送的方式。对于不活跃的,采用拉的方式。

优点:在资源有限的情况下,至少保证核心用户的体验。

缺点:推型和拉型的缺点都是有的。

总结:相比微博大V有近的粉丝的场合,微信1万好友的上线已经是非常小了。所以在写扩散可控的情况下,可采用推型的方案。

而如果是微博这种,使用推拉结合的方式会更好些,毕竟僵尸用户比较多,只推些活跃用户就可以,没必要全量推。

怎么设计feed流的删除/更新场景?

像微信是不支持更新的,删除场景的话,其实删除点原贴就好,feed流中其实存的是帖子的id,如果原贴没有了,根据id找不到记录就是删除后了。所以发贴人将帖子删除,他的好友是立即就看不到了的。

更新的场景:因为帖子的内容只存一份,不存在写扩散,所以也很简单。

10.如何设计一个短链系统

核心功能:

        短链生成:生成唯一key(只要唯一就可以,是否依据内容无所谓),将key换成62进制。然后短链为key,长链为value存放在redis和db中。最后将生成的短链返回给客户端。

        短链换成长链:从缓存或db中,根据短链获取长链。

11. 超高并发场景下的直播红包发放业务的架构设计

核心问题:单个红包如果抢的人数达到100万,怎么设计这个架构。

思路:redis写场景,单点的qps上限10万。 100万,超过了单点redis的极限。所以这里的数据可能是要拆的。

思路:使用redis多副本节点,节点数据来自db。每个pod,可以按规则指定轮训消费不同副本的数据。如果消费完,需要从db里面再取。db里面没有,再去轮训消费其它副本的数据。

方案1:创建reids数组,数组里是也是数组,内层数的大小比如是10,存放的内容是红包的key。用户获取红包的请求,打到应用,应用访问redis获取可分配的红包数组,并存在本地。拿到可分配的红包key之后,查询redis获取红包。

-- 问题:在负载均衡不那么平衡的情况下,有些应用可能红包消耗的快些。用户端会出现第一次点提示红包抢完,第二次点,出现红包抢成功的情况。但是这种情况也是少量,问题不大。

方案2:将红包服务设计成可相互通信的有状态服务,本pod如果红包分配完,可以将请求转给有红包的pod

方案一的补充:如果红包金额不是等额的。创建红包时,可以提前生成每个红包的数值(这种方式,避免了在领取时计算,需要依赖红包余额的情况,避免单点数据依赖瓶颈),数据格式key-value:key是(红包id+自增id),value是对应的红包金额(这块数据可以存在db中,增加领取状态和领取的用户id)。这块数据使用使用时,需要加载到redis中。领取红包请求到pod时,可以直接使用内存的红包映射找到,具体的金额。领取红包请求获取到具体金额后,就可以投递到消息中间件了,然后向客户端返回领取的金额。扣主播红包,记录领取记录等动作可以后面再支持。

-- 存在问题:红包编码和金额映射,会暂用很多的内存空间。按一个key-value=20by计算,100万占用20M。但是,集群模式的redis,数据是分散分布,内存问题也好解决。

总结:100万的热点写并发,确实是个很难得场景,解决起来是很麻烦的。

参考:超高并发场景下的直播红包发放业务的架构设计

12. id生成算法有哪些?

UUId:java的uuid使用的是版本4, 通常使用伪随机数生成器(PRNG)或加密安全随机数生成器(CSPRNG)来生成, 但理论上碰撞概率极低(2^122 的可能性),可以认为在实际应用中是唯一的。

自增id:数据库自增id、数据库段号模式(id生成服务使用)

雪花算法:毫秒时间搓 + 机房id+机器id+自增数(0-4096)

如何答好面试中的系统设计题? 想要答好系统设计,首先要了解系统设计面试的评分标准。系统设计面试主要考察以下几个方面: 可行解 Work Solution 25% 特定问题 Special Case 20% 分析能力 Analysis 25% 权衡 Tradeoff 15% 知识储备 Knowledge Base 15% 在面试中,常见的错误是面试官给出问题后,候选人就开始怼各种关键词,什么Load Balancer,Memcache,NodeJS,MongoDB,MySQL…… 实际上,针对系统设计问题,九章算法有一套4S分析法,即 阅读详情

相关推荐

搞定面试设计题:秒杀系统怎么答

本文系统介绍了秒杀系统设计的关键要点与解决方案。秒杀场景具有瞬时高并发、库存有限等特点,系统设计需重点解决流量洪峰、库存超卖等问题。核心方案包括:通过Nginx和接口层限流拦截请求;使用Redis原子操作预减库存;采用消息队列异步下单削峰;数据库层采用乐观锁保证一致性。文章还对比了不同实施策略的成本效益,并提供了扩展优化方向。最后总结面试回答框架,强调需层次分明地展现架构思维,兼顾技术深度与成本权衡。该方案既能应对面试考察,也可作为实际业务架构参考。

你好,我是橙序员 880

社区盛会 | Pulsar Summit Asia 2022 议程全览

关于 Pulsar SummitPulsar Summit 是 Apache Pulsar 社区年度盛会,它将分布在世界各地的 Apache Pulsar 项目 Contributor、Committer 和各企业 CTO/CIO、开发者、架构师、数据科学家,以及消息和流计算社区的精英召集在一起。于此盛会,大家分享实践经验、交流想法、探讨关于 Pulsar 项目和社区的知识,切磋互动。大会介绍Pu...

Apache Pulsar 494

面试中系统化地解答系统设计题:通用方法论

本文系统性讲解了应对系统设计面试题的高效方法论,强调从需求澄清出发,逐步构建清晰、结构化的设计思路。文章详尽分析了功能性与非功能性需求的分类、识别技巧,并通过 URL 缩短服务等示例帮助读者理解如何落地分析。接着,介绍了高层架构设计原则,包括模块划分、缓存、异步队列、数据库等关键组件。最后深入探讨详细设计阶段的数据库建模、API 设计和技术选型,为构建高性能、可扩展系统提供全面参考。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

Linux操作系统

## 操作系统作用 ### 一、五大基本功能 - 进程和线程的管理:进程线程的状态、控制、同步互斥、通信调度等 - 存储管理:分配/回收、地址转化、存储保护等 - 文件管理:文件目录、文件操作、磁盘空间、文件存取控制 - 设备管理:设备驱动、分配回收、缓冲技术等 - 用户接口:系统命令、编程接口...

bossDDYY的博客 1041

华为面试手撕真题_场景设计题【设计日志系统】

华为面试手撕真题_场景设计题【设计日志系统】

MISAYAONE的博客 1630

分享一下如何使用labelimg制作自己的YOLO数据集

首先准备一下自己的下准备一个空文件夹用于保存标签文件,如下图所示。

skywalkerxhx的博客 830

快速上手微信小程序

一个简单的界面的创建。 下面是微信小程序基本目录布局

分享学习编程中的遇到的问题,总结平时的笔记 479

排除 AcroForm 中 JavaScript 脚本的 Bug

本文介绍了Acrobat JavaScript脚本故障排除的基本方法。首先应检查控制台窗口的错误报告,通过具体示例演示了5类常见错误:语法错误(如缺少大括号)、未终止字符串、未定义变量、运算符混淆及变量作用域问题,并逐步给出修复方案。文章还提供了调试流程UML图和实用经验总结,强调关注细节(如分隔符匹配)、正确使用运算符和变量作用域等要点。最后建议采用系统化调试方法,包括关闭/重新打开表单等完整性测试。

小猫三两只。 1500

2022春节假期热门消费趋势洞察

极光数据研究院后续将利用自身的大数据能力,对各领域进行更详尽的分析解读和商业洞察,敬请期待。

qq_41909850的博客 444

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

m0_69718028的博客 8114

基于Ultralytic实现多路摄像头目标检测

基于Ultralytic实现多路摄像头目标检测前面的文章分享了单路摄像头画面的YOLO目标检测,这篇文章主要分享一下多路摄像头画面的实时YOLO目标检测。测试环境在Windows系统下进行。

qq_57674776的博客 939

【光子图书】分别整理适合小学生,初中生,高中生,大学生,研究生,博士生,教授,顶尖科学家入门、精通 AI LLM 大模型、AI Agent、数学、物理、科学、信息学等领域的经典书籍各 30 本。

本报告旨在为从小学到顶尖科学家等不同层次的学习者和研究者,系统性地梳理和推荐在人工智能(AI)、大语言模型(LLM)、AI智能体(AI Agent)、数学、物理、科学以及信息学等关键领域的经典入门与精通书籍。报告整合了提供的网络搜索结果,并通过专家级的深度分析与推理,为每个类别精心挑选了30本经典著作。书籍的选择不仅考虑了内容的权威性和经典性,更充分匹配了目标读者群体的认知水平、知识背景和学习目标。每本书籍的推荐都附有简要说明,并直接在文中引用了相关信息来源的网页编号。

AI天才研究院 4345

连续相位调制通信调制方法的载波同步和定时同步研究及MATLAB仿真

本文将探讨CPM调制方法中的载波同步和定时同步问题,并提供MATLAB仿真源代码。本文讨论了连续相位调制通信中的载波同步和定时同步问题,并提供了相应的MATLAB仿真源代码。通过适当的载波同步和定时同步方法,可以实现对CPM信号的准确解调。希望本文对您理解连续相位调制通信调制方法的载波同步和定时同步问题有所帮助,同时也为您提供了一些MATLAB仿真实现的思路和示例代码。在CPM系统中,载波同步的主要任务是估计接收信号的载波频率偏移和相位偏移。在CPM系统中,常用的定时同步方法是基于自相关函数的峰值检测。

2301_79331230的博客 692

[附源码]java毕业设计面试刷题系统

项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。

计算机毕设程序设计 1195

Cadence OrCAD Capture原理图中为功能模块分配ROOM的方法

本文详解介绍原理图设计阶段为原理图模块分配ROOM的方法。

fydar的博客 1345

手把手教你学 AI芯片 SOC软件开发专栏简介

在AI芯片(如NPU、GPU加速器)爆发式增长的今天,软件栈开发已成为AI应用落地的核心瓶颈。无论是模型推理加速、低延迟部署,还是能效优化,都依赖于对芯片底层软件的深度掌握。然而,许多开发者困于“只会调用API,不懂驱动实现”的困境,导致性能瓶颈难以突破。本专栏《手把手教你学 AI芯片 SOC软件开发》专为AI工程师、嵌入式开发者及系统架构师打造,从零基础切入,系统拆解AI芯片SOC(System on Chip)的完整软件栈,覆盖Runtime(运行时)

MHD0815的博客 168

关于测试面试回答用例设计题的一些建议

最近面试了不少测试候选人,发现他们在回答一道给定的测试场景进行用例设计的题目时,答案各有不同。80% 的人都是随心所欲,想到啥说啥,10% 的人没理解对需求也不问,就开始一顿说,最后跑题,剩下 10% 的人回答得比较有条理,这种人会在这个环节更容易得分。这篇文章就说一下这种问题的一些回答建议,其实用例设计题考察的一个是对需求的理解,一个是对测试用例设计框架的考察,另外就是有一些独特的场景如果也能考虑到,会是加分点。:验证功能是否符合需求规格,覆盖正常流程、异常流程及边界条件。

Goki的博客 1723

​热电偶测温电路图(一)​

高精度热电偶测温电路图 此设计概括了提供传感器诊断所必需的抗混叠滤波器和偏置电阻器。此示例还提供了一种新颖的方式,即使用ADS1118上的板载温度传感器完成对系统的冷端补偿。对于热电偶线性化,此设计还提供了一种非常简单的、可以在大多数微控制器上实施的线性算法。 缺点就是太贵。 特性 测量K型热电偶温度 精度1°C 高精度/可重复性0.2°C 包含冷端补偿 包含软件算法 使用ADS111816位ADC(带PGA) 原理图/方框图 热电偶测温电路图(二) OP07构成的高稳定热电

zxm8513优快云博客 2万+

技术面试如何避免八股文?从背题到能力探针的面试题设计方法

技术面试是评估工程师真实水平的关键环节,但很多团队陷入八股文陷阱。八股化源于题库代替思考、标准答案束缚,导致面试变成背诵表演。要破解这一困境,需建立知识题、经验题、能力题的三层体系,通过场景化提问、细节追问、现场解题来探测候选人的问题解决能力。同时,候选人可通过主动展示思考过程、结合上下文将背诵题转化为实战题来掌握面试主动权。面试官还应建立活题库与复盘机制,持续校准评价准确性。本文结合真实案例,提供可直接落地的面试题设计与追问技巧,帮助企业招到真正能干的人,也帮助候选人展现真实水平。

weixin_34038293的博客 414

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机毕设java计算机面试刷题系统 Java 开发的面试刷题与考试管理系统设计与实现 基于 SSM 框架的计算机面试备考智能刷题平台设计

随着 IT 行业竞争加剧,传统面试备考依赖纸质资料、线下培训,存在题库更新慢、考试模拟缺失、错题整理繁琐等问题,难以满足管理员统筹题库、用户高效备考的需求。在此背景下,开发一套覆盖 “题库管理 - 在线考试 - 错题分析” 的计算机面试刷题系统,成为提升备考效率、规范考试管理的关键。

毕设源码伍学长 921

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【后端开发面试高频场景题&设计题】深度解析(万字干货)| 面试通关必备

后端面试高频场景题与设计题解析 摘要:本文针对后端开发面试中的核心题型——场景题与设计题,系统梳理了高频考察点及解决方案。重点分析了缓存三大问题(穿透/击穿/雪崩)、分布式事务方案(2PC/TCC/SAGA等)和接口限流策略(计数器/滑动窗口/漏桶/令牌桶算法),从问题定义、产生原因到技术解决方案进行深度对比。文章采用表格化呈现方式,清晰展示不同场景下的技术选型考量,帮助候选人掌握业务问题拆解、技术方案设计和风险预判等核心能力,提升面试表现。

独立思考,明辨是非 1730

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

springboot面试刷题平台系统的设计与实现

系统采用前后端分离架构,后端提供RESTful API,前端可使用Vue/React实现交互界面。集成Spring Boot核心模块的实战场景(如Redis缓存穿透解决方案、JPA动态查询),通过在线IDE(如CodeMirror)实现代码编写与即时运行验证。结合静态代码分析(SonarQube)与动态测试(JUnit),自动评判代码质量,输出性能优化建议(如Bean加载耗时分析)。平台可基于企业面试高频题(如自动配置原理、事务管理)构建知识图谱,按难度分级(基础/进阶/源码级),帮助用户针对性提升。

QQ358101148的博客 899

基于SpringBoot的面试刷题平台系统的设计与实现(毕业设计源码+lw文档)

基于 SpringBoot 的面试刷题平台系统聚焦聚焦求职面试中刷题效率低、针对性不足的痛点:海量题库缺乏系统分类,用户难以精准匹配目标岗位需求;刷题过程缺乏科学规划,盲目练习导致时间浪费;知识点掌握程度模糊,无法定位薄弱环节;面试场景模拟缺失,实战应对能力提升有限。 系统依托 SpringBoot 技术构建集题库管理、个性化练习、能力评估、面试模拟于一体的平台,按岗位类型(如 Java 开发、产品经理)和知识点体系梳理题库,支持按企业、难度、高频考点多维度筛选;基于用户答题数据生成能力画像,智能推荐薄弱环

博主自己就是程序员、避免中介对接,从事软件开发多年,累计开发或辅导多名同学, 有丰富的项目开发和文档编写经验、同学们有任何项目问题都可以联系我~ 632

【后端开发面试高频场景题&设计题】深度解析| 面试全覆盖

本文解析了3个高频后端面试题:分布式缓存一致性、数据库读写分离和接口降级策略。针对缓存一致性,对比了Cache Aside、Write Through等策略的优缺点;在读写分离部分,分析了一主多从架构及主从同步延迟解决方案;接口降级则从分级策略、实现方式和兜底方案展开。文章采用问题描述-分析思路-表格解析的结构,帮助构建完整的后端知识体系,适用于面试准备和技术提升。

独立思考,明辨是非 1256

数字IC设计笔试面试经典题

数字IC设计笔试面试经典题 去发现同类优质开源项目:https://gitcode.com/ 《数字IC设计笔试面试经典题》是一个专为数字IC设计领域的求职者准备的学习资源。本资源包含了一系列精选的笔试面试题目,以及详细的答案分析,旨在帮助您深入理解数字IC设计的相关知识点,提升您的应试能力。 资源文件共包含33页的题目总结,内容丰富,覆盖了数字IC设计的主要考点。以下是部分内容预览: 数字逻辑...

gitblog_06760的博客 304
上一篇: 英文自我介绍
下一篇: Collections工具类整理
带着托托写代码
博客等级 码龄10年 111粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值